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 <[email protected]>
---
.../switch/of13/match/28_IPV6_FLABEL_Mask.json | 927 ++++++++++++++++++++
ryu/tests/switch/tester.py | 1 +
2 files changed, 928 insertions(+)
create mode 100644 ryu/tests/switch/of13/match/28_IPV6_FLABEL_Mask.json
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 0000000..6d58871
--- /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 0246310..a59205e 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():
--
1.7.10.4
------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel