odp: Enable parsing ipv4_tunnel key.
[openvswitch] / tests / ovs-ofctl.at
index f4f90228091b40b98eb21b221a6c7a5c015afe14..1fa1a342fc5fcb4d06113cb48d73bd56b6710c98 100644 (file)
@@ -10,6 +10,8 @@ tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:1
 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
 udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
 cookie=0x123456789abcdef hard_timeout=10 priority=60000 actions=controller
 actions=note:41.42.43,note:00.01.02.03.04.05.06.07,note
+actions=set_field:fe80:0123:4567:890a:a6ba:dbff:fefe:59fa->ipv6_src
+in_port=0 actions=resubmit:0
 ]])
 
 AT_CHECK([ovs-ofctl parse-flows flows.txt
 ]])
 
 AT_CHECK([ovs-ofctl parse-flows flows.txt
@@ -24,6 +26,8 @@ OFPT_FLOW_MOD: ADD tcp,nw_src=192.168.0.3,tp_dst=80 actions=set_queue:37,output:
 OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
 OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
 OFPT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
 OFPT_FLOW_MOD: ADD udp,nw_src=192.168.0.3,tp_dst=53 actions=pop_queue,output:1
 OFPT_FLOW_MOD: ADD priority=60000 cookie:0x123456789abcdef hard:10 actions=CONTROLLER:65535
 OFPT_FLOW_MOD: ADD actions=note:41.42.43.00.00.00,note:00.01.02.03.04.05.06.07.00.00.00.00.00.00,note:00.00.00.00.00.00
+OFPT_FLOW_MOD: ADD actions=load:0xa6badbfffefe59fa->NXM_NX_IPV6_SRC[0..63],load:0xfe8001234567890a->NXM_NX_IPV6_SRC[64..127]
+OFPT_FLOW_MOD: ADD in_port=0 actions=resubmit:0
 ]])
 AT_CLEANUP
 
 ]])
 AT_CLEANUP
 
@@ -187,7 +191,7 @@ actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
 actions=autopath(5,NXM_NX_REG0[])
 vlan_tci=0x1123/0x1fff,actions=drop
 ]])
 actions=autopath(5,NXM_NX_REG0[])
 vlan_tci=0x1123/0x1fff,actions=drop
 ]])
-AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout])
+AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
 [[usable protocols: NXM
 chosen protocol: NXM-table_id
 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
 [[usable protocols: NXM
 chosen protocol: NXM-table_id
@@ -216,6 +220,9 @@ NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
 NXT_FLOW_MOD: ADD <any> actions=autopath(5,NXM_NX_REG0[])
 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
 ]])
 NXT_FLOW_MOD: ADD <any> actions=autopath(5,NXM_NX_REG0[])
 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
 ]])
+AT_CHECK([[sed 's/^[^|]*|[^|]*|//' stderr]], [0], [dnl
+autopath|WARN|The autopath action is deprecated and may be removed in February 2013.  Please email dev@openvswitch.org with concerns.
+])
 AT_CLEANUP
 
 AT_SETUP([ovs-ofctl parse-nx-match])
 AT_CLEANUP
 
 AT_SETUP([ovs-ofctl parse-nx-match])
