X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fopenflow%2Fnicira-ext.h;h=292a98738c4b579e8ac0fd1627957148bf75a8e8;hb=cfea354b81c6c786a35eff257b65e4d6f64f9da8;hp=88efdf6531ccb2df82be81181d9222084c3c2536;hpb=685a51a5b89750cead1b2934c2079d2bb9c52a4a;p=openvswitch diff --git a/include/openflow/nicira-ext.h b/include/openflow/nicira-ext.h index 88efdf65..292a9873 100644 --- a/include/openflow/nicira-ext.h +++ b/include/openflow/nicira-ext.h @@ -126,16 +126,9 @@ OFP_ASSERT(sizeof(struct nicira_header) == 16); /* Values for the 'subtype' member of struct nicira_header. */ enum nicira_type { - /* Switch status request. The request body is an ASCII string that - * specifies a prefix of the key names to include in the output; if it is - * the null string, then all key-value pairs are included. */ - NXT_STATUS_REQUEST, - - /* Switch status reply. The reply body is an ASCII string of key-value - * pairs in the form "key=value\n". */ - NXT_STATUS_REPLY, - /* No longer used. */ + NXT_STATUS_REQUEST__OBSOLETE, + NXT_STATUS_REPLY__OBSOLETE, NXT_ACT_SET_CONFIG__OBSOLETE, NXT_ACT_GET_CONFIG__OBSOLETE, NXT_COMMAND_REQUEST__OBSOLETE, @@ -230,7 +223,8 @@ enum nx_action_subtype { 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. */ @@ -509,8 +503,9 @@ OFP_ASSERT(sizeof(struct nx_action_note) == 16); * Some algorithms use 'arg' as an additional argument. * * 3. Stores 'link' in dst[ofs:ofs+n_bits]. The format and semantics of - * 'dst' and 'ofs_nbits' are identical to those for the NXAST_REG_LOAD - * action; refer to the description of that action for details. + * '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 that have an unknown 'fields', or an unknown * 'algorithm', or in which ofs+n_bits is greater than the width of 'dst', or @@ -616,6 +611,51 @@ enum nx_mp_algorithm { #define NXFW_ALL NXFW_TUN_ID #define OVSFW_ALL (OFPFW_ALL | NXFW_ALL) +/* 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. */ + + /* Where to store the result. */ + ovs_be16 ofs_nbits; /* (ofs << 6) | (n_bits - 1). */ + ovs_be32 dst; /* Destination register. */ + + ovs_be32 id; /* Autopath ID. */ + ovs_be32 pad; +}; +OFP_ASSERT(sizeof(struct nx_action_autopath) == 24); + /* Flexible flow specifications (aka NXM = Nicira Extended Match). * * OpenFlow 1.0 has "struct ofp_match" for specifying flow matches. This