X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fopenflow%2Fopenflow-1.2.h;h=54b9804edec360a8618aebfc711868eeb8fe00ba;hb=HEAD;hp=d1e42a4db2b48251ae768273981762310e1cf346;hpb=7395c05254df87ce52b37b04478e802befd799d9;p=sliver-openvswitch.git diff --git a/include/openflow/openflow-1.2.h b/include/openflow/openflow-1.2.h index d1e42a4db..54b9804ed 100644 --- a/include/openflow/openflow-1.2.h +++ b/include/openflow/openflow-1.2.h @@ -109,18 +109,16 @@ enum oxm12_ofb_match_fields { OFPXMT12_OFB_IPV6_ND_TLL, /* Target link-layer for ND. */ OFPXMT12_OFB_MPLS_LABEL, /* MPLS label. */ OFPXMT12_OFB_MPLS_TC, /* MPLS TC. */ - /* Following added in OpenFlow 1.3 */ - OFPXMT12_OFB_MPLS_BOS, /* MPLS BoS bit. */ - OFPXMT12_OFB_PBB_ISID, /* PBB I-SID. */ - OFPXMT12_OFB_TUNNEL_ID, /* Logical Port Metadata */ - OFPXMT12_OFB_IPV6_EXTHDR, /* IPv6 Extension Header pseudo-field */ +#define OFPXMT12_MASK ((1ULL << (OFPXMT12_OFB_MPLS_TC + 1)) - 1) - /* End Marker */ - OFPXMT12_OFB_MAX, + /* Following added in OpenFlow 1.3 */ + OFPXMT13_OFB_MPLS_BOS, /* MPLS BoS bit. */ + OFPXMT13_OFB_PBB_ISID, /* PBB I-SID. */ + OFPXMT13_OFB_TUNNEL_ID, /* Logical Port Metadata */ + OFPXMT13_OFB_IPV6_EXTHDR, /* IPv6 Extension Header pseudo-field */ +#define OFPXMT13_MASK ((1ULL << (OFPXMT13_OFB_IPV6_EXTHDR + 1)) - 1) }; -#define OFPXMT12_MASK ((1ULL << OFPXMT12_OFB_MAX) - 1) - /* OXM implementation makes use of NXM as they are the same format * with different field definitions */ @@ -180,13 +178,13 @@ enum oxm12_ofb_match_fields { #define OXM_OF_IPV6_ND_TLL OXM_HEADER (OFPXMT12_OFB_IPV6_ND_TLL, 6) #define OXM_OF_MPLS_LABEL OXM_HEADER (OFPXMT12_OFB_MPLS_LABEL, 4) #define OXM_OF_MPLS_TC OXM_HEADER (OFPXMT12_OFB_MPLS_TC, 1) -#define OXM_OF_MPLS_BOS OXM_HEADER (OFPXMT12_OFB_MPLS_BOS, 1) -#define OXM_OF_PBB_ISID OXM_HEADER (OFPXMT12_OFB_PBB_ISID, 4) -#define OXM_OF_PBB_ISID_W OXM_HEADER_W (OFPXMT12_OFB_PBB_ISID, 4) -#define OXM_OF_TUNNEL_ID OXM_HEADER (OFPXMT12_OFB_TUNNEL_ID, 8) -#define OXM_OF_TUNNEL_ID_W OXM_HEADER_W (OFPXMT12_OFB_TUNNEL_ID, 8) -#define OXM_OF_IPV6_EXTHDR OXM_HEADER (OFPXMT12_OFB_IPV6_EXTHDR, 2) -#define OXM_OF_IPV6_EXTHDR_W OXM_HEADER_W (OFPXMT12_OFB_IPV6_EXTHDR, 2) +#define OXM_OF_MPLS_BOS OXM_HEADER (OFPXMT13_OFB_MPLS_BOS, 1) +#define OXM_OF_PBB_ISID OXM_HEADER (OFPXMT12_OFB_PBB_ISID, 3) +#define OXM_OF_PBB_ISID_W OXM_HEADER_W (OFPXMT12_OFB_PBB_ISID, 3) +#define OXM_OF_TUNNEL_ID OXM_HEADER (OFPXMT13_OFB_TUNNEL_ID, 8) +#define OXM_OF_TUNNEL_ID_W OXM_HEADER_W (OFPXMT13_OFB_TUNNEL_ID, 8) +#define OXM_OF_IPV6_EXTHDR OXM_HEADER (OFPXMT13_OFB_IPV6_EXTHDR, 2) +#define OXM_OF_IPV6_EXTHDR_W OXM_HEADER_W (OFPXMT13_OFB_IPV6_EXTHDR, 2) /* The VLAN id is 12-bits, so we can use the entire 16 bits to indicate * special conditions. @@ -253,22 +251,16 @@ enum ofp12_capabilities { OFPC12_PORT_BLOCKED = 1 << 8 /* Switch will block looping ports. */ }; -/* OpenFlow 1.2 specific types - * (struct ofp11_stats_request/reply, member type). */ -enum ofp12_stats_types { - /* Group features. - * The request body is empty. - * The reply body is struct ofp12_group_features_stats. */ - OFPST12_GROUP_FEATURES = 8 -}; - -/* OpenFlow 1.2 specific properties - * (struct ofp_queue_prop_header member property). */ -enum ofp12_queue_properties { - OFPQT12_MIN_RATE = 1, /* Minimum datarate guaranteed. */ - OFPQT12_MAX_RATE = 2, /* Maximum datarate. */ - OFPQT12_EXPERIMENTER = 0xffff /* Experimenter defined property. */ +/* Full description for a queue. */ +struct ofp12_packet_queue { + ovs_be32 queue_id; /* id for the specific queue. */ + ovs_be32 port; /* Port this queue is attached to. */ + ovs_be16 len; /* Length in bytes of this queue desc. */ + uint8_t pad[6]; /* 64-bit alignment. */ + /* Followed by any number of queue properties expressed using + * ofp_queue_prop_header, to fill out a total of 'len' bytes. */ }; +OFP_ASSERT(sizeof(struct ofp12_packet_queue) == 16); /* Body of reply to OFPST_TABLE request. */ struct ofp12_table_stats {