@@ -730,55 +737,55 @@ AT_SETUP([ovs-ofctl parse-ofp10-match])
 AT_KEYWORDS([OF1.0])
 AT_DATA([test-data], [dnl
 # in_port=65534
 AT_KEYWORDS([OF1.0])
 AT_DATA([test-data], [dnl
 # in_port=65534
-003820fe fffe 000000000000 000000000000 0000 00 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_src=00:01:02:03:04:05
 
 # dl_src=00:01:02:03:04:05
-003820fb 0000 000102030405 000000000000 0000 00 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_dst=10:20:30:40:50:60
 
 # dl_dst=10:20:30:40:50:60
-003820f7 0000 000000000000 102030405060 0000 00 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_vlan=291
 
 # dl_vlan=291
-003820fd 0000 000000000000 000000000000 0123 00 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_vlan_pcp=5
 
 # dl_vlan_pcp=5
-002820ff 0000 000000000000 000000000000 0000 05 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_vlan=291,dl_vlan_pcp=4
 
 # dl_vlan=291,dl_vlan_pcp=4
-002820fd 0000 000000000000 000000000000 0123 04 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # vlan_tci=0x0000
 
 # vlan_tci=0x0000
-003820fd 0000 000000000000 000000000000 ffff 00 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
 dnl OVS ignores it and drops it on output.
 # vlan_tci=0x0000
 #  1: 28 -> 38
 # 20: 05 -> 00
 
 dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
 dnl OVS ignores it and drops it on output.
 # vlan_tci=0x0000
 #  1: 28 -> 38
 # 20: 05 -> 00
-002820fd 0000 000000000000 000000000000 ffff 05 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 dnl Invalid VID and PCP discards out-of-range bits:
 # dl_vlan=256,dl_vlan_pcp=7
 # 18: f1 -> 01
 # 20: ff -> 07
 
 dnl Invalid VID and PCP discards out-of-range bits:
 # dl_vlan=256,dl_vlan_pcp=7
 # 18: f1 -> 01
 # 20: ff -> 07
-002820fd 0000 000000000000 000000000000 f100 ff 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_type=0x1234
 
 # dl_type=0x1234
-003820ef 0000 000000000000 000000000000 0000 00 00 1234 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # ip,nw_proto=5
 
 # ip,nw_proto=5
-003820cf 0000 000000000000 000000000000 0000 00 00 0800 00 05 0000 dnl
-00000000 00000000 0000 0000
+003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 dnl Ignore nw_proto if not IP or ARP:
 # dl_type=0x1234,nw_proto=5
 
 dnl Ignore nw_proto if not IP or ARP:
 # dl_type=0x1234,nw_proto=5
@@ -787,12 +794,12 @@ dnl Ignore nw_proto if not IP or ARP:
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
 & ofp_util|INFO|post: dl_type=0x1234
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
 & ofp_util|INFO|post: dl_type=0x1234
-003820cf 0000 000000000000 000000000000 0000 00 00 1234 00 05 0000 dnl
-00000000 00000000 0000 0000
+003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # ip,nw_tos=252
 
 # ip,nw_tos=252
-001820ef 0000 000000000000 000000000000 0000 00 00 0800 fc 00 0000 dnl
-00000000 00000000 0000 0000
+001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 dnl Ignore nw_tos if not IP:
 # arp,nw_tos=4
 
 dnl Ignore nw_tos if not IP:
 # arp,nw_tos=4
@@ -802,54 +809,54 @@ dnl Ignore nw_tos if not IP:
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: arp,nw_tos=4
 & ofp_util|INFO|post: arp
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: arp,nw_tos=4
 & ofp_util|INFO|post: arp
-001820ef 0000 000000000000 000000000000 0000 00 00 0806 05 00 0000 dnl
-00000000 00000000 0000 0000
+001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 dnl Low 2 bits of invalid TOS are forced to 0:
 # ip,nw_tos=48
 # 24: 31 -> 30
 
 dnl Low 2 bits of invalid TOS are forced to 0:
 # ip,nw_tos=48
 # 24: 31 -> 30
-001820ef 0000 000000000000 000000000000 0000 00 00 0800 31 00 0000 dnl
-00000000 00000000 0000 0000
+001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # arp,arp_op=2
 
 # arp,arp_op=2
-003820cf 0000 000000000000 000000000000 0000 00 00 0806 00 02 0000 dnl
-00000000 00000000 0000 0000
+003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # ip,nw_src=192.168.128.85
 
 # ip,nw_src=192.168.128.85
-003800ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
-c0a88055 00000000 0000 0000
+003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
+c0a88055 xxxxxxxx xxxx xxxx
 
 # ip,nw_src=192.168.128.0/24
 # 31: 55 -> 00
 
 # ip,nw_src=192.168.128.0/24
 # 31: 55 -> 00
-003808ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
-c0a88055 00000000 0000 0000
+003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
+c0a88055 xxxxxxxx xxxx xxxx
 
 # ip,nw_dst=192.168.128.85
 
 # ip,nw_dst=192.168.128.85
-003020ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
-00000000 c0a88055 0000 0000
+003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
+xxxxxxxx c0a88055 xxxx xxxx
 
 # ip,nw_dst=192.168.128.0/24
 # 35: 55 -> 00
 
 # ip,nw_dst=192.168.128.0/24
 # 35: 55 -> 00
-003220ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
-00000000 c0a88055 0000 0000
+003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
+xxxxxxxx c0a88055 xxxx xxxx
 
 
-# arp,nw_src=192.168.128.85
-003800ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
-c0a88055 00000000 0000 0000
+# arp,arp_spa=192.168.128.85
+003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
+c0a88055 xxxxxxxx xxxx xxxx
 
 
-# arp,nw_src=192.168.128.0/24
+# arp,arp_spa=192.168.128.0/24
 # 31: 55 -> 00
 # 31: 55 -> 00
-003808ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
-c0a88055 00000000 0000 0000
+003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
+c0a88055 xxxxxxxx xxxx xxxx
 
 
-# arp,nw_dst=192.168.128.85
-003020ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
-00000000 c0a88055 0000 0000
+# arp,arp_tpa=192.168.128.85
+003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
+xxxxxxxx c0a88055 xxxx xxxx
 
 
-# arp,nw_dst=192.168.128.0/24
+# arp,arp_tpa=192.168.128.0/24
 # 35: 55 -> 00
 # 35: 55 -> 00
-003220ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
-00000000 c0a88055 0000 0000
+003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
+xxxxxxxx c0a88055 xxxx xxxx
 
 dnl Ignore nw_src if not IP or ARP:
 # dl_type=0x1234,nw_src=192.168.128.0/24
 
 dnl Ignore nw_src if not IP or ARP:
 # dl_type=0x1234,nw_src=192.168.128.0/24
@@ -861,8 +868,8 @@ dnl Ignore nw_src if not IP or ARP:
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
 & ofp_util|INFO|post: dl_type=0x1234
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
 & ofp_util|INFO|post: dl_type=0x1234
-003808ef 0000 000000000000 000000000000 0000 00 00 1234 00 00 0000 dnl
-c0a88055 00000000 0000 0000
+003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
+c0a88055 xxxxxxxx xxxx xxxx
 
 dnl Ignore nw_dst if not IP or ARP:
 # dl_type=0x1234,nw_dst=192.168.128.0/24
 
 dnl Ignore nw_dst if not IP or ARP:
 # dl_type=0x1234,nw_dst=192.168.128.0/24
@@ -874,32 +881,32 @@ dnl Ignore nw_dst if not IP or ARP:
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
 & ofp_util|INFO|post: dl_type=0x1234
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
 & ofp_util|INFO|post: dl_type=0x1234
-003220ef 0000 000000000000 000000000000 0000 00 00 1234 00 00 0000 dnl
-00000000 c0a88055 0000 0000
+003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
+xxxxxxxx c0a88055 xxxx xxxx
 
 # tcp,tp_src=443
 
 # tcp,tp_src=443
-0038208f 0000 000000000000 000000000000 0000 00 00 0800 00 06 0000 dnl
-00000000 00000000 01bb 0000
+0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
+xxxxxxxx xxxxxxxx 01bb xxxx
 
 # tcp,tp_dst=443
 
 # tcp,tp_dst=443
-0038204f 0000 000000000000 000000000000 0000 00 00 0800 00 06 0000 dnl
-00000000 00000000 0000 01bb
+0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx 01bb
 
 # udp,tp_src=443
 
 # udp,tp_src=443
-0038208f 0000 000000000000 000000000000 0000 00 00 0800 00 11 0000 dnl
-00000000 00000000 01bb 0000
+0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
+xxxxxxxx xxxxxxxx 01bb xxxx
 
 # udp,tp_dst=443
 
 # udp,tp_dst=443
-0038204f 0000 000000000000 000000000000 0000 00 00 0800 00 11 0000 dnl
-00000000 00000000 0000 01bb
+0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx 01bb
 
 # icmp,icmp_type=5
 
 # icmp,icmp_type=5
-0038208f 0000 000000000000 000000000000 0000 00 00 0800 00 01 0000 dnl
-00000000 00000000 0005 0000
+0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
+xxxxxxxx xxxxxxxx 0005 xxxx
 
 # icmp,icmp_code=8
 
 # icmp,icmp_code=8
-0038204f 0000 000000000000 000000000000 0000 00 00 0800 00 01 0000 dnl
-00000000 00000000 0000 0008
+0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx 0008
 
 dnl Ignore tp_src if not TCP or UDP:
 # ip,nw_proto=21,tp_src=443
 
 dnl Ignore tp_src if not TCP or UDP:
 # ip,nw_proto=21,tp_src=443
@@ -909,8 +916,8 @@ dnl Ignore tp_src if not TCP or UDP:
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
 & ofp_util|INFO|post: ip,nw_proto=21
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
 & ofp_util|INFO|post: ip,nw_proto=21
-0038208f 0000 000000000000 000000000000 0000 00 00 0800 00 15 0000 dnl
-00000000 00000000 01bb 0000
+0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
+xxxxxxxx xxxxxxxx 01bb xxxx
 
 dnl Ignore tp_dst if not TCP or UDP:
 # ip,nw_proto=21,tp_dst=443
 
 dnl Ignore tp_dst if not TCP or UDP:
 # ip,nw_proto=21,tp_dst=443
@@ -918,8 +925,8 @@ dnl Ignore tp_dst if not TCP or UDP:
 # normal: 38: 01 -> 00
 # normal: 39: bb -> 00
 dnl The normalization details are suppressed here due to rate-limiting.
 # normal: 38: 01 -> 00
 # normal: 39: bb -> 00
 dnl The normalization details are suppressed here due to rate-limiting.
-0038204f 0000 000000000000 000000000000 0000 00 00 0800 00 15 0000 dnl
-00000000 00000000 0000 01bb
+0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx 01bb
 
 ])
 sed '/^[[#&]]/d' < test-data > input.txt
 
 ])
 sed '/^[[#&]]/d' < test-data > input.txt
