tests: Fix autopath tests
[sliver-openvswitch.git] / tests / ovs-ofctl.at
index 08026ec..947f985 100644 (file)
@@ -187,7 +187,7 @@ actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
 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
@@ -216,6 +216,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
 ]])
+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])
@@ -730,55 +733,55 @@ AT_SETUP([ovs-ofctl parse-ofp10-match])
 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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
@@ -787,12 +790,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
-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
-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
@@ -802,54 +805,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
-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
-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
-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
-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
-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
-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
-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
+003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
+c0a88055 xxxxxxxx xxxx xxxx
 
 # arp,nw_src=192.168.128.0/24
 # 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
+003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
+xxxxxxxx c0a88055 xxxx xxxx
 
 # arp,nw_dst=192.168.128.0/24
 # 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
@@ -861,8 +864,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
-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
@@ -874,32 +877,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
-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
-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
-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
-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
-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
-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
-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
@@ -909,8 +912,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
-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
@@ -918,8 +921,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.
-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
@@ -1308,6 +1311,26 @@ OXM_OF_ETH_SRC(020898456ddb)
 OXM_OF_ETH_TYPE(0800)
 OXM_OF_ETH_TYPE(0800) OXM_OF_IN_PORT(00000012)
 
+# vlan
+OXM_OF_VLAN_VID(1009) OXM_OF_VLAN_VID(1009) # Duplicate Field
+OXM_OF_VLAN_VID(f009)           # Bad Value
+OXM_OF_VLAN_PCP(00)             # Bad Pre-Requisite
+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_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_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)
 OXM_OF_ETH_TYPE(0800) OXM_OF_IP_ECN(06)
@@ -1483,6 +1506,26 @@ OXM_OF_ETH_SRC(020898456ddb)
 OXM_OF_ETH_TYPE(0800)
 OXM_OF_IN_PORT(00000012), OXM_OF_ETH_TYPE(0800)
 
+# vlan
+nx_pull_match() returned error OFPBMC_DUP_FIELD
+nx_pull_match() returned error OFPBMC_BAD_VALUE
+nx_pull_match() returned error OFPBMC_BAD_PREREQ
+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_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
+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)
 nx_pull_match() returned error OFPBMC_BAD_VALUE
@@ -1654,6 +1697,7 @@ dnl [1]
 AT_CHECK([ovs-ofctl check-vlan 0000 0000], [0], [dnl
  -> 0000/0000
 NXM: <any> -> 0000/0000
+OXM: <any> -> 0000/0000,--
 OF1.0: 0000/1,00/1 -> 0000/0000
 OF1.1: 0000/1,00/1 -> 0000/0000
 ])
@@ -1662,6 +1706,7 @@ dnl [2]
 AT_CHECK([ovs-ofctl check-vlan 0000 ffff], [0], [dnl
 vlan_tci=0x0000 -> 0000/ffff
 NXM: NXM_OF_VLAN_TCI(0000) -> 0000/ffff
+OXM: OXM_OF_VLAN_VID(0000) -> 0000/1fff,--
 OF1.0: ffff/0,00/1 -> 0000/ffff
 OF1.1: ffff/0,00/1 -> 0000/ffff
 ])
@@ -1670,6 +1715,7 @@ dnl [3]
 AT_CHECK([ovs-ofctl check-vlan 1abc 1fff], [0], [dnl
 dl_vlan=2748 -> 1abc/1fff
 NXM: NXM_OF_VLAN_TCI_W(1abc/1fff) -> 1abc/1fff
+OXM: OXM_OF_VLAN_VID(1abc) -> 1abc/1fff,--
 OF1.0: 0abc/0,00/1 -> 1abc/1fff
 OF1.1: 0abc/0,00/1 -> 1abc/1fff
 ])
