NXT_FLOW_END_CONFIG__OBSOLETE,
NXT_FLOW_END__OBSOLETE,
NXT_MGMT__OBSOLETE,
-
- /* Use the high 32 bits of the cookie field as the tunnel ID in the flow
- * match. */
- NXT_TUN_ID_FROM_COOKIE,
+ NXT_TUN_ID_FROM_COOKIE__OBSOLETE,
/* Controller role support. The request body is struct nx_role_request.
* The reply echos the request. */
NXST_AGGREGATE /* Analogous to OFPST_AGGREGATE. */
};
-/* NXT_TUN_ID_FROM_COOKIE request. */
-struct nxt_tun_id_cookie {
- struct ofp_header header;
- ovs_be32 vendor; /* NX_VENDOR_ID. */
- ovs_be32 subtype; /* NXT_TUN_ID_FROM_COOKIE */
- uint8_t set; /* Nonzero to enable, zero to disable. */
- uint8_t pad[7];
-};
-OFP_ASSERT(sizeof(struct nxt_tun_id_cookie) == 24);
-
/* Configures the "role" of the sending controller. The default role is:
*
* - Other (NX_ROLE_OTHER), which allows the controller access to all
NXAST_REG_LOAD, /* struct nx_action_reg_load */
NXAST_NOTE, /* struct nx_action_note */
NXAST_SET_TUNNEL64, /* struct nx_action_set_tunnel64 */
- NXAST_MULTIPATH /* struct nx_action_multipath */
+ NXAST_MULTIPATH, /* struct nx_action_multipath */
+ NXAST_AUTOPATH /* struct nx_action_autopath */
};
/* Header for Nicira-defined actions. */
*/
NX_MP_ALG_ITER_HASH /* Iterative Hash. */
};
+\f
+/* Action structure for NXAST_AUTOPATH.
+ *
+ * This action performs the following steps in sequence:
+ *
+ * 1. Hashes the flow using an implementation-defined hash function.
+ *
+ * The hashed fields' values are drawn from the current state of the
+ * flow, including all modifications that have been made by actions up to
+ * this point.
+ *
+ * 2. Selects an OpenFlow 'port'.
+ *
+ * 'port' is selected in an implementation-defined manner, taking into
+ * account 'id' and the hash value calculated in step 1.
+ *
+ * Generally a switch will have been configured with a set of ports that
+ * may be chosen given 'id'. The switch may take into account any number
+ * of factors when choosing 'port' from its configured set. Factors may
+ * include carrier, load, and the results of configuration protocols such
+ * as LACP.
+ *
+ * 3. Stores 'port' in dst[ofs:ofs+n_bits].
+ *
+ * The format and semantics of 'dst' and 'ofs_nbits' are similar to those
+ * for the NXAST_REG_LOAD action, except that 'dst' must be
+ * NXM_NX_REG(idx) for 'idx' in the switch's supported range.
+ *
+ * The switch will reject actions in which ofs+n_bits is greater than the width
+ * of 'dst', with error type OFPET_BAD_ACTION, code OFPBAC_BAD_ARGUMENT.
+ */
+struct nx_action_autopath {
+ ovs_be16 type; /* OFPAT_VENDOR. */
+ ovs_be16 len; /* Length is 20. */
+ ovs_be32 vendor; /* NX_VENDOR_ID. */
+ ovs_be16 subtype; /* NXAST_MULTIPATH. */
-/* Wildcard for tunnel ID. */
-#define NXFW_TUN_ID (1 << 25)
+ /* Where to store the result. */
+ ovs_be16 ofs_nbits; /* (ofs << 6) | (n_bits - 1). */
+ ovs_be32 dst; /* Destination register. */
-#define NXFW_ALL NXFW_TUN_ID
-#define OVSFW_ALL (OFPFW_ALL | NXFW_ALL)
+ ovs_be32 id; /* Autopath ID. */
+ ovs_be32 pad;
+};
+OFP_ASSERT(sizeof(struct nx_action_autopath) == 24);
\f
/* Flexible flow specifications (aka NXM = Nicira Extended Match).
*
enum nx_flow_format {
NXFF_OPENFLOW10 = 0, /* Standard OpenFlow 1.0 compatible. */
- NXFF_TUN_ID_FROM_COOKIE = 1, /* OpenFlow 1.0, plus obtain tunnel ID from
- * cookie. */
NXFF_NXM = 2 /* Nicira extended match. */
};