One minor comment below, otherwise looks good to me, Jarno
> On May 9, 2014, at 7:40 PM, Ben Pfaff <b...@nicira.com> wrote: > > This also adds the definitions of a few other OXM headers we didn't have > yet. > > EXT-109. > Signed-off-by: Ben Pfaff <b...@nicira.com> > --- > include/openflow/openflow-1.2.h | 15 +++++++++++++-- > lib/meta-flow.c | 2 +- > tests/ovs-ofctl.at | 24 ++++++++++++++++++++++++ > 3 files changed, 38 insertions(+), 3 deletions(-) > > diff --git a/include/openflow/openflow-1.2.h b/include/openflow/openflow-1.2.h > index 54b9804..d25f2dc 100644 > --- a/include/openflow/openflow-1.2.h > +++ b/include/openflow/openflow-1.2.h > @@ -1,4 +1,4 @@ > -/* Copyright (c) 2008, 2011, 2012, 2013 The Board of Trustees of The Leland > Stanford > +/* Copyright (c) 2008, 2011, 2012, 2013, 2014 The Board of Trustees of The > Leland Stanford > * Junior University > * > * We are making the OpenFlow specification and associated documentation > @@ -117,7 +117,15 @@ enum oxm12_ofb_match_fields { > 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) > -}; > + > + /* Following added in OpenFlow 1.4. */ > + OFPXMT14_OFB_PBB_UCA = 41, /* PBB UCA header field. */ > +#define OFPXMT14_MASK (1ULL << OFPXMT14_OFB_PBB_UCA) > + > + /* Following added in OpenFlow 1.5. */ > + OFPXMT15_OFB_TCP_FLAGS = 42, /* TCP flags. */ > +#define OFPXMT15_MASK (1ULL << OFPXMT15_OFB_TCP_FLAGS) > + }; > > /* OXM implementation makes use of NXM as they are the same format > * with different field definitions > @@ -185,6 +193,9 @@ enum oxm12_ofb_match_fields { > #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) > +#define OXM_OF_PBB_UCA OXM_HEADER (OFPXMT14_OFB_PBB_UCA, 1) > +#define OXM_OF_TCP_FLAGS OXM_HEADER (OFPXMT15_OFB_TCP_FLAGS, 2) > +#define OXM_OF_TCP_FLAGS_W OXM_HEADER_W (OFPXMT15_OFB_TCP_FLAGS, 2) > > /* The VLAN id is 12-bits, so we can use the entire 16 bits to indicate > * special conditions. > diff --git a/lib/meta-flow.c b/lib/meta-flow.c > index 5803ded..44fc2a9 100644 > --- a/lib/meta-flow.c > +++ b/lib/meta-flow.c > @@ -637,7 +637,7 @@ const struct mf_field mf_fields[MFF_N_IDS] = { > MFP_TCP, > false, > NXM_NX_TCP_FLAGS, "NXM_NX_TCP_FLAGS", > - NXM_NX_TCP_FLAGS, "NXM_NX_TCP_FLAGS", 0, > + OXM_OF_TCP_FLAGS, "OXM_OF_TCP_FLAGS", OFP15_VERSION, > OFPUTIL_P_NXM_OXM_ANY, > OFPUTIL_P_NXM_OXM_ANY, > -1, > diff --git a/tests/ovs-ofctl.at b/tests/ovs-ofctl.at > index 88e4220..d169ce2 100644 > --- a/tests/ovs-ofctl.at > +++ b/tests/ovs-ofctl.at > @@ -2132,6 +2132,30 @@ OXM_OF_IN_PORT(00000001), OXM_OF_ETH_TYPE(0800) > ]) > AT_CLEANUP > > +AT_SETUP([check TCP flags expression in OXM and NXM]) > +# NXM/OXM input for matching on TCP flags. > +tcp_flags='OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), > OXM_OF_TCP_FLAGS(0fff)' > + > +# Check that marshaling into NXM gives all NXM headers. > +AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-nxm], [0], > + [NXM_OF_ETH_TYPE(0800), NXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0fff) > +]) > + > +# Check that marshaling in OXM for OF1.2 through OF1.4 gives OXM > +# headers except for TCP flags, which didn't have an OXM definition in > +# OF1.2. "didn't have an OXM definition before OF1.5." would be more accurate. > +for version in OpenFlow12 OpenFlow13 OpenFlow14; do > + AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm $version], [0], > + [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), NXM_NX_TCP_FLAGS(0fff) > +]) > +done > + > +# In OpenFlow 1.5, though, there's an OXM header for TCP flags: > +AT_CHECK([echo "$tcp_flags" | ovs-ofctl parse-oxm OpenFlow15], [0], > + [OXM_OF_ETH_TYPE(0800), OXM_OF_IP_PROTO(06), OXM_OF_TCP_FLAGS(0fff) > +]) > +AT_CLEANUP > + > dnl Check all of the patterns mentioned in the "VLAN Matching" section > dnl in the DESIGN file at top level. > AT_SETUP([ovs-ofctl check-vlan]) > -- > 1.9.1 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev