From: Ben Pfaff Date: Fri, 29 Apr 2011 22:47:26 +0000 (-0700) Subject: ofp-util: Don't warn for different forms of nw_{src,dst} wildcards. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1f41fb6b9ad166769fedacf66aca3b0364ced29;p=openvswitch ofp-util: Don't warn for different forms of nw_{src,dst} wildcards. OpenFlow 1.0 uses a 6-bit field to express the number of wildcarded bits in the nw_src and nw_dst field. Any value 32 or greater in these fields (binary 1xxxxx) means that all of the bits are wildcarded. That means that there are 32 different ways to express a wildcarded nw_src or nw_dst. At least two of those seem sensible (100000 and 111111) so we shouldn't warn about one of them. This fixes the problem by ORing with 100000 instead of 111111, so that any already-correct wildcarded mask won't be affected. This fix allows us to update some tests. Reviewed-by: Simon Horman --- diff --git a/lib/ofp-util.c b/lib/ofp-util.c index ddac7727..a57d6760 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -2031,7 +2031,7 @@ actions_next(struct actions_iterator *iter) void normalize_match(struct ofp_match *m) { - enum { OFPFW_NW = (OFPFW_NW_SRC_MASK | OFPFW_NW_DST_MASK | OFPFW_NW_PROTO + enum { OFPFW_NW = (OFPFW_NW_SRC_ALL | OFPFW_NW_DST_ALL | OFPFW_NW_PROTO | OFPFW_NW_TOS) }; enum { OFPFW_TP = OFPFW_TP_SRC | OFPFW_TP_DST }; uint32_t wc; diff --git a/tests/autopath.at b/tests/autopath.at index 40e54d5e..79ecb02f 100644 --- a/tests/autopath.at +++ b/tests/autopath.at @@ -3,10 +3,10 @@ AT_BANNER([autopath link selection]) AT_SETUP([autopath basic]) AT_CHECK([ovs-ofctl parse-flow 'actions=autopath(1, NXM_NX_REG0[[]])'], [0], [OFPT_FLOW_MOD (xid=0x1): ADD actions=autopath(1,NXM_NX_REG0[[]]) -], [ignore]) +]) AT_CHECK([ovs-ofctl parse-flow 'actions=autopath(2, NXM_NX_REG0[[2..30]])'], [0], [OFPT_FLOW_MOD (xid=0x1): ADD actions=autopath(2,NXM_NX_REG0[[2..30]]) -], [ignore]) +]) AT_CLEANUP AT_SETUP([autopath action missing argument]) diff --git a/tests/ovs-ofctl.at b/tests/ovs-ofctl.at index 10147108..c23945f5 100644 --- a/tests/ovs-ofctl.at +++ b/tests/ovs-ofctl.at @@ -18,7 +18,7 @@ actions=drop tun_id=0x1234000056780000/0xffff0000ffff0000,actions=drop ]]) AT_CHECK([ovs-ofctl parse-flows flows.txt -], [0], [stdout], [stderr]) +], [0], [stdout]) AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [[OFPT_FLOW_MOD: ADD tcp,tp_src=123 actions=FLOOD OFPT_FLOW_MOD: ADD in_port=65534,dl_vlan=9,dl_src=00:0a:e4:25:6b:b0 actions=drop @@ -35,17 +35,6 @@ NXT_FLOW_MOD: ADD actions=multipath(eth_src,50,hrw,12,0,NXM_NX_REG0[0..3]),multi NXT_FLOW_MOD: ADD actions=drop NXT_FLOW_MOD: ADD tun_id=0x1234000056780000/0xffff0000ffff0000 actions=drop ]]) -AT_CHECK([sed 's/.*|//' stderr], [0], [dnl -normalization changed ofp_match, details: - pre: wildcards= 0x3820f8 in_port=65534 dl_src=00:0a:e4:25:6b:b0 dl_dst=00:00:00:00:00:00 dl_vlan= 9 dl_vlan_pcp= 0 dl_type= 0 nw_tos= 0 nw_proto= 0 nw_src= 0 nw_dst= 0 tp_src= 0 tp_dst= 0 -post: wildcards= 0x3ffff8 in_port=65534 dl_src=00:0a:e4:25:6b:b0 dl_dst=00:00:00:00:00:00 dl_vlan= 9 dl_vlan_pcp= 0 dl_type= 0 nw_tos= 0 nw_proto= 0 nw_src= 0 nw_dst= 0 tp_src= 0 tp_dst= 0 -normalization changed ofp_match, details: - pre: wildcards= 0x3820ff in_port=65534 dl_src=00:00:00:00:00:00 dl_dst=00:00:00:00:00:00 dl_vlan= 0 dl_vlan_pcp= 0 dl_type= 0 nw_tos= 0 nw_proto= 0 nw_src= 0 nw_dst= 0 tp_src= 0 tp_dst= 0 -post: wildcards= 0x3fffff in_port=65534 dl_src=00:00:00:00:00:00 dl_dst=00:00:00:00:00:00 dl_vlan= 0 dl_vlan_pcp= 0 dl_type= 0 nw_tos= 0 nw_proto= 0 nw_src= 0 nw_dst= 0 tp_src= 0 tp_dst= 0 -normalization changed ofp_match, details: - pre: wildcards= 0x3820ff in_port=65534 dl_src=00:00:00:00:00:00 dl_dst=00:00:00:00:00:00 dl_vlan= 0 dl_vlan_pcp= 0 dl_type= 0 nw_tos= 0 nw_proto= 0 nw_src= 0 nw_dst= 0 tp_src= 0 tp_dst= 0 -post: wildcards= 0x3fffff in_port=65534 dl_src=00:00:00:00:00:00 dl_dst=00:00:00:00:00:00 dl_vlan= 0 dl_vlan_pcp= 0 dl_type= 0 nw_tos= 0 nw_proto= 0 nw_src= 0 nw_dst= 0 tp_src= 0 tp_dst= 0 -]) AT_CLEANUP AT_SETUP([ovs-ofctl -F nxm parse-flows])