X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fopenflow%2Fnicira-ext.h;h=da80ad91a9d663223b059227029627737a97cb6e;hb=c15f1d11fa95a036eaa2504527bbd5decf082db6;hp=7df978b0cb9fbf0570c7e419f40374856da83243;hpb=6c1491fbd75754d2e4d5028650554f9d5d3a4958;p=openvswitch diff --git a/include/openflow/nicira-ext.h b/include/openflow/nicira-ext.h index 7df978b0..da80ad91 100644 --- a/include/openflow/nicira-ext.h +++ b/include/openflow/nicira-ext.h @@ -125,46 +125,36 @@ OFP_ASSERT(sizeof(struct nicira_header) == 16); /* Values for the 'subtype' member of struct nicira_header. */ enum nicira_type { /* 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, - NXT_COMMAND_REPLY__OBSOLETE, - 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_STATUS_REQUEST__OBSOLETE = 0, + NXT_STATUS_REPLY__OBSOLETE = 1, + NXT_ACT_SET_CONFIG__OBSOLETE = 2, + NXT_ACT_GET_CONFIG__OBSOLETE = 3, + NXT_COMMAND_REQUEST__OBSOLETE = 4, + NXT_COMMAND_REPLY__OBSOLETE = 5, + NXT_FLOW_END_CONFIG__OBSOLETE = 6, + NXT_FLOW_END__OBSOLETE = 7, + NXT_MGMT__OBSOLETE = 8, + NXT_TUN_ID_FROM_COOKIE__OBSOLETE = 9, /* Controller role support. The request body is struct nx_role_request. * The reply echos the request. */ - NXT_ROLE_REQUEST, - NXT_ROLE_REPLY, + NXT_ROLE_REQUEST = 10, + NXT_ROLE_REPLY = 11, + + /* Flexible flow specification (aka NXM = Nicira Extended Match). */ + NXT_SET_FLOW_FORMAT = 12, /* Set flow format. */ + NXT_FLOW_MOD = 13, /* Analogous to OFPT_FLOW_MOD. */ + NXT_FLOW_REMOVED = 14, /* Analogous to OFPT_FLOW_REMOVED. */ /* Use the upper 8 bits of the 'command' member in struct ofp_flow_mod to * designate the table to which a flow is to be added? See the big comment - * on struct nxt_flow_mod_table_id for more information. - * - * A screwup caused this extension to be assigned the same value as - * NXT_SET_FLOW_FORMAT (see below). The two extensions do have different - * lengths, so they can still be distinguished. */ - NXT_FLOW_MOD_TABLE_ID, - - /* Flexible flow specification (aka NXM = Nicira Extended Match). */ - NXT_SET_FLOW_FORMAT = NXT_FLOW_MOD_TABLE_ID, /* Set flow format. */ - NXT_FLOW_MOD, /* Analogous to OFPT_FLOW_MOD. */ - NXT_FLOW_REMOVED /* Analogous to OFPT_FLOW_REMOVED. */ + * on struct nxt_flow_mod_table_id for more information. */ + NXT_FLOW_MOD_TABLE_ID = 15 }; /* Header for Nicira vendor stats request and reply messages. */ struct nicira_stats_msg { - struct ofp_header header; /* OFPT_STATS_REQUEST or OFPT_STATS_REPLY. */ - ovs_be16 type; /* OFPST_VENDOR. */ - ovs_be16 flags; /* OFPSF_{REQ,REPLY}_*. */ - ovs_be32 vendor; /* NX_VENDOR_ID. */ + struct ofp_vendor_stats_msg vsm; /* Vendor NX_VENDOR_ID. */ ovs_be32 subtype; /* One of NXST_* below. */ uint8_t pad[4]; /* Align to 64-bits. */ }; @@ -177,16 +167,6 @@ enum nicira_stats_type { 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); - /* This command enables or disables an Open vSwitch extension that allows a * controller to specify the OpenFlow table to which a flow should be added, * instead of having the switch decide which table is most appropriate as @@ -270,7 +250,7 @@ enum nx_action_subtype { NXAST_SNAT__OBSOLETE, /* No longer used. */ NXAST_RESUBMIT, /* struct nx_action_resubmit */ NXAST_SET_TUNNEL, /* struct nx_action_set_tunnel */ - NXAST_DROP_SPOOFED_ARP, /* struct nx_action_drop_spoofed_arp */ + NXAST_DROP_SPOOFED_ARP__OBSOLETE, NXAST_SET_QUEUE, /* struct nx_action_set_queue */ NXAST_POP_QUEUE, /* struct nx_action_pop_queue */ NXAST_REG_MOVE, /* struct nx_action_reg_move */ @@ -354,24 +334,6 @@ struct nx_action_set_tunnel64 { }; OFP_ASSERT(sizeof(struct nx_action_set_tunnel64) == 24); -/* Action structure for NXAST_DROP_SPOOFED_ARP. - * - * Stops processing further actions, if the packet being processed is an - * Ethernet+IPv4 ARP packet for which the source Ethernet address inside the - * ARP packet differs from the source Ethernet address in the Ethernet header. - * - * (This action is deprecated in favor of defining flows using the - * NXM_NX_ARP_SHA flow match and will likely be removed in a future version - * of Open vSwitch.) */ -struct nx_action_drop_spoofed_arp { - ovs_be16 type; /* OFPAT_VENDOR. */ - ovs_be16 len; /* Length is 16. */ - ovs_be32 vendor; /* NX_VENDOR_ID. */ - ovs_be16 subtype; /* NXAST_DROP_SPOOFED_ARP. */ - uint8_t pad[6]; -}; -OFP_ASSERT(sizeof(struct nx_action_drop_spoofed_arp) == 16); - /* Action structure for NXAST_SET_QUEUE. * * Set the queue that should be used when packets are output. This is similar @@ -658,12 +620,6 @@ enum nx_mp_algorithm { */ NX_MP_ALG_ITER_HASH /* Iterative Hash. */ }; - -/* Wildcard for tunnel ID. */ -#define NXFW_TUN_ID (1 << 25) - -#define NXFW_ALL NXFW_TUN_ID -#define OVSFW_ALL (OFPFW_ALL | NXFW_ALL) /* Action structure for NXAST_AUTOPATH. * @@ -1219,8 +1175,6 @@ OFP_ASSERT(sizeof(struct nx_action_autopath) == 24); 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. */ }; @@ -1317,8 +1271,8 @@ struct nx_flow_stats { ovs_be16 match_len; /* Length of nx_match. */ uint8_t pad2[4]; /* Align to 64 bits. */ ovs_be64 cookie; /* Opaque controller-issued identifier. */ - ovs_be64 packet_count; /* Number of packets in flow. */ - ovs_be64 byte_count; /* Number of bytes in flow. */ + ovs_be64 packet_count; /* Number of packets, UINT64_MAX if unknown. */ + ovs_be64 byte_count; /* Number of bytes, UINT64_MAX if unknown. */ /* Followed by: * - Exactly match_len (possibly 0) bytes containing the nx_match, then * - Exactly (match_len + 7)/8*8 - match_len (between 0 and 7) bytes of @@ -1350,14 +1304,13 @@ struct nx_aggregate_stats_request { OFP_ASSERT(sizeof(struct nx_aggregate_stats_request) == 32); /* Body for nicira_stats_msg reply of type NXST_AGGREGATE (analogous to - * OFPST_AGGREGATE reply). - * - * ofp_aggregate_stats_reply does not contain an ofp_match structure, so we - * reuse it entirely. (It would be very odd to use OFPST_AGGREGATE to reply to - * an NXST_AGGREGATE request, so we don't do that.) */ + * OFPST_AGGREGATE reply). */ struct nx_aggregate_stats_reply { struct nicira_stats_msg nsm; - struct ofp_aggregate_stats_reply asr; + ovs_be64 packet_count; /* Number of packets, UINT64_MAX if unknown. */ + ovs_be64 byte_count; /* Number of bytes, UINT64_MAX if unknown. */ + ovs_be32 flow_count; /* Number of flows. */ + uint8_t pad[4]; /* Align to 64 bits. */ }; OFP_ASSERT(sizeof(struct nx_aggregate_stats_reply) == 48);