@@ -1678,6 +1724,7 @@ dnl [4]
 AT_CHECK([ovs-ofctl check-vlan b000 f000], [0], [dnl
 dl_vlan_pcp=5 -> b000/f000
 NXM: NXM_OF_VLAN_TCI_W(b000/f000) -> b000/f000
+OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(05) -> 1000/1000,05
 OF1.0: 0000/1,05/0 -> b000/f000
 OF1.1: fffe/0,05/0 -> b000/f000
 ])
@@ -1686,6 +1733,7 @@ dnl [5]
 AT_CHECK([ovs-ofctl check-vlan babc ffff], [0], [dnl
 dl_vlan=2748,dl_vlan_pcp=5 -> babc/ffff
 NXM: NXM_OF_VLAN_TCI(babc) -> babc/ffff
+OXM: OXM_OF_VLAN_VID(1abc), OXM_OF_VLAN_PCP(05) -> 1abc/1fff,05
 OF1.0: 0abc/0,05/0 -> babc/ffff
 OF1.1: 0abc/0,05/0 -> babc/ffff
 ])
@@ -1694,6 +1742,7 @@ dnl [6]
 AT_CHECK([ovs-ofctl check-vlan 0000 0fff], [0], [dnl
 vlan_tci=0x0000/0x0fff -> 0000/0fff
 NXM: NXM_OF_VLAN_TCI_W(0000/0fff) -> 0000/0fff
+OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
 OF1.0: 0000/0,00/1 -> 1000/1fff
 OF1.1: 0000/0,00/1 -> 1000/1fff
 ])
@@ -1702,6 +1751,7 @@ dnl [7]
 AT_CHECK([ovs-ofctl check-vlan 0000 f000], [0], [dnl
 vlan_tci=0x0000/0xf000 -> 0000/f000
 NXM: NXM_OF_VLAN_TCI_W(0000/f000) -> 0000/f000
+OXM: OXM_OF_VLAN_VID_W(0000/1000) -> 0000/1000,--
 OF1.0: ffff/0,00/1 -> 0000/ffff
 OF1.1: ffff/0,00/1 -> 0000/ffff
 ])
@@ -1710,6 +1760,7 @@ dnl [8]
 AT_CHECK([ovs-ofctl check-vlan 0000 efff], [0], [dnl
 vlan_tci=0x0000/0xefff -> 0000/efff
 NXM: NXM_OF_VLAN_TCI_W(0000/efff) -> 0000/efff
+OXM: OXM_OF_VLAN_VID_W(0000/0fff) -> 0000/0fff,--
 OF1.0: 0000/0,00/0 -> 1000/ffff
 OF1.1: 0000/0,00/0 -> 1000/ffff
 ])
@@ -1718,6 +1769,7 @@ dnl [9]
 AT_CHECK([ovs-ofctl check-vlan 1001 1001], [0], [dnl
 vlan_tci=0x1001/0x1001 -> 1001/1001
 NXM: NXM_OF_VLAN_TCI_W(1001/1001) -> 1001/1001
+OXM: OXM_OF_VLAN_VID_W(1001/1001) -> 1001/1001,--
 OF1.0: 0001/0,00/1 -> 1001/1fff
 OF1.1: 0001/0,00/1 -> 1001/1fff
 ])
@@ -1726,6 +1778,7 @@ dnl [10]
 AT_CHECK([ovs-ofctl check-vlan 3000 3000], [0], [dnl
 vlan_tci=0x3000/0x3000 -> 3000/3000
 NXM: NXM_OF_VLAN_TCI_W(3000/3000) -> 3000/3000
+OXM: OXM_OF_VLAN_VID_W(1000/1000), OXM_OF_VLAN_PCP(01) -> 1000/1000,01
 OF1.0: 0000/1,01/0 -> 3000/f000
 OF1.1: fffe/0,01/0 -> 3000/f000
 ])
@@ -1884,14 +1937,6 @@ AT_CLEANUP
 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])
@@ -1912,3 +1957,28 @@ AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
 
 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