aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEthan Jackson <ethan@nicira.com>2011-08-10 13:05:17 -0700
committerEthan Jackson <ethan@nicira.com>2011-08-12 15:06:53 -0700
commitf694937d4ec5342b218b760cabbf7a48d19110e8 (patch)
treec71bb913743019f99a69a80d76c8574963e036f5 /include
parente7ba48c87d5b6441e2a3f07f3bc1a1f3633616c7 (diff)
nicra-ext: New action NXAST_OUTPUT_REG.
The NXAST_OUTPUT_REG action outputs to the OpenFlow port contained in a supplied NXM field.
Diffstat (limited to 'include')
-rw-r--r--include/openflow/nicira-ext.h33
1 files changed, 32 insertions, 1 deletions
diff --git a/include/openflow/nicira-ext.h b/include/openflow/nicira-ext.h
index bbe96b35..4fab6f17 100644
--- a/include/openflow/nicira-ext.h
+++ b/include/openflow/nicira-ext.h
@@ -280,7 +280,8 @@ enum nx_action_subtype {
NXAST_AUTOPATH, /* struct nx_action_autopath */
NXAST_BUNDLE, /* struct nx_action_bundle */
NXAST_BUNDLE_LOAD, /* struct nx_action_bundle */
- NXAST_RESUBMIT_TABLE /* struct nx_action_resubmit */
+ NXAST_RESUBMIT_TABLE, /* struct nx_action_resubmit */
+ NXAST_OUTPUT_REG /* struct nx_action_output_reg */
};
/* Header for Nicira-defined actions. */
@@ -781,6 +782,36 @@ enum nx_bd_algorithm {
NX_BD_ALG_HRW /* Highest Random Weight. */
};
+/* Action structure for NXAST_OUTPUT_REG.
+ *
+ * Outputs to the OpenFlow port number written to src[ofs:ofs+nbits].
+ *
+ * The format and semantics of 'src' and 'ofs_nbits' are similar to those for
+ * the NXAST_REG_LOAD action.
+ *
+ * The acceptable nxm_header values for 'src' are the same as the acceptable
+ * nxm_header values for the 'src' field of NXAST_REG_MOVE.
+ *
+ * The 'max_len' field indicates the number of bytes to send when the chosen
+ * port is OFPP_CONTROLLER. Its semantics are equivalent to the 'max_len'
+ * field of OFPAT_OUTPUT.
+ *
+ * The 'zero' field is required to be zeroed for forward compatibility. */
+struct nx_action_output_reg {
+ ovs_be16 type; /* OFPAT_VENDOR. */
+ ovs_be16 len; /* 24. */
+ ovs_be32 vendor; /* NX_VENDOR_ID. */
+ ovs_be16 subtype; /* NXAST_OUTPUT_REG. */
+
+ ovs_be16 ofs_nbits; /* (ofs << 6) | (n_bits - 1). */
+ ovs_be32 src; /* Source. */
+
+ ovs_be16 max_len; /* Max length to send to controller. */
+
+ uint8_t zero[6]; /* Reserved, must be zero. */
+};
+OFP_ASSERT(sizeof(struct nx_action_output_reg) == 24);
+
/* Flexible flow specifications (aka NXM = Nicira Extended Match).
*
* OpenFlow 1.0 has "struct ofp_match" for specifying flow matches. This