@@ -1102,13 +1109,13 @@ dnl Try invalid TOS:
 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
 00000000 00 000000 0000000000000000ffffffffffffffff
 
 0000 00 00 0800 00 00 00000000ffffffff c0a880005a5a5a5a 0000 0000 dnl
 00000000 00 000000 0000000000000000ffffffffffffffff
 
-# arp,nw_src=192.168.128.0/24
+# arp,arp_spa=192.168.128.0/24
 0000 0058 00000000 000003f7 dnl
 000000000000ffffffffffff 000000000000ffffffffffff dnl
 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
 00000000 00 000000 0000000000000000ffffffffffffffff
 
 0000 0058 00000000 000003f7 dnl
 000000000000ffffffffffff 000000000000ffffffffffff dnl
 0000 00 00 0806 00 00 c0a88000000000ff 00000000ffffffff 0000 0000 dnl
 00000000 00 000000 0000000000000000ffffffffffffffff
 
-# arp,nw_dst=192.168.128.0/24
+# arp,arp_tpa=192.168.128.0/24
 0000 0058 00000000 000003f7 dnl
 000000000000ffffffffffff 000000000000ffffffffffff dnl
 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
 0000 0058 00000000 000003f7 dnl
 000000000000ffffffffffff 000000000000ffffffffffff dnl
 0000 00 00 0806 00 00 00000000ffffffff c0a88000000000ff 0000 0000 dnl
@@ -1316,7 +1323,17 @@ OXM_OF_VLAN_VID(0000)           # Packets without 802.1Q header or with VID=0
 OXM_OF_VLAN_VID(1123)           # Packets with VID=123, any PCP
 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
 OXM_OF_VLAN_VID(0123)           # Does not make sense (but supported anyway)
 OXM_OF_VLAN_VID(1123)           # Packets with VID=123, any PCP
 OXM_OF_VLAN_VID(1123) OXM_OF_VLAN_PCP(01) # Packets with VID=123, PCP=1.
 OXM_OF_VLAN_VID(0123)           # Does not make sense (but supported anyway)
+OXM_OF_VLAN_VID_W(0123/0123)      # Does not make sense (but supported anyway)
+OXM_OF_VLAN_VID_W(1123/0123)      # Does not make sense (but supported anyway)
+OXM_OF_VLAN_VID_W(0123/1123)      # Does not make sense (but supported anyway)
 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01)  #Bad Pre-Requisite
 OXM_OF_VLAN_VID(0123) OXM_OF_VLAN_PCP(01)  #Bad Pre-Requisite
+OXM_OF_VLAN_VID_W(1123/1fff)    # Packets with VID=123, any PCP.
+OXM_OF_VLAN_VID_W(1123/ffff)    # Packets with VID=123, any PCP.
+OXM_OF_VLAN_VID_W(1123/0000)    # Packets with or without 802.1Q header
+OXM_OF_VLAN_VID_W(1123/1f0f),   # Packets with # VID=123 (masked)
+OXM_OF_VLAN_VID_W(1123/1f0f), OXM_OF_VLAN_PCP(01)  # Packets with VID=123 (masked), any PCP.
+OXM_OF_VLAN_VID_W(1000/1000)    # Packets with any VID, any PCP
+OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)  # Packets with any VID, PCP=1.
 
 # IP ECN
 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
 
 # IP ECN
 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(03)
