diff options
author | Yuichi Ito <ito.yuichi0@gmail.com> | 2014-06-18 13:04:45 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-06-19 08:41:51 +0900 |
commit | cc6dcbabaa99c77e49fabf52445d2741fcaa7676 (patch) | |
tree | 868f189b7e92a4466849ca62a1a3e27dc2ec4093 | |
parent | a2fc54bd797e09649d82b78c84aea2bb35f746a7 (diff) |
sw test tool: Enable IPv6 flow label maskable
OF 1.3.4 spec (B.15.1 Changes) says:
Make IPv6 flow label maskable (EXT-101).
This patch makes IPv6 flow label maskable, and adds a test file for IPv6 flow label with masks.
Signed-off-by: Yuichi Ito <ito.yuichi0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/tests/switch/of13/match/28_IPV6_FLABEL_Mask.json | 927 | ||||
-rw-r--r-- | ryu/tests/switch/tester.py | 1 |
2 files changed, 928 insertions, 0 deletions
diff --git a/ryu/tests/switch/of13/match/28_IPV6_FLABEL_Mask.json b/ryu/tests/switch/of13/match/28_IPV6_FLABEL_Mask.json new file mode 100644 index 00000000..6d588713 --- /dev/null +++ b/ryu/tests/switch/of13/match/28_IPV6_FLABEL_Mask.json @@ -0,0 +1,927 @@ +[ + "match: 28_IPV6_FLABEL (Mask)", + { + "description":"ethernet/ipv6(flow_label=100)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:2'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "port":2 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "egress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ] + } + ] + }, + { + "description":"ethernet/ipv6(flow_label=100)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:CONTROLLER'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "max_len":65535, + "port":4294967293 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "PACKET_IN":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ] + } + ] + }, + { + "description":"ethernet/ipv6(flow_label=203)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:2'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "port":2 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='ba:bb:bb:bb:bb:bb', src='aa:aa:aa:aa:aa:aa', ethertype=34525)", + "ipv6(dst='b0::b0', flow_label=203, src='a0::a0', nxt=6, hop_limit=127, traffic_class=65)", + "tcp(dst_port=6789, option=str('\\x11' * 4), src_port=12345)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "table-miss":[ + 0 + ] + } + ] + }, + { + "description":"ethernet/vlan/ipv6(flow_label=100)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:2'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "port":2 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=33024)", + "vlan(pcp=3, cfi=0, vid=100, ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "egress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=33024)", + "vlan(pcp=3, cfi=0, vid=100, ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ] + } + ] + }, + { + "description":"ethernet/vlan/ipv6(flow_label=100)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:CONTROLLER'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "max_len":65535, + "port":4294967293 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=33024)", + "vlan(pcp=3, cfi=0, vid=100, ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "PACKET_IN":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=33024)", + "vlan(pcp=3, cfi=0, vid=100, ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ] + } + ] + }, + { + "description":"ethernet/vlan/ipv6(flow_label=203)/tcp-->'ipv6_flabel=96(mask=0x000ffff0),actions=output:2'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "port":2 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='ba:bb:bb:bb:bb:bb', src='aa:aa:aa:aa:aa:aa', ethertype=33024)", + "vlan(pcp=5, cfi=0, vid=203, ethertype=34525)", + "ipv6(dst='b0::b0', flow_label=203, src='a0::a0', nxt=6, hop_limit=127, traffic_class=65)", + "tcp(dst_port=6789, option=str('\\x11' * 4), src_port=12345)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "table-miss":[ + 0 + ] + } + ] + }, + { + "description":"ethernet/mpls/ipv6(flow_label=100)/tcp-->'actions=pop_mpls:0x86dd,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:2'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34887 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionPopMpls":{ + "ethertype":34525 + } + } + ], + "type":4 + } + }, + { + "OFPInstructionGotoTable":{ + "table_id":1 + } + } + ] + } + }, + { + "OFPFlowMod":{ + "table_id":1, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "port":2 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34887)", + "mpls(bsb=1, label=100, exp=3, ttl=64)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "egress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ] + } + ] + }, + { + "description":"ethernet/mpls/ipv6(flow_label=100)/tcp-->'actions=pop_mpls:0x86dd,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:CONTROLLER'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34887 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionPopMpls":{ + "ethertype":34525 + } + } + ], + "type":4 + } + }, + { + "OFPInstructionGotoTable":{ + "table_id":1 + } + } + ] + } + }, + { + "OFPFlowMod":{ + "table_id":1, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "max_len":65535, + "port":4294967293 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34887)", + "mpls(bsb=1, label=100, exp=3, ttl=64)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "PACKET_IN":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ] + } + ] + }, + { + "description":"ethernet/mpls/ipv6(flow_label=203)/tcp-->'actions=pop_mpls:0x86dd,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:2'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34887 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionPopMpls":{ + "ethertype":34525 + } + } + ], + "type":4 + } + }, + { + "OFPInstructionGotoTable":{ + "table_id":1 + } + } + ] + } + }, + { + "OFPFlowMod":{ + "table_id":1, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "port":2 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='ba:bb:bb:bb:bb:bb', src='aa:aa:aa:aa:aa:aa', ethertype=34887)", + "mpls(bsb=1, label=203, exp=5, ttl=127)", + "ipv6(dst='b0::b0', flow_label=203, src='a0::a0', nxt=6, hop_limit=127, traffic_class=65)", + "tcp(dst_port=6789, option=str('\\x11' * 4), src_port=12345)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "table-miss":[ + 1 + ] + } + ] + }, + { + "description":"ethernet/itag/ethernet/ipv6(flow_label=100)/tcp-->'actions=pop_pbb,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:2'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":35047 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionPopPbb":{} + } + ], + "type":4 + } + }, + { + "OFPInstructionGotoTable":{ + "table_id":1 + } + } + ] + } + }, + { + "OFPFlowMod":{ + "table_id":1, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "port":2 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=35047)", + "itag(sid=100)", + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "egress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ] + } + ] + }, + { + "description":"ethernet/itag/ethernet/ipv6(flow_label=100)/tcp-->'actions=pop_pbb,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:CONTROLLER'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":35047 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionPopPbb":{} + } + ], + "type":4 + } + }, + { + "OFPInstructionGotoTable":{ + "table_id":1 + } + } + ] + } + }, + { + "OFPFlowMod":{ + "table_id":1, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "max_len":65535, + "port":4294967293 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=35047)", + "itag(sid=100)", + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "PACKET_IN":[ + "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=34525)", + "ipv6(dst='20::20', flow_label=100, src='10::10', nxt=6, hop_limit=64, traffic_class=32)", + "tcp(dst_port=2222, option=str('\\x00' * 4), src_port=11111)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ] + } + ] + }, + { + "description":"ethernet/itag/ethernet/ipv6(flow_label=203)/tcp-->'actions=pop_pbb,goto_table:1','table_id:1,ipv6_flabel=96(mask=0x000ffff0),actions=output:2'", + "prerequisite":[ + { + "OFPFlowMod":{ + "table_id":0, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":35047 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionPopPbb":{} + } + ], + "type":4 + } + }, + { + "OFPInstructionGotoTable":{ + "table_id":1 + } + } + ] + } + }, + { + "OFPFlowMod":{ + "table_id":1, + "match":{ + "OFPMatch":{ + "oxm_fields":[ + { + "OXMTlv":{ + "field":"eth_type", + "value":34525 + } + }, + { + "OXMTlv":{ + "field":"ipv6_flabel", + "mask":1048560, + "value":96 + } + } + ] + } + }, + "instructions":[ + { + "OFPInstructionActions":{ + "actions":[ + { + "OFPActionOutput":{ + "port":2 + } + } + ], + "type":4 + } + } + ] + } + } + ], + "tests":[ + { + "ingress":[ + "ethernet(dst='ba:bb:bb:bb:bb:bb', src='aa:aa:aa:aa:aa:aa', ethertype=35047)", + "itag(sid=203)", + "ethernet(dst='ba:bb:bb:bb:bb:bb', src='aa:aa:aa:aa:aa:aa', ethertype=34525)", + "ipv6(dst='b0::b0', flow_label=203, src='a0::a0', nxt=6, hop_limit=127, traffic_class=65)", + "tcp(dst_port=6789, option=str('\\x11' * 4), src_port=12345)", + "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'" + ], + "table-miss":[ + 1 + ] + } + ] + } +] diff --git a/ryu/tests/switch/tester.py b/ryu/tests/switch/tester.py index 02463106..a59205ed 100644 --- a/ryu/tests/switch/tester.py +++ b/ryu/tests/switch/tester.py @@ -798,6 +798,7 @@ class OfTester(app_manager.RyuApp): def __reasm_match(match): """ reassemble match_fields. """ mask_lengths = {'vlan_vid': 12 + 1, + 'ipv6_flabel': 20, 'ipv6_exthdr': 9} match_fields = list() for key, united_value in match.iteritems(): |