])
AT_CLEANUP
+AT_SETUP([OFPT_FEATURES_REPLY - OF1.4])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 06 00 20 00 00 00 01 00 00 50 54 00 00 00 01 \
+00 00 01 00 ff 00 00 00 00 00 07 6f 00 00 00 00 \
+"], [0], [dnl
+OFPT_FEATURES_REPLY (OF1.4) (xid=0x1): dpid:0000505400000001
+n_tables:255, n_buffers:256
+capabilities: FLOW_STATS TABLE_STATS PORT_STATS GROUP_STATS IP_REASM QUEUE_STATS PORT_BLOCKED BUNDLES FLOW_MONITORING
+])
+AT_CLEANUP
+
+AT_SETUP([OFPT_FEATURES_REPLY - OF1.5])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+06 06 00 20 00 00 00 01 00 00 50 54 00 00 00 01 \
+00 00 01 00 ff 00 00 00 00 00 07 6f 00 00 00 00 \
+"], [0], [dnl
+OFPT_FEATURES_REPLY (OF1.5) (xid=0x1): dpid:0000505400000001
+n_tables:255, n_buffers:256
+capabilities: FLOW_STATS TABLE_STATS PORT_STATS GROUP_STATS IP_REASM QUEUE_STATS PORT_BLOCKED BUNDLES FLOW_MONITORING
+])
+AT_CLEANUP
+
AT_SETUP([OFPT_FEATURES_REPLY - with auxiliary_id - OF1.3])
AT_KEYWORDS([ofp-print])
AT_CHECK([ovs-ofctl ofp-print "\
50 02 02 00 26 e8 00 00 00 00 00 00 00 00 \
"], [0], [dnl
OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=3 (via no_match) data_len=60 buffer=0x00000111
-tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=10031,tp_dst=0,tcp_flags=syn tcp_csum:26e8
+tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=10031,tp_dst=0,tcp_flags=syn tcp_csum:26e8
])
AT_CLEANUP
50 10 02 00 26 e8 00 00 00 00 00 00 00 00 \
" 3], [0], [dnl
OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=3 (via no_match) data_len=60 buffer=0x00000111
-tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=10031,tp_dst=0,tcp_flags=ack tcp_csum:26e8
+tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=10031,tp_dst=0,tcp_flags=ack tcp_csum:26e8
00000000 50 54 00 00 00 06 50 54-00 00 00 05 08 00 45 00
00000010 00 28 bd 12 00 00 40 06-3c 6a c0 a8 00 01 c0 a8
00000020 00 02 27 2f 00 00 78 50-cc 5b 57 af 42 1e 50 10
50 02 02 00 26 e8 00 00 00 00 00 00 00 00 \
"], [0], [dnl
OFPT_PACKET_IN (OF1.1) (xid=0x0): total_len=60 in_port=3 (via no_match) data_len=60 buffer=0x00000111
-tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=10031,tp_dst=0,tcp_flags=syn tcp_csum:26e8
+tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:06,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=10031,tp_dst=0,tcp_flags=syn tcp_csum:26e8
])
AT_CLEANUP
00 00 00 23 20 83 c1 5f 00 00 00 00 \
"], [0], [dnl
OFPT_PACKET_IN (OF1.2) (xid=0x0): total_len=42 in_port=LOCAL (via no_match) data_len=42 buffer=0xffffff00
-rarp,in_port=0,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=1,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
+rarp,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=1,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
])
AT_CLEANUP
00 00 00 23 20 83 c1 5f 00 00 00 00 \
" 3], [0], [dnl
OFPT_PACKET_IN (OF1.2) (xid=0x0): total_len=42 in_port=LOCAL (via no_match) data_len=42 buffer=0xffffff00
-rarp,in_port=0,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=3,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
+rarp,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=3,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
00000000 ff ff ff ff ff ff 00 23-20 83 c1 5f 80 35 00 01
00000010 08 00 06 04 00 03 00 23-20 83 c1 5f 00 00 00 00
00000020 00 23 20 83 c1 5f 00 00-00 00
00 00 00 00 \
"], [0], [dnl
OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x102030405060708 total_len=42 in_port=LOCAL (via no_match) data_len=42 buffer=0xffffff00
-rarp,in_port=0,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=3,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
+rarp,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=3,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
])
AT_CLEANUP
00 00 00 00 \
"], [0], [dnl
OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x102030405060708 total_len=42 in_port=LOCAL (via no_match) data_len=42 buffer=0xffffff00
-rarp,in_port=0,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=3,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
+rarp,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=3,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
])
AT_CLEANUP
00 00 00 00 \
"], [0], [dnl
OFPT_PACKET_IN (OF1.5) (xid=0x0): cookie=0x102030405060708 total_len=42 in_port=LOCAL (via no_match) data_len=42 buffer=0xffffff00
-rarp,in_port=0,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=3,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
+rarp,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=3,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
])
AT_CLEANUP
00 00 00 00 \
" 3], [0], [dnl
OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x102030405060708 total_len=42 in_port=LOCAL (via no_match) data_len=42 buffer=0xffffff00
-rarp,in_port=0,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=3,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
+rarp,vlan_tci=0x0000,dl_src=00:23:20:83:c1:5f,dl_dst=ff:ff:ff:ff:ff:ff,arp_spa=0.0.0.0,arp_tpa=0.0.0.0,arp_op=3,arp_sha=00:23:20:83:c1:5f,arp_tha=00:23:20:83:c1:5f
00000000 ff ff ff ff ff ff 00 23-20 83 c1 5f 80 35 00 01
00000010 08 00 06 04 00 03 00 23-20 83 c1 5f 00 00 00 00
00000020 00 23 20 83 c1 5f 00 00-00 00
])
AT_CLEANUP
+AT_SETUP([OFPT_FLOW_REMOVED - OF1.5])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+06 0b 00 80 00 00 00 02 01 00 00 00 11 00 22 00 \
+00 00 00 00 00 00 00 01 00 01 00 2d 80 00 00 04 \
+00 00 00 02 80 00 06 06 52 54 00 c3 00 89 80 00 \
+0a 02 08 00 80 00 10 01 00 80 00 04 08 00 00 00 \
+00 00 00 00 00 00 00 00 00 00 00 34 80 02 00 08 \
+00 00 00 98 29 e6 ed c0 80 02 02 08 00 00 00 98 \
+00 00 00 00 80 02 08 08 00 00 00 00 00 00 00 02 \
+80 02 0a 08 00 00 00 00 00 00 00 80 00 00 00 00 \
+"], [0], [dnl
+OFPT_FLOW_REMOVED (OF1.5) (xid=0x2): priority=0,ip,metadata=0,in_port=2,dl_dst=52:54:00:c3:00:89,nw_tos=0 reason=idle table_id=1 cookie:0x1 duration152.703s idle4352 hard8704 pkts2 bytes128
+])
+AT_CLEANUP
+
AT_SETUP([OFPT_PORT_STATUS - OF1.0])
AT_KEYWORDS([ofp-print])
AT_CHECK([ovs-ofctl ofp-print "\
00 00 00 00 \
"], [0], [dnl
OFPT_PACKET_OUT (xid=0x0): in_port=1 actions=output:3 data_len=60
-tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=11104,tcp_flags=rst|ack tcp_csum:6d75
+tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=11104,tcp_flags=rst|ack tcp_csum:6d75
])
AT_CLEANUP
00 00 00 00 \
" 3], [0], [dnl
OFPT_PACKET_OUT (xid=0x0): in_port=1 actions=output:3 data_len=60
-tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=11104,tcp_flags=rst|ack tcp_csum:6d75
+tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=11104,tcp_flags=rst|ack tcp_csum:6d75
00000000 50 54 00 00 00 05 50 54-00 00 00 06 08 00 45 00
00000010 00 28 00 00 40 00 40 06-b9 7c c0 a8 00 02 c0 a8
00000020 00 01 00 00 2b 60 00 00-00 00 6a 4f 2b 58 50 14
00 00 00 00 \
"], [0], [dnl
OFPT_PACKET_OUT (OF1.2) (xid=0x8858dfc5): in_port=LOCAL actions=FLOOD data_len=60
-tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=11104,tcp_flags=rst|ack tcp_csum:6d75
+tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=11104,tcp_flags=rst|ack tcp_csum:6d75
+])
+AT_CLEANUP
+
+AT_SETUP([OFPT_PACKET_OUT - OF1.5])
+AT_KEYWORDS([ofp-print packet-out])
+AT_CHECK([ovs-ofctl ofp-print "\
+06 0d 00 30 11 22 33 44 ff ff ff 00 00 10 00 00 \
+00 01 00 10 80 00 00 04 00 00 00 01 00 00 00 00 \
+00 00 00 10 ff ff ff fb 05 dc 00 00 00 00 00 00 \
+"], [0], [dnl
+OFPT_PACKET_OUT (OF1.5) (xid=0x11223344): in_port=1 actions=FLOOD buffer=0xffffff00
+])
+
+dnl missing in_port
+AT_CHECK([ovs-ofctl ofp-print "\
+06 0d 00 40 11 22 33 44 ff ff ff 00 00 10 00 00 \
+00 01 00 20 80 00 04 08 00 00 00 00 00 00 00 03 \
+80 00 4C 08 00 00 00 00 00 00 00 05 00 00 00 00 \
+00 00 00 10 ff ff ff fb 05 dc 00 00 00 00 00 00 \
+"], [0], [dnl
+OFPT_PACKET_OUT (OF1.5) (xid=0x11223344): ***decode error: OFPBRC_BAD_PORT***
+00000000 06 0d 00 40 11 22 33 44-ff ff ff 00 00 10 00 00 |...@."3D........|
+00000010 00 01 00 20 80 00 04 08-00 00 00 00 00 00 00 03 |... ............|
+00000020 80 00 4c 08 00 00 00 00-00 00 00 05 00 00 00 00 |..L.............|
+00000030 00 00 00 10 ff ff ff fb-05 dc 00 00 00 00 00 00 |................|
+])
+
+AT_CHECK([ovs-ofctl ofp-print "\
+06 0d 00 48 11 22 33 44 ff ff ff 00 00 10 00 00 \
+00 01 00 28 80 00 00 04 00 00 00 01 80 00 04 08 \
+00 00 00 00 00 00 00 03 80 00 4C 08 00 00 00 00 \
+00 00 00 05 00 00 00 00 00 00 00 10 ff ff ff fb \
+05 dc 00 00 00 00 00 00 \
+"], [0], [dnl
+OFPT_PACKET_OUT (OF1.5) (xid=0x11223344): tun_id=0x5,metadata=0x3,in_port=1 actions=FLOOD buffer=0xffffff00
+])
+
+dnl include non pipeline field
+AT_CHECK([ovs-ofctl ofp-print "\
+06 0d 00 38 11 22 33 44 ff ff ff 00 00 10 00 00 \
+00 01 00 18 80 00 00 04 00 00 00 01 80 00 16 04 \
+11 22 33 44 00 00 00 00 00 00 00 10 ff ff ff fb \
+05 dc 00 00 00 00 00 00 \
+"], [0], [dnl
+OFPT_PACKET_OUT (OF1.5) (xid=0x11223344): ***decode error: OFPBRC_PIPELINE_FIELDS_ONLY***
+00000000 06 0d 00 38 11 22 33 44-ff ff ff 00 00 10 00 00 |...8."3D........|
+dnl "
+00000010 00 01 00 18 80 00 00 04-00 00 00 01 80 00 16 04 |................|
+00000020 11 22 33 44 00 00 00 00-00 00 00 10 ff ff ff fb |."3D............|
+00000030 05 dc 00 00 00 00 00 00- |........ |
+])
+
+AT_CLEANUP
+
+AT_SETUP([OFPT_PACKET_OUT - OF1.5, with packet])
+AT_KEYWORDS([ofp-print packet-out])
+AT_CHECK([ovs-ofctl ofp-print "\
+06 0d 00 74 11 22 33 44 ff ff ff ff 00 10 00 00 \
+00 01 00 18 80 00 00 04 00 00 00 01 80 00 04 08 \
+00 00 00 00 00 00 00 03 00 00 00 10 ff ff ff fb \
+05 dc 00 00 00 00 00 00 50 54 00 00 00 05 50 54 \
+00 00 00 06 08 00 45 00 00 28 00 00 40 00 40 06 \
+b9 7c c0 a8 00 02 c0 a8 00 01 00 00 2b 60 00 00 \
+00 00 6a 4f 2b 58 50 14 00 00 6d 75 00 00 00 00 \
+00 00 00 00
+"], [0], [dnl
+OFPT_PACKET_OUT (OF1.5) (xid=0x11223344): metadata=0x3,in_port=1 actions=FLOOD data_len=60
+tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=11104,tcp_flags=rst|ack tcp_csum:6d75
])
AT_CLEANUP
" 2], [0], [dnl
OFPT_FLOW_MOD (xid=0x0): ADD priority=65535,arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,arp_spa=192.168.0.2,arp_tpa=192.168.0.1,arp_op=2 idle:5 buf:0x10e out_port:0 actions=output:3
], [dnl
-ofp_util|INFO|normalization changed ofp_match, details:
-ofp_util|INFO| pre: arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,arp_spa=192.168.0.2,arp_tpa=192.168.0.1,arp_op=2,nw_tos=0,tp_src=0,tp_dst=0
-ofp_util|INFO|post: arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,arp_spa=192.168.0.2,arp_tpa=192.168.0.1,arp_op=2
+ofp_match|INFO|normalization changed ofp_match, details:
+ofp_match|INFO| pre: arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,arp_spa=192.168.0.2,arp_tpa=192.168.0.1,arp_op=2,nw_tos=0,tp_src=0,tp_dst=0
+ofp_match|INFO|post: arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,arp_spa=192.168.0.2,arp_tpa=192.168.0.1,arp_op=2
])
AT_CLEANUP
" 3], [0], [dnl
OFPT_FLOW_MOD (xid=0x0): ADD arp,in_port=1,dl_vlan=65535,dl_vlan_pcp=0,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,arp_op=2,nw_tos=0,tp_src=0,tp_dst=0 idle:5 pri:65535 buf:0x10e out_port:0 actions=output:3
], [dnl
-ofp_util|INFO|normalization changed ofp_match, details:
-ofp_util|INFO| pre: arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,arp_spa=192.168.0.2,arp_tpa=192.168.0.1,arp_op=2,nw_tos=0,tp_src=0,tp_dst=0
-ofp_util|INFO|post: arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,arp_spa=192.168.0.2,arp_tpa=192.168.0.1,arp_op=2
+ofp_match|INFO|normalization changed ofp_match, details:
+ofp_match|INFO| pre: arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,arp_spa=192.168.0.2,arp_tpa=192.168.0.1,arp_op=2,nw_tos=0,tp_src=0,tp_dst=0
+ofp_match|INFO|post: arp,in_port=1,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,arp_spa=192.168.0.2,arp_tpa=192.168.0.1,arp_op=2
])
AT_CLEANUP
01 0f 00 20 00 00 00 03 00 03 50 54 00 00 00 01 \
00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 \
" 3], [0], [dnl
-OFPT_PORT_MOD (xid=0x3):port: 3: addr:50:54:00:00:00:01
+OFPT_PORT_MOD (xid=0x3): port: 3: addr:50:54:00:00:00:01
config: PORT_DOWN
mask: PORT_DOWN
advertise: UNCHANGED
50 54 00 00 00 01 00 00 00 00 00 01 00 00 00 01 \
00 00 00 00 00 00 00 00 \
" 3], [0], [dnl
-OFPT_PORT_MOD (OF1.1) (xid=0x3):port: 3: addr:50:54:00:00:00:01
+OFPT_PORT_MOD (OF1.1) (xid=0x3): port: 3: addr:50:54:00:00:00:01
config: PORT_DOWN
mask: PORT_DOWN
advertise: UNCHANGED
50 54 00 00 00 01 00 00 00 00 00 01 00 00 00 01 \
00 00 00 00 00 00 00 00 \
" 3], [0], [dnl
-OFPT_PORT_MOD (OF1.2) (xid=0x3):port: 3: addr:50:54:00:00:00:01
+OFPT_PORT_MOD (OF1.2) (xid=0x3): port: 3: addr:50:54:00:00:00:01
config: PORT_DOWN
mask: PORT_DOWN
advertise: UNCHANGED
50 54 00 00 00 01 00 00 00 00 00 01 00 00 00 01 \
00 00 00 00 00 00 00 00 \
" 3], [0], [dnl
-OFPT_PORT_MOD (OF1.3) (xid=0x3):port: 3: addr:50:54:00:00:00:01
+OFPT_PORT_MOD (OF1.3) (xid=0x3): port: 3: addr:50:54:00:00:00:01
config: PORT_DOWN
mask: PORT_DOWN
advertise: UNCHANGED
50 54 00 00 00 01 00 00 00 00 00 01 00 00 00 01 \
00 00 00 08 00 00 00 01
" 3], [0], [dnl
-OFPT_PORT_MOD (OF1.4) (xid=0x3):port: 3: addr:50:54:00:00:00:01
+OFPT_PORT_MOD (OF1.4) (xid=0x3): port: 3: addr:50:54:00:00:00:01
config: PORT_DOWN
mask: PORT_DOWN
advertise: 10MB-HD
AT_CHECK([ovs-ofctl ofp-print "\
05 11 00 10 00 00 00 02 02 00 00 00 00 00 00 00 \
" 3], [0], [dnl
-OFPT_TABLE_MOD (OF1.4) (xid=0x2): table_id=2
+OFPT_TABLE_MOD (OF1.4) (xid=0x2): table_id=2, eviction=off, vacancy=off
])
AT_CLEANUP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \
00 00 00 00 ff 00 ff ff \
"], [0], [dnl
-OFPST_FLOW request (xid=0x4): @&t@
+OFPST_FLOW request (xid=0x4):
])
AT_CLEANUP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \
00 01 00 04 00 00 00 00 \
"], [0], [dnl
-OFPST_FLOW request (OF1.2) (xid=0x2): @&t@
+OFPST_FLOW request (OF1.2) (xid=0x2):
])
AT_CLEANUP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \
00 01 00 04 00 00 00 00 \
"], [0], [dnl
-OFPST_FLOW request (OF1.3) (xid=0x2): @&t@
+OFPST_FLOW request (OF1.3) (xid=0x2):
+])
+AT_CLEANUP
+
+AT_SETUP([OFPST_FLOW request - OF1.5])
+AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
+AT_CHECK([ovs-ofctl ofp-print "\
+06 12 00 38 00 00 00 04 00 01 00 00 00 00 00 00 \
+ff 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 \
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \
+00 01 00 04 00 00 00 00 \
+"], [0], [dnl
+OFPST_FLOW request (OF1.5) (xid=0x4):
])
AT_CLEANUP
])
AT_CLEANUP
+AT_SETUP([OFPST_FLOW reply - OF1.5])
+AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
+AT_CHECK([ovs-ofctl ofp-print "\
+06 13 01 00 00 00 00 04 00 01 00 00 00 00 00 00 \
+00 78 00 00 00 00 80 00 00 00 00 00 00 05 00 00 \
+00 00 00 00 00 00 00 00 00 01 00 0c 80 00 00 04 \
+00 00 00 02 00 00 00 00 00 00 00 34 80 02 00 08 \
+00 00 00 c4 0b 06 e0 40 80 02 02 08 00 00 00 c4 \
+00 00 00 00 80 02 08 08 00 00 00 00 00 00 00 02 \
+80 02 0a 08 00 00 00 00 00 00 00 80 00 00 00 00 \
+00 04 00 18 00 00 00 00 00 00 00 10 ff ff ff fa \
+00 00 00 00 00 00 00 00 00 78 00 00 00 00 0f a0 \
+00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 \
+00 01 00 0c 80 00 00 04 00 00 00 03 00 00 00 00 \
+00 00 00 34 80 02 00 08 00 00 00 b3 25 40 be 40 \
+80 02 02 08 00 00 00 b3 00 00 00 00 80 02 08 08 \
+00 00 00 00 00 00 00 02 80 02 0a 08 00 00 00 00 \
+00 00 00 80 00 00 00 00 00 04 00 18 00 00 00 00 \
+00 00 00 10 ff ff ff fa 00 00 00 00 00 00 00 00 \
+"], [0], [dnl
+OFPST_FLOW reply (OF1.5) (xid=0x4):
+ cookie=0x0, duration=196.185s, table=0, n_packets=2, n_bytes=128, send_flow_rem reset_counts idle_age=196, in_port=2 actions=NORMAL
+ cookie=0x0, duration=179.625s, table=0, n_packets=2, n_bytes=128, send_flow_rem reset_counts idle_age=179, priority=4000,in_port=3 actions=NORMAL
+])
+AT_CLEANUP
+
AT_SETUP([OFPST_AGGREGATE request - OF1.0])
AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
AT_CHECK([ovs-ofctl ofp-print "\
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \
00 00 00 00 ff 00 ff ff \
"], [0], [dnl
-OFPST_AGGREGATE request (xid=0x4): @&t@
+OFPST_AGGREGATE request (xid=0x4):
])
AT_CLEANUP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \
00 01 00 04 00 00 00 00 \
"], [0], [dnl
-OFPST_AGGREGATE request (OF1.2) (xid=0x2): @&t@
+OFPST_AGGREGATE request (OF1.2) (xid=0x2):
])
AT_CLEANUP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \
00 01 00 04 00 00 00 00 \
"], [0], [dnl
-OFPST_AGGREGATE request (OF1.3) (xid=0x2): @&t@
+OFPST_AGGREGATE request (OF1.3) (xid=0x2):
+])
+AT_CLEANUP
+
+AT_SETUP([OFPST_AGGREGATE request - OF1.5])
+AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
+AT_CHECK([ovs-ofctl ofp-print "\
+06 12 00 60 00 00 00 04 00 02 00 00 00 00 00 00 \
+ff 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 \
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \
+00 01 00 04 00 00 00 00 00 00 00 24 80 02 06 04 \
+00 00 00 00 80 02 08 08 00 00 00 00 00 00 00 00 \
+80 02 0a 08 00 00 00 00 00 00 00 00 00 00 00 00 \
+"], [0], [dnl
+OFPST_AGGREGATE request (OF1.5) (xid=0x4):
])
AT_CLEANUP
])
AT_CLEANUP
+AT_SETUP([OFPST_AGGREGATE reply - OF1.5])
+AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
+AT_CHECK([ovs-ofctl ofp-print "\
+06 13 00 38 00 00 00 04 00 02 00 00 00 00 00 00 \
+00 00 00 24 80 02 06 04 00 00 00 03 80 02 08 08 \
+00 00 00 00 00 00 00 79 80 02 0a 08 00 00 00 00 \
+00 00 4b 4f 00 00 00 00 \
+"], [0], [dnl
+OFPST_AGGREGATE reply (OF1.5) (xid=0x4): packet_count=121 byte_count=19279 flow_count=3
+])
+AT_CLEANUP
+
AT_SETUP([OFPST_TABLE request - OF1.0])
AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
AT_CHECK([ovs-ofctl ofp-print "0110000c0000000100030000"], [0], [dnl
active=11, lookup=0, matched=0
max_entries=1048576
matching:
- in_port: exact match or wildcard
- eth_src: exact match or wildcard
- eth_dst: exact match or wildcard
- eth_type: exact match or wildcard
- vlan_vid: exact match or wildcard
- vlan_pcp: exact match or wildcard
- ip_src: exact match or wildcard
- ip_dst: exact match or wildcard
- nw_proto: exact match or wildcard
- nw_tos: exact match or wildcard
- tcp_src: exact match or wildcard
- tcp_dst: exact match or wildcard
+ exact match or wildcard: in_port eth_{src,dst,type} vlan_{vid,pcp} ip_{src,dst} nw_{proto,tos} tcp_{src,dst}
])
AT_CLEANUP
AT_SETUP([OFPST_TABLE reply - OF1.2])
AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
-(tail="
+(echo 'OFPST_TABLE reply (OF1.2) (xid=0x2):
+ table 0 ("classifier"):
+ active=1, lookup=74614, matched=106024
config=controller
max_entries=1000000
instructions (table miss and others):
- instructions: write_metadata,goto_table
+ instructions: write_metadata goto_table
Write-Actions and Apply-Actions features:
- supported on Set-Field: metadata in_port_oxm eth_src eth_dst eth_type vlan_vid vlan_pcp mpls_label mpls_tc ip_src ip_dst ipv6_src ipv6_dst ipv6_label nw_proto ip_dscp nw_ecn arp_op arp_spa arp_tpa arp_sha arp_tha tcp_src tcp_dst udp_src udp_dst sctp_src sctp_dst icmp_type icmp_code icmpv6_type icmpv6_code nd_target nd_sll nd_tll
+ supported on Set-Field: metadata in_port_oxm eth_{src,dst,type} vlan_{vid,pcp} mpls_{label,tc} ip_{src,dst} ipv6_{src,dst,label} nw_proto ip_dscp nw_ecn arp_{op,spa,tpa,sha,tha} tcp_{src,dst} udp_{src,dst} sctp_{src,dst} icmp_{type,code} icmpv6_{type,code} nd_{target,sll,tll}
matching:
- metadata: exact match or wildcard
- in_port_oxm: exact match or wildcard
- eth_src: exact match or wildcard
- eth_dst: exact match or wildcard
- eth_type: exact match or wildcard
- vlan_vid: exact match or wildcard
- vlan_pcp: exact match or wildcard
- mpls_label: exact match or wildcard
- mpls_tc: exact match or wildcard
- ip_src: exact match or wildcard
- ip_dst: exact match or wildcard
- ipv6_src: exact match or wildcard
- ipv6_dst: exact match or wildcard
- ipv6_label: exact match or wildcard
- nw_proto: exact match or wildcard
- ip_dscp: exact match or wildcard
- nw_ecn: exact match or wildcard
- arp_op: exact match or wildcard
- arp_spa: exact match or wildcard
- arp_tpa: exact match or wildcard
- arp_sha: exact match or wildcard
- arp_tha: exact match or wildcard
- tcp_src: exact match or wildcard
- tcp_dst: exact match or wildcard
- udp_src: exact match or wildcard
- udp_dst: exact match or wildcard
- sctp_src: exact match or wildcard
- sctp_dst: exact match or wildcard
- icmp_type: exact match or wildcard
- icmp_code: exact match or wildcard
- icmpv6_type: exact match or wildcard
- icmpv6_code: exact match or wildcard
- nd_target: exact match or wildcard
- nd_sll: exact match or wildcard
- nd_tll: exact match or wildcard"
- echo "OFPST_TABLE reply (OF1.2) (xid=0x2):
- table 0 (\"classifier\"):
- active=1, lookup=74614, matched=106024$tail"
- x=1
- while test $x -lt 254; do
- printf "
- table %d (\"%s\"):
- active=0, lookup=0, matched=0$tail
-" $x table$x
- x=`expr $x + 1`
+ exact match or wildcard: metadata in_port_oxm eth_{src,dst,type} vlan_{vid,pcp} mpls_{label,tc} ip_{src,dst} ipv6_{src,dst,label} nw_proto ip_dscp nw_ecn arp_{op,spa,tpa,sha,tha} tcp_{src,dst} udp_{src,dst} sctp_{src,dst} icmp_{type,code} icmpv6_{type,code} nd_{target,sll,tll}
+
+ table 1 ("table1"):
+ active=0, lookup=0, matched=0
+ (same features)
+'
+ for i in `seq 2 253`; do
+ printf ' table %d ("table%d"): ditto\n' $i $i
done
- echo "
- table 254 (\"table254\"):
- active=2, lookup=0, matched=0$tail") > expout
+ echo ' table 254 ("table254"):
+ active=2, lookup=0, matched=0
+ (same features)') > expout
(pad32="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
pad7="00 00 00 00 00 00 00 "
00 00 00 07 00 00 00 00 00 0f 42 40 "
tail="00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
- echo -n "03 13 7f 90 00 00 00 02 00 03 00 00 00 00 00 00 "
+ printf "03 13 7f 90 00 00 00 02 00 03 00 00 00 00 00 00 "
x=0
printf "%02x $pad7" $x
printf "%s$pad32" "classifier" | od -A n -t x1 -v -N 32 | tr '\n' ' '
- echo -n "$mid 00 00 00 01 "
- echo -n "00 00 00 00 00 01 23 76 00 00 00 00 00 01 9e 28 "
+ printf "$mid 00 00 00 01 "
+ printf "00 00 00 00 00 01 23 76 00 00 00 00 00 01 9e 28 "
x=1
while test $x -lt 254; do
printf "%02x $pad7" $x
printf "%s$pad32" "table$x" | od -A n -t x1 -v -N 32 | tr '\n' ' '
- echo -n "$mid 00 00 00 00 $tail "
+ printf "$mid 00 00 00 00 $tail "
x=`expr $x + 1`
done
x=254
printf "%02x $pad7" $x
printf "%s$pad32" "table$x" | od -A n -t x1 -v -N 32 | tr '\n' ' '
- echo -n "$mid 00 00 00 02 $tail") > in
+ printf "$mid 00 00 00 02 $tail") > in
AT_CHECK([ovs-ofctl ofp-print - < in], [0], [expout])
AT_CLEANUP
01 10 00 14 00 00 00 01 00 05 00 00 ff fc 00 00 \
ff ff ff ff \
"], [0], [dnl
-OFPST_QUEUE request (xid=0x1):port=ANY queue=ALL
+OFPST_QUEUE request (xid=0x1): port=ANY queue=ALL
])
AT_CLEANUP
02 12 00 18 00 00 00 02 00 05 00 00 00 00 00 00 \
ff ff ff ff ff ff ff ff \
"], [0], [dnl
-OFPST_QUEUE request (OF1.1) (xid=0x2):port=ANY queue=ALL
+OFPST_QUEUE request (OF1.1) (xid=0x2): port=ANY queue=ALL
])
AT_CLEANUP
03 12 00 18 00 00 00 02 00 05 00 00 00 00 00 00 \
ff ff ff ff ff ff ff ff \
"], [0], [dnl
-OFPST_QUEUE request (OF1.2) (xid=0x2):port=ANY queue=ALL
+OFPST_QUEUE request (OF1.2) (xid=0x2): port=ANY queue=ALL
])
AT_CLEANUP
04 12 00 18 00 00 00 02 00 05 00 00 00 00 00 00 \
ff ff ff ff ff ff ff ff \
"], [0], [dnl
-OFPST_QUEUE request (OF1.3) (xid=0x2):port=ANY queue=ALL
+OFPST_QUEUE request (OF1.3) (xid=0x2): port=ANY queue=ALL
])
AT_CLEANUP
])
AT_CLEANUP
-AT_SETUP([OFPST_GROUP request])
+AT_SETUP([NXST_GROUP request - OF1.0])
+AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 10 00 20 00 00 00 04 ff ff 00 00 00 00 23 20 00 00 00 07 00 00 00 00 \
+ff ff ff ff 00 00 00 00 \
+"], [0], [NXST_GROUP request (xid=0x4): group_id=ANY
+])
+AT_CLEANUP
+
+AT_SETUP([OFPST_GROUP request - OF1.1])
AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
AT_CHECK([ovs-ofctl ofp-print "\
02 12 00 18 00 00 00 02 00 06 00 00 00 00 00 00 \
])
AT_CLEANUP
+AT_SETUP([NXST_GROUP reply - OF1.0])
+AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 11 00 b8 00 00 00 04 ff ff 00 00 00 00 23 20 00 00 00 07 00 00 00 00 \
+00 58 00 00 87 65 43 21 00 00 00 04 00 00 00 00 \
+00 00 00 00 00 00 88 88 00 00 00 00 00 77 77 77 \
+00 00 00 12 1d cd 65 00 \
+00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
+00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
+00 00 00 00 00 00 66 66 00 00 00 00 00 33 33 33 \
+00 48 00 00 00 00 00 05 00 00 00 02 00 00 00 00 \
+00 00 00 00 00 00 88 88 00 00 00 00 00 77 77 77 \
+00 00 00 10 1d cd 65 00 \
+00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
+00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
+"], [0], [dnl
+NXST_GROUP reply (xid=0x4):
+ group_id=2271560481,duration=18.500s,ref_count=4,packet_count=34952,byte_count=7829367,bucket0:packet_count=4369,byte_count=2236962,bucket1:packet_count=4369,byte_count=2236962,bucket2:packet_count=26214,byte_count=3355443
+ group_id=5,duration=16.500s,ref_count=2,packet_count=34952,byte_count=7829367,bucket0:packet_count=4369,byte_count=2236962,bucket1:packet_count=4369,byte_count=2236962
+])
+AT_CLEANUP
+
AT_SETUP([OFPST_GROUP reply - OF1.1])
AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
AT_CHECK([ovs-ofctl ofp-print "\
])
AT_CLEANUP
+AT_SETUP([NXST_GROUP_DESC request - OF1.0])
+AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 10 00 20 00 00 00 04 ff ff 00 00 00 00 23 20 00 00 00 08 00 00 00 00 \
+00 00 00 01 00 00 00 00
+"], [0], [NXST_GROUP_DESC request (xid=0x4): group_id=1
+])
+AT_CLEANUP
+
AT_SETUP([OFPST_GROUP_DESC request - OF1.1])
AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
AT_CHECK([ovs-ofctl ofp-print "\
AT_SETUP([OFPST_GROUP_DESC request - OF1.5])
AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
AT_CHECK([ovs-ofctl ofp-print "\
-06 12 00 14 00 00 00 02 00 07 00 00 00 00 00 00 \
-00 00 00 01
+06 12 00 18 00 00 00 02 00 07 00 00 00 00 00 00 \
+00 00 00 01 00 00 00 00
"], [0], [OFPST_GROUP_DESC request (OF1.5) (xid=0x2): group_id=1
])
AT_CLEANUP
+AT_SETUP([NXST_GROUP_DESC reply - OF1.0])
+AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 11 00 c8 00 00 00 04 ff ff 00 00 00 00 23 20 00 00 00 08 00 00 00 00 \
+00 b0 01 00 00 00 20 00 00 60 00 00 00 00 00 00 \
+00 20 00 08 00 00 00 00 00 00 00 08 00 01 00 00 \
+00 00 00 08 00 64 00 00 \
+00 01 00 08 00 00 00 01 \
+00 20 00 08 00 00 00 01 00 00 00 08 00 02 00 00 \
+00 00 00 08 00 c8 00 00 \
+00 01 00 08 00 00 00 02 \
+00 20 00 08 00 00 00 02 00 00 00 08 00 03 00 00 \
+00 00 00 08 00 c8 00 00 \
+00 01 00 08 00 00 00 03 \
+ff ff 00 3b 00 00 15 40 00 00 00 01 00 00 00 00 \
+68 61 73 68 00 00 00 00 00 00 00 00 00 00 00 00 \
+00 00 00 00 00 00 00 00 \
+80 00 18 04 ff ff ff 00 80 00 1a 02 ff ff 80 00 \
+14 01 ff 00 00 00 00 00 \
+"], [0], [dnl
+NXST_GROUP_DESC reply (xid=0x4):
+ group_id=8192,type=select,selection_method=hash,fields(ip_dst=255.255.255.0,nw_proto,tcp_src),bucket=bucket_id:0,weight:100,watch_port:1,actions=output:1,bucket=bucket_id:1,weight:200,watch_port:2,actions=output:2,bucket=bucket_id:2,weight:200,watch_port:3,actions=output:3
+])
+AT_CLEANUP
+
AT_SETUP([OFPST_GROUP_DESC reply - OF1.1])
AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
AT_CHECK([ovs-ofctl ofp-print "\
AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
AT_CHECK([ovs-ofctl ofp-print "\
06 13 00 d8 00 00 00 02 00 07 00 00 00 00 00 00 \
-00 88 01 00 00 00 20 00 00 78 00 00 00 00 00 00 \
+00 c8 01 00 00 00 20 00 00 78 00 00 00 00 00 00 \
00 28 00 10 00 00 00 00 00 00 00 10 00 00 00 01 \
00 00 00 00 00 00 00 00 00 00 00 08 00 64 00 00 \
00 01 00 08 00 00 00 01 \
14 01 ff 00 00 00 00 00 \
"], [0], [dnl
OFPST_GROUP_DESC reply (OF1.5) (xid=0x2):
- group_id=8192,type=select,selection_method=hash,fields=ip_dst=255.255.255.0,nw_proto,tcp_src,bucket=bucket_id:0,weight:100,watch_port:1,actions=output:1,bucket=bucket_id:1,weight:200,watch_port:2,actions=output:2,bucket=bucket_id:2,weight:200,watch_port:3,actions=output:3
+ group_id=8192,type=select,selection_method=hash,fields(ip_dst=255.255.255.0,nw_proto,tcp_src),bucket=bucket_id:0,weight:100,watch_port:1,actions=output:1,bucket=bucket_id:1,weight:200,watch_port:2,actions=output:2,bucket=bucket_id:2,weight:200,watch_port:3,actions=output:3
+])
+AT_CLEANUP
+
+AT_SETUP([NXST_GROUP_FEATURES request])
+AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 10 00 18 00 00 00 04 ff ff 00 00 00 00 23 20 00 00 00 09 00 00 00 00 \
+"], [0], [NXST_GROUP_FEATURES request (xid=0x4):
])
AT_CLEANUP
])
AT_CLEANUP
+AT_SETUP([NXST_GROUP_FEATURES reply])
+AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 11 00 40 00 00 00 04 ff ff 00 00 00 00 23 20 00 00 00 09 00 00 00 00 \
+00 00 00 0f 00 00 00 0f \
+00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 \
+00 00 00 01 00 00 00 07 00 00 00 0f 00 00 00 1f \
+"], [0], [dnl
+NXST_GROUP_FEATURES reply (xid=0x4):
+ Group table:
+ Types: 0xf
+ Capabilities: 0xf
+ all group:
+ max_groups=0x1
+ actions: output
+ select group:
+ max_groups=0x2
+ actions: output set_vlan_vid set_vlan_pcp
+ indirect group:
+ max_groups=0x3
+ actions: output set_vlan_vid set_vlan_pcp strip_vlan
+ fast failover group:
+ max_groups=0x4
+ actions: output set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src
+])
+AT_CLEANUP
+
AT_SETUP([OFPST_GROUP_FEATURES reply])
AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
AT_CHECK([ovs-ofctl ofp-print "\
AT_SETUP([OFPST_PORT_DESC request - OF1.5])
AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
AT_CHECK([ovs-ofctl ofp-print "\
-06 12 00 14 00 00 00 02 00 0d 00 00 00 00 00 00 \
-00 00 00 05"], [0], [dnl
+06 12 00 18 00 00 00 02 00 0d 00 00 00 00 00 00 \
+00 00 00 05 00 00 00 00"], [0], [dnl
OFPST_PORT_DESC request (OF1.5) (xid=0x2): port=5
])
AT_CLEANUP
00 05 00 10 00 00 00 02 00 00 00 02 00 00 00 00
"], [0], [dnl
OFPT_METER_MOD (OF1.3) (xid=0x8501d738): ***decode error: OFPMMFC_BAD_BAND***
+00000000 04 1d 00 20 85 01 d7 38-00 00 00 00 00 00 00 01 |... ...8........|
+00000010 00 05 00 10 00 00 00 02-00 00 00 02 00 00 00 00 |................|
])
AT_CLEANUP
04 1d 00 10 28 a6 26 52 00 08 00 00 00 00 00 01
"], [0], [dnl
OFPT_METER_MOD (OF1.3) (xid=0x28a62652): ***decode error: OFPMMFC_BAD_COMMAND***
+00000000 04 1d 00 10 28 a6 26 52-00 08 00 00 00 00 00 01 |....@{:@.&R........|
])
AT_CLEANUP
00 01 00 10 00 00 00 02 00 00 00 02 00 00 00 00 \
"], [0], [dnl
OFPT_METER_MOD (OF1.3) (xid=0x82b3a1a4): ***decode error: OFPMMFC_BAD_FLAGS***
+00000000 04 1d 00 20 82 b3 a1 a4-00 00 00 03 00 00 00 01 |... ............|
+00000010 00 01 00 10 00 00 00 02-00 00 00 02 00 00 00 00 |................|
])
AT_CLEANUP
00 01 3a 01 80 00 2a 02 80 00 2c 04 80 00 2e 04 \
80 00 30 06 80 00 32 06 80 00 1a 02 80 00 1c 02 \
80 00 1e 02 80 00 20 02 80 00 22 02 80 00 24 02 \
-"], [0], [OFPST_TABLE_FEATURES reply (OF1.3) (xid=0xd5):
+"], [0], [OFPST_TABLE_FEATURES reply (OF1.3) (xid=0xd5): flags=[[more]]
table 0 ("table0"):
metadata: match=0xffffffffffffffff write=0xffffffffffffffff
max_entries=1000000
instructions (table miss and others):
next tables: 1-253
- instructions: apply_actions,clear_actions,write_actions,write_metadata,goto_table
+ instructions: apply_actions clear_actions write_actions write_metadata goto_table
Write-Actions and Apply-Actions features:
actions: output group set_field strip_vlan push_vlan mod_nw_ttl dec_ttl set_mpls_ttl dec_mpls_ttl push_mpls pop_mpls set_queue
- supported on Set-Field: tun_id tun_src tun_dst metadata in_port in_port_oxm pkt_mark reg0 reg1 reg2 reg3 reg4 reg5 reg6 reg7 eth_src eth_dst vlan_tci vlan_vid vlan_pcp mpls_label mpls_tc ip_src ip_dst ipv6_src ipv6_dst nw_tos ip_dscp nw_ecn nw_ttl arp_op arp_spa arp_tpa arp_sha arp_tha tcp_src tcp_dst udp_src udp_dst sctp_src sctp_dst
+ supported on Set-Field: tun_{id,src,dst} metadata in_{port,port_oxm} pkt_mark reg0...reg7 eth_{src,dst} vlan_{tci,vid,pcp} mpls_{label,tc} ip_{src,dst} ipv6_{src,dst} nw_tos ip_dscp nw_{ecn,ttl} arp_{op,spa,tpa,sha,tha} tcp_{src,dst} udp_{src,dst} sctp_{src,dst}
matching:
- tun_id: exact match or wildcard
- tun_src: exact match or wildcard
- tun_dst: exact match or wildcard
- metadata: exact match or wildcard
- in_port: exact match or wildcard
- in_port_oxm: exact match or wildcard
- pkt_mark: exact match or wildcard
- reg0: exact match or wildcard
- reg1: exact match or wildcard
- reg2: exact match or wildcard
- reg3: exact match or wildcard
- reg4: exact match or wildcard
- reg5: exact match or wildcard
- reg6: exact match or wildcard
- reg7: exact match or wildcard
- eth_src: exact match or wildcard
- eth_dst: exact match or wildcard
- eth_type: exact match or wildcard
- vlan_tci: exact match or wildcard
- vlan_vid: exact match or wildcard
- vlan_pcp: exact match or wildcard
- mpls_label: exact match or wildcard
- mpls_tc: exact match or wildcard
- mpls_bos: exact match or wildcard
- ip_src: exact match or wildcard
- ip_dst: exact match or wildcard
- ipv6_src: exact match or wildcard
- ipv6_dst: exact match or wildcard
- ipv6_label: exact match or wildcard
- nw_proto: exact match or wildcard
- nw_tos: exact match or wildcard
- ip_dscp: exact match or wildcard
- nw_ecn: exact match or wildcard
- nw_ttl: exact match or wildcard
- ip_frag: exact match or wildcard
- arp_op: exact match or wildcard
- arp_spa: exact match or wildcard
- arp_tpa: exact match or wildcard
- arp_sha: exact match or wildcard
- arp_tha: exact match or wildcard
- tcp_src: exact match or wildcard
- tcp_dst: exact match or wildcard
- tcp_flags: exact match or wildcard
- udp_src: exact match or wildcard
- udp_dst: exact match or wildcard
- sctp_src: exact match or wildcard
- sctp_dst: exact match or wildcard
- icmp_type: exact match or wildcard
- icmp_code: exact match or wildcard
- icmpv6_type: exact match or wildcard
- icmpv6_code: exact match or wildcard
- nd_target: exact match or wildcard
- nd_sll: exact match or wildcard
- nd_tll: exact match or wildcard
+ exact match or wildcard: tun_{id,src,dst} metadata in_{port,port_oxm} pkt_mark reg0...reg7 eth_{src,dst,type} vlan_{tci,vid,pcp} mpls_{label,tc,bos} ip_{src,dst} ipv6_{src,dst,label} nw_{proto,tos} ip_dscp nw_{ecn,ttl} ip_frag arp_{op,spa,tpa,sha,tha} tcp_{src,dst,flags} udp_{src,dst} sctp_{src,dst} icmp_{type,code} icmpv6_{type,code} nd_{target,sll,tll}
])
AT_CLEANUP
])
AT_CLEANUP
+AT_SETUP([OFPST_QUEUE_DESC request - OF1.4])
+AT_KEYWORDS([ofp-print OFPT_QUEUE_GET_CONFIG_REQUEST])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 12 00 18 00 00 00 01 00 0f 00 00 00 00 00 00 \
+00 00 00 01 00 00 00 02"], [0],
+ [OFPST_QUEUE_DESC request (OF1.4) (xid=0x1): port=1 queue=2
+])
+AT_CLEANUP
+
AT_SETUP([OFPT_QUEUE_GET_CONFIG_REPLY - OF1.0])
AT_KEYWORDS([ofp-print])
AT_CHECK([ovs-ofctl ofp-print "01 15 00 40 00 00 00 01 \
00 00 44 44 00 08 00 00 \
"], [0], [dnl
OFPT_QUEUE_GET_CONFIG_REPLY (xid=0x1): port=1
+queue 17476:
queue 21845: min_rate:50.0% max_rate:75.0%
+])
+AT_CLEANUP
+
+AT_SETUP([OFPT_QUEUE_GET_CONFIG_REPLY - OF1.1])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "02 17 00 40 00 00 00 01 \
+00 00 00 01 00 00 00 00 \
+00 00 55 55 00 28 00 00 \
+00 01 00 10 00 00 00 00 01 f4 00 00 00 00 00 00 \
+00 02 00 10 00 00 00 00 02 ee 00 00 00 00 00 00 \
+00 00 44 44 00 08 00 00 \
+"], [0], [dnl
+OFPT_QUEUE_GET_CONFIG_REPLY (OF1.1) (xid=0x1): port=1
queue 17476:
+queue 21845: min_rate:50.0% max_rate:75.0%
])
AT_CLEANUP
00 00 44 44 00 08 00 01 00 10 00 00 00 00 00 00 \
"], [0], [dnl
OFPT_QUEUE_GET_CONFIG_REPLY (OF1.2) (xid=0x1): port=1
+queue 17476:
queue 21845: min_rate:50.0% max_rate:75.0%
+])
+AT_CLEANUP
+
+AT_SETUP([OFPT_QUEUE_GET_CONFIG_REPLY - OF1.3])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "04 17 00 50 00 00 00 01 \
+00 00 00 01 00 00 00 00 \
+00 00 55 55 00 00 00 01 00 30 00 00 00 00 00 00 \
+00 01 00 10 00 00 00 00 01 f4 00 00 00 00 00 00 \
+00 02 00 10 00 00 00 00 02 ee 00 00 00 00 00 00 \
+00 00 44 44 00 08 00 01 00 10 00 00 00 00 00 00 \
+"], [0], [dnl
+OFPT_QUEUE_GET_CONFIG_REPLY (OF1.3) (xid=0x1): port=1
queue 17476:
+queue 21845: min_rate:50.0% max_rate:75.0%
+])
+AT_CLEANUP
+
+# OF1.4 renamed OFPT_QUEUE_GET_CONFIG_REPLY to OFPST_QUEUE_DESC.
+AT_SETUP([OFPST_QUEUE_DESC reply - OF1.4])
+AT_KEYWORDS([ofp-print OFPT_QUEUE_GET_CONFIG_REPLY])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 13 00 48 00 00 00 01 00 0f 00 00 00 00 00 00 \
+
+00 00 00 01 00 00 55 55 00 20 00 00 00 00 00 00 \
+00 01 00 08 01 f4 00 00 \
+00 02 00 08 02 ee 00 00 \
+
+00 00 00 02 00 00 44 44 00 18 00 00 00 00 00 00 \
+00 02 00 08 00 64 00 00 \
+"], [0], [dnl
+OFPST_QUEUE_DESC reply (OF1.4) (xid=0x1): port=1
+queue 21845: min_rate:50.0% max_rate:75.0%
+port=2
+queue 17476: max_rate:10.0%
])
AT_CLEANUP
AT_SETUP([OFPT_SET_ASYNC - OF1.3])
AT_KEYWORDS([ofp-print])
+dnl This message has bit 12 set for the PACKET_IN messages (master and slave).
+dnl Those aren't supported bits so they get silently ignored on decoding.
+dnl That seems reasonable because OF1.3 doesn't define any error codes for
+dnl OFPT_SET_ASYNC.
AT_CHECK([ovs-ofctl ofp-print "\
04 1c 00 20 00 00 00 00 00 00 10 05 00 00 10 07 \
00 00 00 03 00 00 00 07 00 00 00 00 00 00 00 03 \
"], [0], [dnl
OFPT_SET_ASYNC (OF1.3) (xid=0x0):
master:
- PACKET_IN: no_match invalid_ttl 12
+ PACKET_IN: no_match invalid_ttl
PORT_STATUS: add delete
FLOW_REMOVED: (off)
+ ROLE_STATUS: (off)
+ TABLE_STATUS: (off)
+ REQUESTFORWARD: (off)
slave:
- PACKET_IN: no_match action invalid_ttl 12
+ PACKET_IN: no_match action invalid_ttl
PORT_STATUS: add delete modify
FLOW_REMOVED: idle hard
+ ROLE_STATUS: (off)
+ TABLE_STATUS: (off)
+ REQUESTFORWARD: (off)
])
AT_CLEANUP
])
AT_CLEANUP
+AT_SETUP([OFP_ROLE_STATUS - master, experimenter - OF1.3])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+04 04 00 20 00 00 00 0a 4f 4e 46 00 00 00 07 77 \
+00 00 00 02 02 00 00 00 ff ff ff ff ff ff ff ff \
+"], [0], [dnl
+ONFT_ROLE_STATUS (OF1.3) (xid=0xa): role=master reason=experimenter_data_changed
+])
+AT_CLEANUP
+
+AT_SETUP([OFP_ROLE_STATUS - master, config - OF1.3])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+04 04 00 20 00 00 00 0a 4f 4e 46 00 00 00 07 77 \
+00 00 00 02 01 00 00 00 ff ff ff ff ff ff ff ff \
+"], [0], [dnl
+ONFT_ROLE_STATUS (OF1.3) (xid=0xa): role=master reason=configuration_changed
+])
+AT_CLEANUP
+
+AT_SETUP([OFP_ROLE_STATUS - master, config,generation - OF1.3])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+04 04 00 20 00 00 00 0a 4f 4e 46 00 00 00 07 77 \
+00 00 00 02 01 00 00 00 00 00 00 00 00 00 00 10 \
+"], [0], [dnl
+ONFT_ROLE_STATUS (OF1.3) (xid=0xa): role=master generation_id=16 reason=configuration_changed
+])
+AT_CLEANUP
+
AT_SETUP([OFP_ROLE_STATUS - master, experimenter - OF1.4])
AT_KEYWORDS([ofp-print])
AT_CHECK([ovs-ofctl ofp-print "\
])
AT_CLEANUP
+AT_SETUP([OFP_REQUESTFORWARD - OF1.4])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 20 00 18 00 00 00 02 \
+05 0f 00 10 02 00 00 00 \
+00 00 00 00 00 00 00 01 \
+"], [0], [dnl
+OFPT_REQUESTFORWARD (OF1.4) (xid=0x2): reason=group_mod
+ ADD group_id=1,type=all
+])
+AT_CLEANUP
+
+AT_SETUP([OFP_REQUESTFORWARD - OF1.4])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 20 00 18 00 00 00 02 \
+05 0f 00 10 02 00 00 00 \
+00 01 01 00 00 00 00 01 \
+"], [0], [dnl
+OFPT_REQUESTFORWARD (OF1.4) (xid=0x2): reason=group_mod
+ MOD group_id=1,type=select
+])
+AT_CLEANUP
+
+AT_SETUP([OFP_REQUESTFORWARD - OF1.4])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 20 00 18 00 00 00 02 \
+05 1d 00 10 02 00 00 00 \
+00 00 00 00 00 00 00 01 \
+"], [0], [dnl
+OFPT_REQUESTFORWARD (OF1.4) (xid=0x2): reason=meter_mod ADD meter=1 bands=
+])
+AT_CLEANUP
+
+AT_SETUP([OFP_REQUESTFORWARD - OF1.4])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 20 00 18 00 00 00 02 \
+05 1d 00 10 02 00 00 00 \
+00 01 01 00 00 00 00 01 \
+"], [0], [dnl
+OFPT_REQUESTFORWARD (OF1.4) (xid=0x2): reason=meter_mod MOD meter=1 flags:0x100 bands=
+])
+AT_CLEANUP
+
+AT_SETUP([NXT_REQUESTFORWARD - inner NXT_GROUP_MOD])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+dnl OF version 1.0; type=extension:
+01 04 \
+dnl size in bytes:
+00 b8 \
+dnl xid:
+00 00 00 02 \
+dnl Nicira vendor number:
+00 00 23 20 \
+dnl subtype (message id number = 132 in this case)
+00 00 00 84 \
+dnl inner msg copied and pasted from NXT_GROUP_MOD test above:
+01 04 00 a8 00 00 00 02 00 00 23 20 00 00 00 1f 00 00 01 00 87 65 43 21 \
+00 60 00 00 ff ff ff ff 00 20 00 08 00 00 00 00 00 00 00 08 00 01 00 00 \
+00 00 00 08 00 64 00 00 00 01 00 08 00 00 00 01 00 20 00 08 00 00 00 01 \
+00 00 00 08 00 02 00 00 00 00 00 08 00 c8 00 00 00 01 00 08 00 00 00 02 \
+00 20 00 08 00 00 00 02 00 00 00 08 00 03 00 00 00 00 00 08 00 c8 00 00 \
+00 01 00 08 00 00 00 03 ff ff 00 28 00 00 15 40 00 00 00 01 00 00 00 00 \
+68 61 73 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 \
+"], [0], [dnl
+NXT_REQUESTFORWARD (xid=0x2): reason=group_mod
+ ADD group_id=2271560481,type=select,selection_method=hash,selection_method_param=7,bucket=bucket_id:0,weight:100,watch_port:1,actions=output:1,bucket=bucket_id:1,weight:200,watch_port:2,actions=output:2,bucket=bucket_id:2,weight:200,watch_port:3,actions=output:3
+])
+AT_CLEANUP
+
+AT_SETUP([NXT_REQUESTFORWARD - inner OFPT_GROUP_MOD - OF1.1])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+dnl OF Version 1.1; type=extension:
+02 04 \
+dnl size in bytes:
+00 80 \
+dnl xid:
+00 00 00 02 \
+dnl Nicira vendor number:
+00 00 23 20 \
+dnl subtype (message id number = 132 in this case)
+00 00 00 84 \
+dnl inner msg copied and pasted from OFPT_GROUP_MOD OF1.1 test above:
+02 0f 00 70 11 22 33 44 00 00 01 00 87 65 43 21 \
+00 20 00 64 00 00 00 01 ff ff ff ff 00 00 00 00 \
+00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 00 \
+00 20 00 c8 00 00 00 02 ff ff ff ff 00 00 00 00 \
+00 00 00 10 00 00 00 02 00 00 00 00 00 00 00 00 \
+00 20 00 c8 00 00 00 03 ff ff ff ff 00 00 00 00 \
+00 00 00 10 00 00 00 03 00 00 00 00 00 00 00 00 \
+"], [0], [dnl
+NXT_REQUESTFORWARD (OF1.1) (xid=0x2): reason=group_mod
+ ADD group_id=2271560481,type=select,bucket=weight:100,watch_port:1,actions=output:1,bucket=weight:200,watch_port:2,actions=output:2,bucket=weight:200,watch_port:3,actions=output:3
+])
+AT_CLEANUP
+
+AT_SETUP([ONFT_REQUESTFORWARD - inner OFPT_METER_MOD - OF1.3])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+dnl OF Version 1.3; type=extension:
+04 04 \
+dnl size in bytes:
+00 30 \
+dnl xid:
+00 00 00 02 \
+dnl ONF vendor number:
+4F 4E 46 00 \
+dnl subtype (message id number = 2350 in this case)
+00 00 09 2e \
+dnl inner msg copied and pasted from the valid OFPT_METER_MOD OF1.3 test:
+04 1d 00 20 00 00 00 02 00 00 00 0d 00 00 00 05 \
+00 01 00 10 00 00 04 00 00 00 00 80 00 00 00 00 \
+"], [0], [dnl
+ONFT_REQUESTFORWARD (OF1.3) (xid=0x2): reason=meter_mod ADD meter=5 kbps burst stats bands=
+type=drop rate=1024 burst_size=128
+])
+AT_CLEANUP
+
AT_SETUP([NXT_SET_PACKET_IN])
AT_KEYWORDS([ofp-print])
AT_CHECK([ovs-ofctl ofp-print "\
01 04 00 14 00 00 00 02 00 00 23 20 00 00 00 10 \
00 00 00 01 \
"], [0], [dnl
-NXT_SET_PACKET_IN_FORMAT (xid=0x2): format=nxm
+NXT_SET_PACKET_IN_FORMAT (xid=0x2): format=nxt_packet_in
])
AT_CLEANUP
00 55 00 56 00 00 00 00 00 00 00 00 50 02 00 00 \
31 6d 00 00 00 00 00 00 00 00 \
"], [0], [dnl
-NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1 tun_id=0x6 metadata=0x5a5a5a5a5a5a5a5a reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
-tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86,tcp_flags=syn tcp_csum:316d
+NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,metadata=0x5a5a5a5a5a5a5a5a,in_port=1 (via action) data_len=64 (unbuffered)
+tcp,dl_vlan=80,dl_vlan_pcp=0,vlan_tci1=0x0000,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86,tcp_flags=syn tcp_csum:316d
])
AT_CLEANUP
00 55 00 56 00 00 00 00 00 00 00 00 50 01 00 00 \
31 6d 00 00 00 00 00 00 00 00 \
" 3], [0], [dnl
-NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1 tun_id=0x6 metadata=0x5a5a5a5a5a5a5a5a reg0=0x1 reg1=0x2 reg2=0x3 reg3=0x4 reg4=0x5 (via action) data_len=64 (unbuffered)
-tcp,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86,tcp_flags=fin tcp_csum:316d
+NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 reg0=0x1,reg1=0x2,reg2=0x3,reg3=0x4,reg4=0x5,tun_id=0x6,metadata=0x5a5a5a5a5a5a5a5a,in_port=1 (via action) data_len=64 (unbuffered)
+tcp,dl_vlan=80,dl_vlan_pcp=0,vlan_tci1=0x0000,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86,tcp_flags=fin tcp_csum:316d
00000000 82 82 82 82 82 82 80 81-81 81 81 81 81 00 00 50
00000010 08 00 45 00 00 28 00 00-00 00 00 06 32 05 53 53
00000020 53 53 54 54 54 54 00 55-00 56 00 00 00 00 00 00
])
AT_CLEANUP
+AT_SETUP([NX_PACKET_IN2])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "
+01 04 0098 00000000 00002320 0000001e
+0000 0034
+ 82 82 82 82 82 82 80 81 81 81 81 81 81 00 00 50
+ 08 00 45 00 00 28 00 00 00 00 00 06 32 05 53 53
+ 53 53 54 54 54 54 00 55 00 56 00 00 00 00 00 00 00000000
+0001 0008 00000040
+0002 0008 00000114
+0003 0005 07 000000
+0004 0010 00000000 fedcba9876543210
+0005 0005 01 000000
+0006 0010 80000408 5a5a5a5a5a5a5a5a
+0007 0009 0102030405 00000000000000
+"
+], [0], [dnl
+NXT_PACKET_IN2 (xid=0x0): table_id=7 cookie=0xfedcba9876543210 total_len=64 metadata=0x5a5a5a5a5a5a5a5a (via action) data_len=48 buffer=0x00000114
+ userdata=01.02.03.04.05
+ip,dl_vlan=80,dl_vlan_pcp=0,vlan_tci1=0x0000,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=0.0.0.0,nw_dst=0.0.0.0,nw_proto=0,nw_tos=0,nw_ecn=0,nw_ttl=0
+])
+AT_CLEANUP
+
AT_SETUP([NXT_SET_ASYNC_CONFIG])
AT_KEYWORDS([ofp-print])
+dnl This message has bit 12 set for the PACKET_IN messages (master and slave).
+dnl Those aren't supported bits so they get silently ignored on decoding.
AT_CHECK([ovs-ofctl ofp-print "\
01 04 00 28 00 00 00 00 00 00 23 20 00 00 00 13 \
00 00 10 05 00 00 10 07 00 00 00 03 00 00 00 07 \
"], [0], [dnl
NXT_SET_ASYNC_CONFIG (xid=0x0):
master:
- PACKET_IN: no_match invalid_ttl 12
+ PACKET_IN: no_match invalid_ttl
PORT_STATUS: add delete
FLOW_REMOVED: (off)
+ ROLE_STATUS: (off)
+ TABLE_STATUS: (off)
+ REQUESTFORWARD: (off)
slave:
- PACKET_IN: no_match action invalid_ttl 12
+ PACKET_IN: no_match action invalid_ttl
PORT_STATUS: add delete modify
FLOW_REMOVED: idle hard
+ ROLE_STATUS: (off)
+ TABLE_STATUS: (off)
+ REQUESTFORWARD: (off)
+])
+AT_CLEANUP
+
+AT_SETUP([OFPT_SET_ASYNC_CONFIG])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 1c 00 38 00 00 00 02 00 00 00 08 00 00 00 05 \
+00 01 00 08 00 00 00 02 00 02 00 08 00 00 00 02 \
+00 03 00 08 00 00 00 05 00 04 00 08 00 00 00 1c \
+00 05 00 08 00 00 00 05 \
+"], [0], [dnl
+OFPT_SET_ASYNC (OF1.4) (xid=0x2):
+ master:
+ PACKET_IN: action
+ PORT_STATUS: add modify
+ FLOW_REMOVED: idle delete
+ ROLE_STATUS: (off)
+ TABLE_STATUS: (off)
+ REQUESTFORWARD: (off)
+
+ slave:
+ PACKET_IN: no_match invalid_ttl
+ PORT_STATUS: delete
+ FLOW_REMOVED: delete group_delete meter_delete
+ ROLE_STATUS: (off)
+ TABLE_STATUS: (off)
+ REQUESTFORWARD: (off)
+])
+AT_CLEANUP
+
+AT_SETUP([OFPT_SET_ASYNC_CONFIG - invalid mask - OF1.4])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 1c 00 38 00 00 00 02 00 00 00 08 00 00 00 40 \
+00 01 00 08 00 00 00 02 00 02 00 08 00 00 00 02 \
+00 03 00 08 00 00 00 05 00 04 00 08 00 00 00 1c \
+00 05 00 08 00 00 00 05 \
+"], [0], [dnl
+OFPT_SET_ASYNC (OF1.4) (xid=0x2): ***decode error: OFPACFC_INVALID***
+00000000 05 1c 00 38 00 00 00 02-00 00 00 08 00 00 00 40 |...8...........@|
+00000010 00 01 00 08 00 00 00 02-00 02 00 08 00 00 00 02 |................|
+00000020 00 03 00 08 00 00 00 05-00 04 00 08 00 00 00 1c |................|
+00000030 00 05 00 08 00 00 00 05- |........ |
+], [stderr])
+AT_CHECK([sed 's/.*|//' stderr], [0],
+ [bad value 0x40 for PACKET_IN (allowed mask 0x3f)
+])
+AT_CLEANUP
+
+AT_SETUP([OFPT_SET_ASYNC_CONFIG - unsupported configuration - OF1.4])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 1c 00 38 00 00 00 02 00 00 00 08 00 00 00 05 \
+00 11 00 08 00 00 00 02 00 02 00 08 00 00 00 02 \
+00 03 00 08 00 00 00 05 00 04 00 08 00 00 00 1c \
+00 05 00 08 00 00 00 05\
+"], [0], [dnl
+OFPT_SET_ASYNC (OF1.4) (xid=0x2): ***decode error: OFPACFC_UNSUPPORTED***
+00000000 05 1c 00 38 00 00 00 02-00 00 00 08 00 00 00 05 |...8............|
+00000010 00 11 00 08 00 00 00 02-00 02 00 08 00 00 00 02 |................|
+00000020 00 03 00 08 00 00 00 05-00 04 00 08 00 00 00 1c |................|
+00000030 00 05 00 08 00 00 00 05- |........ |
+], [stderr])
+AT_CHECK([sed 's/.*|//' stderr], [0],
+ [unknown async config property type 17
])
AT_CLEANUP
])
AT_CLEANUP
+AT_SETUP([NXT_GROUP_MOD add - OF1.0])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 04 00 a8 00 00 00 02 00 00 23 20 00 00 00 1f \
+00 00 01 00 87 65 43 21 \
+00 60 00 00 ff ff ff ff \
+\
+00 20 00 08 00 00 00 00 00 00 00 08 00 01 00 00 \
+00 00 00 08 00 64 00 00 00 01 00 08 00 00 00 01 \
+\
+00 20 00 08 00 00 00 01 00 00 00 08 00 02 00 00 \
+00 00 00 08 00 c8 00 00 00 01 00 08 00 00 00 02
+\
+00 20 00 08 00 00 00 02 00 00 00 08 00 03 00 00 \
+00 00 00 08 00 c8 00 00 00 01 00 08 00 00 00 03 \
+ff ff 00 28 00 00 15 40 00 00 00 01 00 00 00 00 \
+68 61 73 68 00 00 00 00 00 00 00 00 00 00 00 00 \
+00 00 00 00 00 00 00 07 \
+"], [0], [dnl
+NXT_GROUP_MOD (xid=0x2):
+ ADD group_id=2271560481,type=select,selection_method=hash,selection_method_param=7,bucket=bucket_id:0,weight:100,watch_port:1,actions=output:1,bucket=bucket_id:1,weight:200,watch_port:2,actions=output:2,bucket=bucket_id:2,weight:200,watch_port:3,actions=output:3
+])
+AT_CLEANUP
+
AT_SETUP([OFPT_GROUP_MOD - OF1.1])
AT_KEYWORDS([ofp-print])
AT_CHECK([ovs-ofctl ofp-print "\
])
AT_CLEANUP
+AT_SETUP([NXT_RESUME])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 04 0038 01020304 00002320 0000001c \
+0000 0012 ffffffffffff 102030405060 1234 000000000000 \
+0006 000a 00000002 fffd 000000000000
+"], [0], [dnl
+NXT_RESUME (xid=0x1020304): total_len=14 in_port=CONTROLLER (via no_match) data_len=14 (unbuffered)
+vlan_tci=0x0000,dl_src=10:20:30:40:50:60,dl_dst=ff:ff:ff:ff:ff:ff,dl_type=0x1234
+])
+AT_CLEANUP
+
AT_SETUP([NXST_FLOW request])
AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
AT_CHECK([ovs-ofctl ofp-print "\
01 10 00 20 00 00 00 04 ff ff 00 00 00 00 23 20 \
00 00 00 00 00 00 00 00 ff ff 00 00 ff 00 00 00 \
"], [0], [dnl
-NXST_FLOW request (xid=0x4): @&t@
+NXST_FLOW request (xid=0x4):
])
AT_CLEANUP
01 10 00 20 00 00 00 04 ff ff 00 00 00 00 23 20 \
00 00 00 01 00 00 00 00 ff ff 00 00 ff 00 00 00 \
"], [0], [dnl
-NXST_AGGREGATE request (xid=0x4): @&t@
+NXST_AGGREGATE request (xid=0x4):
])
AT_CLEANUP
AT_CLEANUP
-AT_SETUP([OFPT_BUNDLE_CONTROL - OPEN_REQUEST])
-AT_KEYWORDS([ofp-print])
+AT_SETUP([OFPT_BUNDLE_CONTROL - atomic OPEN_REQUEST])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 21 00 10 00 00 00 00 \
00 00 00 01 00 00 00 01 \
])
AT_CLEANUP
-AT_SETUP([OFPT_BUNDLE_CONTROL - OPEN_REQUEST])
-AT_KEYWORDS([ofp-print])
+AT_SETUP([OFPT_BUNDLE_CONTROL - ordered OPEN_REQUEST])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 21 00 10 00 00 00 00 \
00 00 00 01 00 00 00 02 \
])
AT_CLEANUP
-AT_SETUP([OFPT_BUNDLE_CONTROL - OPEN_REQUEST])
-AT_KEYWORDS([ofp-print])
+AT_SETUP([OFPT_BUNDLE_CONTROL - atomic ordered OPEN_REQUEST])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 21 00 10 00 00 00 00 \
00 00 00 01 00 00 00 03 \
AT_CLEANUP
AT_SETUP([OFPT_BUNDLE_CONTROL - OPEN_REPLY])
-AT_KEYWORDS([ofp-print])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 21 00 10 00 00 00 00 \
00 00 00 01 00 01 00 01 \
AT_CLEANUP
AT_SETUP([OFPT_BUNDLE_CONTROL - CLOSE_REQUEST])
-AT_KEYWORDS([ofp-print])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 21 00 10 00 00 00 00 \
00 00 00 01 00 02 00 01 \
AT_CLEANUP
AT_SETUP([OFPT_BUNDLE_CONTROL - CLOSE_REPLY])
-AT_KEYWORDS([ofp-print])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 21 00 10 00 00 00 00 \
00 00 00 01 00 03 00 01 \
AT_CLEANUP
AT_SETUP([OFPT_BUNDLE_CONTROL - COMMIT_REQUEST])
-AT_KEYWORDS([ofp-print])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 21 00 10 00 00 00 00 \
00 00 00 01 00 04 00 01 \
AT_CLEANUP
AT_SETUP([OFPT_BUNDLE_CONTROL - COMMIT_REPLY])
-AT_KEYWORDS([ofp-print])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 21 00 10 00 00 00 00 \
00 00 00 01 00 05 00 01 \
AT_CLEANUP
AT_SETUP([OFPT_BUNDLE_CONTROL - DISCARD_REQUEST])
-AT_KEYWORDS([ofp-print])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 21 00 10 00 00 00 00 \
00 00 00 01 00 06 00 01 \
AT_CLEANUP
AT_SETUP([OFPT_BUNDLE_CONTROL - DISCARD_REPLY])
-AT_KEYWORDS([ofp-print])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 21 00 10 00 00 00 00 \
00 00 00 01 00 07 00 01 \
AT_CLEANUP
AT_SETUP([OFPT_BUNDLE_ADD_MESSAGE - verify xid])
-AT_KEYWORDS([ofp-print])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 22 00 20 00 00 00 00 00 00 00 01 00 00 00 01 \
-02 00 00 08 00 00 00 01 00 00 00 00 00 00 00 00 \
+05 00 00 08 00 00 00 01 00 00 00 00 00 00 00 00 \
"], [0], [dnl
OFPT_BUNDLE_ADD_MESSAGE (OF1.4) (xid=0x0): ***decode error: OFPBFC_MSG_BAD_XID***
+00000000 05 22 00 20 00 00 00 00-00 00 00 01 00 00 00 01 |.". ............|
+00000010 05 00 00 08 00 00 00 01-00 00 00 00 00 00 00 00 |................|
])
AT_CLEANUP
AT_SETUP([OFPT_BUNDLE_ADD_MESSAGE - reject OFPT_HELLO])
-AT_KEYWORDS([ofp-print])
-AT_CHECK([ovs-ofctl ofp-print "\
+AT_KEYWORDS([ofp-print bundle])
+AT_CHECK([ovs-ofctl '-vPATTERN:console:%c|%p|%m' ofp-print "\
05 22 00 20 00 00 00 00 00 00 00 01 00 00 00 01 \
-02 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 \
+05 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 \
"], [0], [dnl
OFPT_BUNDLE_ADD_MESSAGE (OF1.4) (xid=0x0): ***decode error: OFPBFC_MSG_UNSUP***
+00000000 05 22 00 20 00 00 00 00-00 00 00 01 00 00 00 01 |.". ............|
+00000010 05 00 00 10 00 00 00 00-00 00 00 00 00 00 00 00 |................|
+], [dnl
+ofp_bundle|WARN|OFPT_HELLO message not allowed inside OFPT14_BUNDLE_ADD_MESSAGE
])
AT_CLEANUP
AT_SETUP([OFPT_BUNDLE_ADD_MESSAGE - FLOW_MOD])
-AT_KEYWORDS([ofp-print])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 22 00 a0 00 00 00 02 00 00 00 01 00 00 00 01 \
-03 0e 00 90 00 00 00 02 00 00 00 00 00 00 00 00 \
+05 0e 00 90 00 00 00 02 00 00 00 00 00 00 00 00 \
00 00 00 00 00 00 00 00 01 00 00 00 00 00 ff ff \
ff ff ff ff ff ff ff ff ff ff ff ff 00 00 00 00 \
00 01 00 42 80 00 00 04 00 00 00 01 80 00 08 06 \
"], [0], [dnl
OFPT_BUNDLE_ADD_MESSAGE (OF1.4) (xid=0x2):
bundle_id=0x1 flags=atomic
-OFPT_FLOW_MOD (OF1.2) (xid=0x2): ADD table:1 priority=65535,arp,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,arp_spa=192.168.0.2,arp_tpa=192.168.0.1,arp_op=2 actions=output:3
+OFPT_FLOW_MOD (OF1.4) (xid=0x2): ADD table:1 priority=65535,arp,in_port=1,vlan_tci=0x0000/0x1fff,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,arp_spa=192.168.0.2,arp_tpa=192.168.0.1,arp_op=2 actions=output:3
])
AT_CLEANUP
AT_SETUP([OFPT_BUNDLE_ADD_MESSAGE - PORT_MOD])
-AT_KEYWORDS([ofp-print])
+AT_KEYWORDS([ofp-print bundle])
AT_CHECK([ovs-ofctl ofp-print "\
05 22 00 38 00 00 00 03 00 00 00 01 00 00 00 01 \
05 10 00 28 00 00 00 03 00 00 00 03 00 00 00 00 \
"], [0], [dnl
OFPT_BUNDLE_ADD_MESSAGE (OF1.4) (xid=0x3):
bundle_id=0x1 flags=atomic
-OFPT_PORT_MOD (OF1.4) (xid=0x3):port: 3: addr:50:54:00:00:00:01
+OFPT_PORT_MOD (OF1.4) (xid=0x3): port: 3: addr:50:54:00:00:00:01
config: PORT_DOWN
mask: PORT_DOWN
advertise: 10MB-HD
])
AT_CLEANUP
+
+AT_SETUP([OFPT_BUNDLE_ADD_MESSAGE - GROUP_MOD])
+AT_KEYWORDS([ofp-print bundle])
+AT_CHECK([ovs-ofctl ofp-print "\
+06 22 00 c8 00 00 00 03 00 00 00 01 00 00 00 01 \
+06 0f 00 b8 00 00 00 03 00 00 01 00 87 65 43 21 \
+00 78 00 00 ff ff ff ff 00 28 00 10 00 00 00 00 \
+00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 00 \
+00 00 00 08 00 64 00 00 00 01 00 08 00 00 00 01 \
+00 28 00 10 00 00 00 01 00 00 00 10 00 00 00 02 \
+00 00 00 00 00 00 00 00 00 00 00 08 00 c8 00 00 \
+00 01 00 08 00 00 00 02 00 28 00 10 00 00 00 02 \
+00 00 00 10 00 00 00 03 00 00 00 00 00 00 00 00 \
+00 00 00 08 00 c8 00 00 00 01 00 08 00 00 00 03 \
+ff ff 00 28 00 00 15 40 00 00 00 01 00 00 00 00 \
+68 61 73 68 00 00 00 00 00 00 00 00 00 00 00 00 \
+00 00 00 00 00 00 00 07 \
+"], [0], [dnl
+OFPT_BUNDLE_ADD_MESSAGE (OF1.5) (xid=0x3):
+ bundle_id=0x1 flags=atomic
+OFPT_GROUP_MOD (OF1.5) (xid=0x3):
+ ADD group_id=2271560481,type=select,selection_method=hash,selection_method_param=7,bucket=bucket_id:0,weight:100,watch_port:1,actions=output:1,bucket=bucket_id:1,weight:200,watch_port:2,actions=output:2,bucket=bucket_id:2,weight:200,watch_port:3,actions=output:3
+])
+AT_CLEANUP
+
+AT_SETUP([OFPT_BUNDLE_ADD_MESSAGE - PACKET_OUT])
+AT_KEYWORDS([ofp-print bundle packet-out])
+AT_CHECK([ovs-ofctl ofp-print "\
+05 22 00 74 00 00 00 03 00 00 00 01 00 00 00 01 \
+05 0d 00 64 00 00 00 03 ff ff ff ff ff ff ff fe \
+00 10 00 00 00 00 00 00 00 00 00 10 ff ff ff fb \
+05 dc 00 00 00 00 00 00 50 54 00 00 00 05 50 54 \
+00 00 00 06 08 00 45 00 00 28 00 00 40 00 40 06 \
+b9 7c c0 a8 00 02 c0 a8 00 01 00 00 2b 60 00 00 \
+00 00 6a 4f 2b 58 50 14 00 00 6d 75 00 00 00 00 \
+00 00 00 00 \
+"], [0], [dnl
+OFPT_BUNDLE_ADD_MESSAGE (OF1.4) (xid=0x3):
+ bundle_id=0x1 flags=atomic
+OFPT_PACKET_OUT (OF1.4) (xid=0x3): in_port=LOCAL actions=FLOOD data_len=60
+tcp,vlan_tci=0x0000,dl_src=50:54:00:00:00:06,dl_dst=50:54:00:00:00:05,nw_src=192.168.0.2,nw_dst=192.168.0.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=11104,tcp_flags=rst|ack tcp_csum:6d75
+])
+AT_CLEANUP
+
+AT_SETUP([NXST_IPFIX_BRIDGE - request])
+AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 10 00 18 00 00 00 02 \
+ff ff 00 00 00 00 23 20 00 00 00 03 00 00 00 00 \
+"], [0], [dnl
+NXST_IPFIX_BRIDGE request (xid=0x2):
+])
+AT_CLEANUP
+
+AT_SETUP([NXST_IPFIX_BRIDGE - reply])
+AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 11 00 70 00 00 00 02 \
+ff ff 00 00 00 00 23 20 00 00 00 03 00 00 00 00\
+00 00 00 00 00 00 00 01 \
+00 00 00 00 00 00 00 10 \
+00 00 00 00 00 00 00 78 \
+00 00 00 00 00 00 00 f0 \
+00 00 00 00 00 00 00 00 \
+00 00 00 00 00 00 00 a0 \
+00 00 00 00 00 00 00 02 \
+00 00 00 00 00 00 00 03 \
+00 00 00 00 00 00 00 04 \
+00 00 00 00 00 00 00 05 \
+00 00 00 00 00 00 00 00 \
+"], [0], [dnl
+NXST_IPFIX_BRIDGE reply (xid=0x2):
+ bridge ipfix: flows=1, current flows=16, sampled pkts=120, ipv4 ok=240, ipv6 ok=0, tx pkts=4
+ pkts errs=160, ipv4 errs=2, ipv6 errs=3, tx errs=5
+])
+AT_CLEANUP
+
+AT_SETUP([NXST_IPFIX_FLOW - request])
+AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 10 00 18 00 00 00 02 \
+ff ff 00 00 00 00 23 20 00 00 00 04 00 00 00 00 \
+"], [0], [dnl
+NXST_IPFIX_FLOW request (xid=0x2):
+])
+AT_CLEANUP
+
+AT_SETUP([NXST_IPFIX_FLOW - reply])
+AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 11 00 C8 00 00 00 02 \
+ff ff 00 00 00 00 23 20 00 00 00 04 00 00 00 00\
+00 00 00 00 00 00 00 01 \
+00 00 00 00 00 00 00 10 \
+00 00 00 00 00 00 00 78 \
+00 00 00 00 00 00 00 f0 \
+00 00 00 00 00 00 00 00 \
+00 00 00 00 00 00 00 a0 \
+00 00 00 10 00 00 00 02 \
+00 00 00 00 00 00 00 03 \
+00 00 00 00 00 00 00 04 \
+00 00 00 00 00 00 00 05 \
+00 00 00 01 00 00 00 00 \
+00 00 00 00 00 00 00 01 \
+00 00 00 00 00 00 00 10 \
+00 00 00 00 00 00 00 78 \
+00 00 00 00 00 00 00 f0 \
+00 00 00 00 00 00 00 00 \
+00 00 00 00 00 00 00 a0 \
+00 00 00 10 00 00 00 02 \
+00 00 00 00 00 00 00 03 \
+00 00 00 00 00 00 00 04 \
+00 00 00 00 00 00 00 05 \
+00 00 00 02 00 00 00 00 \
+"], [0], [dnl
+NXST_IPFIX_FLOW reply (xid=0x2): 2 ids
+ id 1: flows=1, current flows=16, sampled pkts=120, ipv4 ok=240, ipv6 ok=0, tx pkts=4
+ pkts errs=160, ipv4 errs=68719476738, ipv6 errs=3, tx errs=5
+ id 2: flows=1, current flows=16, sampled pkts=120, ipv4 ok=240, ipv6 ok=0, tx pkts=4
+ pkts errs=160, ipv4 errs=68719476738, ipv6 errs=3, tx errs=5
+])
+AT_CLEANUP
+
+AT_SETUP([NXT_CT_FLUSH_ZONE])
+AT_KEYWORDS([ofp-print])
+AT_CHECK([ovs-ofctl ofp-print "\
+01 04 00 18 00 00 00 03 00 00 23 20 00 00 00 1d \
+00 00 00 00 00 00 00 0d \
+"], [0], [dnl
+NXT_CT_FLUSH_ZONE (xid=0x3): zone_id=13
+])
+AT_CLEANUP