@@ -1501,7 +1518,17 @@ OXM_OF_VLAN_VID(0000)
 OXM_OF_VLAN_VID(1123)
 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
 OXM_OF_VLAN_VID(0123)
 OXM_OF_VLAN_VID(1123)
 OXM_OF_VLAN_VID(1123), OXM_OF_VLAN_PCP(01)
 OXM_OF_VLAN_VID(0123)
+OXM_OF_VLAN_VID_W(0123/0123)
+OXM_OF_VLAN_VID_W(0123/0123)
+OXM_OF_VLAN_VID_W(0123/1123)
 nx_pull_match() returned error OFPBMC_BAD_PREREQ
 nx_pull_match() returned error OFPBMC_BAD_PREREQ
+OXM_OF_VLAN_VID(1123)
+OXM_OF_VLAN_VID(1123)
+<any>
+OXM_OF_VLAN_VID_W(1103/1f0f)
+OXM_OF_VLAN_VID_W(1103/1f0f), OXM_OF_VLAN_PCP(01)
+OXM_OF_VLAN_VID_W(1000/1000)
+OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01)
 
 # IP ECN
 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
 
 # IP ECN
 OXM_OF_ETH_TYPE(0800), OXM_OF_IP_ECN(03)
@@ -1914,14 +1941,6 @@ AT_CLEANUP
 AT_SETUP([ovs-ofctl diff-flows])
 OVS_VSWITCHD_START
 
 AT_SETUP([ovs-ofctl diff-flows])
 OVS_VSWITCHD_START
 
-# Prints the integers from $1 to $2, increasing by $3 (default 1) on stdout.
-seq () {
-    while test $1 -le $2; do
-        echo $1
-        set `expr $1 + ${3-1}` $2 $3
-    done
-}
-
 # Add tons of flows to br0.
 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
 # Add tons of flows to br0.
 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
@@ -1942,3 +1961,28 @@ AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
 
 OVS_VSWITCHD_STOP
 AT_CLEANUP
 
 OVS_VSWITCHD_STOP
 AT_CLEANUP
+
+dnl ofpacts that differ bytewise don't necessarily differ when
+dnl converted to another representation, such as OpenFlow 1.0
+dnl or to a string.  "resubmit(,1)" is an example of an action
+dnl of this type: "ofpact_resubmit"s can differ in their "compat"
+dnl values even though this doesn't affect the string format.
+dnl
+dnl This test checks that "ovs-ofctl diff-flows" doesn't report
+dnl false ofpacts differences.
+AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
+OVS_VSWITCHD_START
+AT_DATA([flows.txt], [actions=resubmit(,1)
+])
+AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
+AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
+AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
+AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
+-dl_vlan=9 idle_timeout=60 actions=output:1
+])
+AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
+AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
++dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1
+])
+OVS_VSWITCHD_STOP
+AT_CLEANUP