--- /dev/null
+[
+ "action: 23_SET_NW_TTL (IPv4)",
+ {
+ "description": "ethernet/ipv4(ttl=64)/tcp-->'eth_type=0x0800,actions=set_nw_ttl:32,output:2'",
+ "prerequisite":[
+ {
+ "OFPFlowMod":{
+ "table_id":0,
+ "match":{
+ "OFPMatch":{
+ "oxm_fields":[
+ {
+ "OXMTlv":{
+ "field":"eth_type",
+ "value":2048
+ }
+ }
+ ]
+ }
+ },
+ "instructions":[
+ {
+ "OFPInstructionActions":{
+ "actions":[
+ {
+ "OFPActionSetNwTtl":{
+ "nw_ttl":32
+ }
+ },
+ {
+ "OFPActionOutput":{
+ "port":2
+ }
+ }
+ ],
+ "type":4
+ }
+ }
+ ]
+ }
+ }
+ ],
+ "tests":[
+ {
+ "ingress":[
+ "ethernet(dst='22:22:22:22:22:22', src='12:11:11:11:11:11', ethertype=2048)",
+ "ipv4(tos=32, proto=6, src='192.168.10.10', dst='192.168.20.20', ttl=64)",
+ "tcp(dst_port=2222, option=bytes(b'\\x00' * 4), src_port=11111)",
+ "b'\\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=2048)",
+ "ipv4(tos=32, proto=6, src='192.168.10.10', dst='192.168.20.20', ttl=32)",
+ "tcp(dst_port=2222, option=bytes(b'\\x00' * 4), src_port=11111)",
+ "b'\\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/ipv4(ttl=64)/tcp-->'eth_type=0x0800,actions=set_nw_ttl:32,output:2'",
+ "prerequisite":[
+ {
+ "OFPFlowMod":{
+ "table_id":0,
+ "match":{
+ "OFPMatch":{
+ "oxm_fields":[
+ {
+ "OXMTlv":{
+ "field":"eth_type",
+ "value":2048
+ }
+ }
+ ]
+ }
+ },
+ "instructions":[
+ {
+ "OFPInstructionActions":{
+ "actions":[
+ {
+ "OFPActionSetNwTtl":{
+ "nw_ttl":32
+ }
+ },
+ {
+ "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=2048)",
+ "ipv4(tos=32, proto=6, src='192.168.10.10', dst='192.168.20.20', ttl=64)",
+ "tcp(dst_port=2222, option=bytes(b'\\x00' * 4), src_port=11111)",
+ "b'\\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=2048)",
+ "ipv4(tos=32, proto=6, src='192.168.10.10', dst='192.168.20.20', ttl=32)",
+ "tcp(dst_port=2222, option=bytes(b'\\x00' * 4), src_port=11111)",
+ "b'\\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/ipv4(ttl=64)/tcp-->'actions=pop_mpls:0x0800,goto_table:1','table_id:1,eth_type=0x0800,actions=set_nw_ttl:32,output:2'",
+ "prerequisite":[
+ {
+ "OFPFlowMod":{
+ "table_id":0,
+ "match":{
+ "OFPMatch":{
+ "oxm_fields":[
+ {
+ "OXMTlv":{
+ "field":"eth_type",
+ "value":34887
+ }
+ }
+ ]
+ }
+ },
+ "instructions":[
+ {
+ "OFPInstructionActions":{
+ "actions":[
+ {
+ "OFPActionPopMpls":{
+ "ethertype":2048
+ }
+ }
+ ],
+ "type":4
+ }
+ },
+ {
+ "OFPInstructionGotoTable":{
+ "table_id":1
+ }
+ }
+ ]
+ }
+ },
+ {
+ "OFPFlowMod":{
+ "table_id":1,
+ "match":{
+ "OFPMatch":{
+ "oxm_fields":[
+ {
+ "OXMTlv":{
+ "field":"eth_type",
+ "value":2048
+ }
+ }
+ ]
+ }
+ },
+ "instructions":[
+ {
+ "OFPInstructionActions":{
+ "actions":[
+ {
+ "OFPActionSetNwTtl":{
+ "nw_ttl":32
+ }
+ },
+ {
+ "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)",
+ "ipv4(tos=32, proto=6, src='192.168.10.10', dst='192.168.20.20', ttl=64)",
+ "tcp(dst_port=2222, option=bytes(b'\\x00' * 4), src_port=11111)",
+ "b'\\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=2048)",
+ "ipv4(tos=32, proto=6, src='192.168.10.10', dst='192.168.20.20', ttl=32)",
+ "tcp(dst_port=2222, option=bytes(b'\\x00' * 4), src_port=11111)",
+ "b'\\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/ipv4(ttl=64)/tcp-->'actions=pop_pbb,goto_table:1','table_id:1,eth_type=0x0800,actions=set_nw_ttl:32,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":2048
+ }
+ }
+ ]
+ }
+ },
+ "instructions":[
+ {
+ "OFPInstructionActions":{
+ "actions":[
+ {
+ "OFPActionSetNwTtl":{
+ "nw_ttl":32
+ }
+ },
+ {
+ "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=2048)",
+ "ipv4(tos=32, proto=6, src='192.168.10.10', dst='192.168.20.20', ttl=64)",
+ "tcp(dst_port=2222, option=bytes(b'\\x00' * 4), src_port=11111)",
+ "b'\\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=2048)",
+ "ipv4(tos=32, proto=6, src='192.168.10.10', dst='192.168.20.20', ttl=32)",
+ "tcp(dst_port=2222, option=bytes(b'\\x00' * 4), src_port=11111)",
+ "b'\\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'"
+ ]
+ }
+ ]
+ }
+]