Loxi support for Optical Transport extensions, onos-2472
Change-Id: I69b9a8839fd899aec531f68103b448dd93cbbe4a
diff --git a/test_data/of13/exp_port_desc_reply.data b/test_data/of13/exp_port_desc_reply.data
new file mode 100644
index 0000000..df1eeec
--- /dev/null
+++ b/test_data/of13/exp_port_desc_reply.data
@@ -0,0 +1,85 @@
+-- binary
+04 13 # version, type
+00 58 # length
+12 34 56 78 # xid
+ff ff # stats_type
+00 00 # flags
+00 00 00 00 # pad
+FF 00 00 07 # experimenter
+00 00 00 01 # subtype
+# entries[0]
+00 00 00 01 # port
+00 40 # length - ????????
+00 00 # pad
+00 00 00 00 00 00 # entries[0].hw_addr
+00 00 # pad
+69 6e 74 65 72 66 61 63 65 31 32 33 34 35 36 37 # entries[0].name
+00 00 00 60 # entries[0].config
+00 00 00 04 # entries[0].state
+# properties[0]
+00 02 # entries[0].properties[0].type
+00 18 # entries[0].properties[0].length ???????
+0C # port_signal_type OMSn = 2,OCH = 5,OTU2 = 12(oduclt-10),OTU4 = 14(oduclt-100)
+00 #reserved
+00 00 #pad
+# features[0]
+00 02
+00 10 # length - ????????
+00 00 00 00
+# layeres[0]
+03 # layer class (PORT=1,OCH=2,ODU=3,DUCLT=4)
+01 # signal_type; /*OFP(OTP/OCH/ODU/ODUCL)T_*/
+06 #(OTS_OMS=1,OMS_OCH=2,OPS_OCHr=3,OPSM_OTUk=4,OCH_OTUk=5,ODUk_ODUij=6,ODUk_ODUj21=7,
+ #ODUkh_ODUj21=8,ODU0_CBRx=9,ODUk_CBRx=10,ODUk_CBRxg=11,ODUk_RSn=12,ODUk_ATM=13,ODUk_ETH=14,ODUkh_ETH=15,ODUk_ETHPPOS=16
+00 00 00 00 00
+
+-- python
+ofp.message.exp_port_desc_stats_reply(
+ xid=0x12345678,
+ flags=0,
+ entries=[
+ ofp.exp_port_desc(
+ port_no=1,
+ hw_addr=[0,0,0,0,0,0],
+ name="interface1234567",
+ config=0x60,
+ state=0x03,
+ properties=[
+ ofp.exp_port_desc_prop.ethernet(
+ curr=0x70,
+ max_speed=0x80)])])
+
+
+-- java
+builder
+ .setXid(0x12345678)
+ .setFlags(ImmutableSet.<OFStatsReplyFlags>of())
+ .setEntries(ImmutableList.of(
+ factory.buildExpPort()
+ .setPortNo(OFPort.of(1))
+ .setHwAddr(MacAddress.of("00:00:00:00:00:00"))
+ .setName("interface1234567")
+ .setConfig(Sets.immutableEnumSet(OFPortConfig.NO_FWD, OFPortConfig.NO_PACKET_IN))
+ .setState(Sets.immutableEnumSet(OFPortState.LIVE))
+ .setProperties(ImmutableList.of(
+ factory.buildExpPortDescPropOpticalTransport()
+ .setPortSignalType(OFPortOpticalTransportSignalType.OTU2)
+ .setFeatures(ImmutableList.of(
+ factory.buildExpPortOpticalTransportLayerStack()
+ .setValue(ImmutableList.of(
+ factory.buildExpPortOpticalTransportLayerEntry()
+ .setLayerClass(OFPortOpticalTransportLayerClass.ODU)
+ .setSignalType((short)1)
+ .setAdaptation(OFAdaptationsType.ODUK_ODUIJ)
+ .build()))
+ .build()))
+ .build()))
+ .build()))
+ .build();
+
+
+
+
+
+
+
diff --git a/test_data/of13/exp_port_desc_reply_och b/test_data/of13/exp_port_desc_reply_och
new file mode 100644
index 0000000..b32d9a8
--- /dev/null
+++ b/test_data/of13/exp_port_desc_reply_och
@@ -0,0 +1,86 @@
+# To be included in exp_port_dest_reply.data
+-- binary
+04 13 # version, type
+00 58 # length
+12 34 56 78 # xid
+ff ff # stats_type
+00 00 # flags
+00 00 00 00 # pad
+FF 00 00 07 # experimenter
+00 00 00 01 # subtype
+# entries[0]
+00 00 00 01 # port
+00 40 # length - ????????
+00 00 # pad
+00 00 00 00 00 00 # entries[0].hw_addr
+00 00 # pad
+69 6e 74 65 72 66 61 63 65 31 32 33 34 35 36 37 # entries[0].name
+00 00 00 60 # entries[0].config
+00 00 00 04 # entries[0].state
+# properties[0]
+00 02 # entries[0].properties[0].type
+00 18 # entries[0].properties[0].length ???????
+05 # port_signal_type OMSn = 2,OCH = 5,OTU2 = 12(oduclt-10),OTU4 = 14(oduclt-100)
+00 #reserved
+00 00 #pad
+# features[0]
+00 02
+00 10 # length - ????????
+00 00 00 00
+# layeres[0]
+03 # layer class (PORT=1,OCH=2,ODU=3,DUCLT=4)
+01 # signal_type; /*OFP(OTP/OCH/ODU/ODUCL)T_*/
+06 #(OTS_OMS=1,OMS_OCH=2,OPS_OCHr=3,OPSM_OTUk=4,OCH_OTUk=5,ODUk_ODUij=6,ODUk_ODUj21=7,
+ #ODUkh_ODUj21=8,ODU0_CBRx=9,ODUk_CBRx=10,ODUk_CBRxg=11,ODUk_RSn=12,ODUk_ATM=13,ODUk_ETH=14,ODUkh_ETH=15,ODUk_ETHPPOS=16
+00 00 00 00 00
+
+-- python
+ofp.message.exp_port_desc_stats_reply(
+ xid=0x12345678,
+ flags=0,
+ entries=[
+ ofp.exp_port_desc(
+ port_no=1,
+ hw_addr=[0,0,0,0,0,0],
+ name="interface1234567",
+ config=0x60,
+ state=0x03,
+ properties=[
+ ofp.exp_port_desc_prop.ethernet(
+ curr=0x70,
+ max_speed=0x80)])])
+
+
+-- java
+builder
+ .setXid(0x12345678)
+ .setFlags(ImmutableSet.<OFStatsReplyFlags>of())
+ .setEntries(ImmutableList.of(
+ factory.buildExpPort()
+ .setPortNo(OFPort.of(1))
+ .setHwAddr(MacAddress.of("00:00:00:00:00:00"))
+ .setName("interface1234567")
+ .setConfig(Sets.immutableEnumSet(OFPortConfig.NO_FWD, OFPortConfig.NO_PACKET_IN))
+ .setState(Sets.immutableEnumSet(OFPortState.LIVE))
+ .setProperties(ImmutableList.of(
+ factory.buildExpPortDescPropOpticalTransport()
+ .setPortSignalType(OFPortOpticalTransportSignalType.OCH)
+ .setFeatures(ImmutableList.of(
+ factory.buildExpPortOpticalTransportLayerStack()
+ .setValue(ImmutableList.of(
+ factory.buildExpPortOpticalTransportLayerEntry()
+ .setLayerClass(OFPortOpticalTransportLayerClass.ODU)
+ .setSignalType((short)1)
+ .setAdaptation(OFAdaptationsType.ODUK_ODUIJ)
+ .build()))
+ .build()))
+ .build()))
+ .build()))
+ .build();
+
+
+
+
+
+
+
diff --git a/test_data/of13/exp_port_desc_reply_oms b/test_data/of13/exp_port_desc_reply_oms
new file mode 100644
index 0000000..67a03e8
--- /dev/null
+++ b/test_data/of13/exp_port_desc_reply_oms
@@ -0,0 +1,87 @@
+#To put this code in exp_port_desc_reply.data
+
+-- binary
+04 13 # version, type
+00 58 # length
+12 34 56 78 # xid
+ff ff # stats_type
+00 00 # flags
+00 00 00 00 # pad
+FF 00 00 07 # experimenter
+00 00 00 01 # subtype
+# entries[0]
+00 00 00 01 # port
+00 40 # length - ????????
+00 00 # pad
+00 00 00 00 00 00 # entries[0].hw_addr
+00 00 # pad
+69 6e 74 65 72 66 61 63 65 31 32 33 34 35 36 37 # entries[0].name
+00 00 00 60 # entries[0].config
+00 00 00 04 # entries[0].state
+# properties[0]
+00 02 # entries[0].properties[0].type
+00 18 # entries[0].properties[0].length ???????
+02 # port_signal_type OMSn = 2,OCH = 5,OTU2 = 12(oduclt-10),OTU4 = 14(oduclt-100)
+00 #reserved
+00 00 #pad
+# features[0]
+00 02
+00 10 # length - ????????
+00 00 00 00
+# layeres[0]
+02 # layer class (PORT=1,OCH=2,ODU=3,DUCLT=4)
+01 # signal_type; /*OFP(OTP/OCH/ODU/ODUCL)T_*/
+02 #(OTS_OMS=1,OMS_OCH=2,OPS_OCHr=3,OPSM_OTUk=4,OCH_OTUk=5,ODUk_ODUij=6,ODUk_ODUj21=7,
+ #ODUkh_ODUj21=8,ODU0_CBRx=9,ODUk_CBRx=10,ODUk_CBRxg=11,ODUk_RSn=12,ODUk_ATM=13,ODUk_ETH=14,ODUkh_ETH=15,ODUk_ETHPPOS=16
+00 00 00 00 00
+
+-- python
+ofp.message.exp_port_desc_stats_reply(
+ xid=0x12345678,
+ flags=0,
+ entries=[
+ ofp.exp_port_desc(
+ port_no=1,
+ hw_addr=[0,0,0,0,0,0],
+ name="interface1234567",
+ config=0x60,
+ state=0x03,
+ properties=[
+ ofp.exp_port_desc_prop.ethernet(
+ curr=0x70,
+ max_speed=0x80)])])
+
+
+-- java
+builder
+ .setXid(0x12345678)
+ .setFlags(ImmutableSet.<OFStatsReplyFlags>of())
+ .setEntries(ImmutableList.of(
+ factory.buildExpPort()
+ .setPortNo(OFPort.of(1))
+ .setHwAddr(MacAddress.of("00:00:00:00:00:00"))
+ .setName("interface1234567")
+ .setConfig(Sets.immutableEnumSet(OFPortConfig.NO_FWD, OFPortConfig.NO_PACKET_IN))
+ .setState(Sets.immutableEnumSet(OFPortState.LIVE))
+ .setProperties(ImmutableList.of(
+ factory.buildExpPortDescPropOpticalTransport()
+ .setPortSignalType(OFPortOpticalTransportSignalType.OMSN)
+ .setFeatures(ImmutableList.of(
+ factory.buildExpPortOpticalTransportLayerStack()
+ .setValue(ImmutableList.of(
+ factory.buildExpPortOpticalTransportLayerEntry()
+ .setLayerClass(OFPortOpticalTransportLayerClass.OCH)
+ .setSignalType((short)1)
+ .setAdaptation(OFAdaptationsType.OMS_OCH)
+ .build()))
+ .build()))
+ .build()))
+ .build()))
+ .build();
+
+
+
+
+
+
+
diff --git a/test_data/of13/exp_port_desc_reply_otu b/test_data/of13/exp_port_desc_reply_otu
new file mode 100644
index 0000000..441d837
--- /dev/null
+++ b/test_data/of13/exp_port_desc_reply_otu
@@ -0,0 +1,87 @@
+#To put this code in exp_port_desc_reply.data
+
+-- binary
+04 13 # version, type
+00 58 # length
+12 34 56 78 # xid
+ff ff # stats_type
+00 00 # flags
+00 00 00 00 # pad
+FF 00 00 07 # experimenter
+00 00 00 01 # subtype
+# entries[0]
+00 00 00 01 # port
+00 40 # length - ????????
+00 00 # pad
+00 00 00 00 00 00 # entries[0].hw_addr
+00 00 # pad
+69 6e 74 65 72 66 61 63 65 31 32 33 34 35 36 37 # entries[0].name
+00 00 00 60 # entries[0].config
+00 00 00 04 # entries[0].state
+# properties[0]
+00 02 # entries[0].properties[0].type
+00 18 # entries[0].properties[0].length ???????
+0C # port_signal_type OMSn = 2,OCH = 5,OTU2 = 12(oduclt-10),OTU4 = 14(oduclt-100)
+00 #reserved
+00 00 #pad
+# features[0]
+00 02
+00 10 # length - ????????
+00 00 00 00
+# layeres[0]
+03 # layer class (PORT=1,OCH=2,ODU=3,DUCLT=4)
+01 # signal_type; /*OFP(OTP/OCH/ODU/ODUCL)T_*/
+06 #(OTS_OMS=1,OMS_OCH=2,OPS_OCHr=3,OPSM_OTUk=4,OCH_OTUk=5,ODUk_ODUij=6,ODUk_ODUj21=7,
+ #ODUkh_ODUj21=8,ODU0_CBRx=9,ODUk_CBRx=10,ODUk_CBRxg=11,ODUk_RSn=12,ODUk_ATM=13,ODUk_ETH=14,ODUkh_ETH=15,ODUk_ETHPPOS=16
+00 00 00 00 00
+
+-- python
+ofp.message.exp_port_desc_stats_reply(
+ xid=0x12345678,
+ flags=0,
+ entries=[
+ ofp.exp_port_desc(
+ port_no=1,
+ hw_addr=[0,0,0,0,0,0],
+ name="interface1234567",
+ config=0x60,
+ state=0x03,
+ properties=[
+ ofp.exp_port_desc_prop.ethernet(
+ curr=0x70,
+ max_speed=0x80)])])
+
+
+-- java
+builder
+ .setXid(0x12345678)
+ .setFlags(ImmutableSet.<OFStatsReplyFlags>of())
+ .setEntries(ImmutableList.of(
+ factory.buildExpPort()
+ .setPortNo(OFPort.of(1))
+ .setHwAddr(MacAddress.of("00:00:00:00:00:00"))
+ .setName("interface1234567")
+ .setConfig(Sets.immutableEnumSet(OFPortConfig.NO_FWD, OFPortConfig.NO_PACKET_IN))
+ .setState(Sets.immutableEnumSet(OFPortState.LIVE))
+ .setProperties(ImmutableList.of(
+ factory.buildExpPortDescPropOpticalTransport()
+ .setPortSignalType(OFPortOpticalTransportSignalType.OTU2)
+ .setFeatures(ImmutableList.of(
+ factory.buildExpPortOpticalTransportLayerStack()
+ .setValue(ImmutableList.of(
+ factory.buildExpPortOpticalTransportLayerEntry()
+ .setLayerClass(OFPortOpticalTransportLayerClass.ODU)
+ .setSignalType((short)1)
+ .setAdaptation(OFAdaptationsType.ODUK_ODUIJ)
+ .build()))
+ .build()))
+ .build()))
+ .build()))
+ .build();
+
+
+
+
+
+
+
diff --git a/test_data/of13/exp_port_desc_request.data b/test_data/of13/exp_port_desc_request.data
new file mode 100644
index 0000000..1c1b637
--- /dev/null
+++ b/test_data/of13/exp_port_desc_request.data
@@ -0,0 +1,14 @@
+-- binary
+04 12 # version, type
+00 18 # length
+11 11 11 11 # xid
+ff ff # stats_type
+00 00 # flags
+00 00 00 00 # pad
+FF 00 00 07 # experimenter
+00 00 00 01 # subtype
+
+-- python
+ofp.message.exp_port_desc_request(
+ xid=0x111111)
+
diff --git a/test_data/of13/flow_add.data b/test_data/of13/flow_add.data
index d566096..a1359c9 100644
--- a/test_data/of13/flow_add.data
+++ b/test_data/of13/flow_add.data
@@ -1,6 +1,6 @@
-- binary
04 0e # version, type
-00 80 # length
+00 B8 # length
12 34 56 78 # xid
fe dc ba 98 76 54 32 10 # cookie
@@ -21,7 +21,7 @@
00 00 # pad
00 01 # match.type
-00 3F # match.length # 59 bytes OXMs + 4 bytes match header
+00 77 # match.length #
80 00 01 08 # match.oxm_list[0].type_len - IN_PORT
00 00 00 04 # match.oxm_list[0].value
@@ -37,6 +37,31 @@
1C CA FE 1C B1 10 1C 00 00 28 00 00 00 00 00 00 # match.oxm_list[3].value
FF FF FF FF FF F0 FF FF 1C 2C 3C 00 00 00 00 00 # match.oxm_list[3].mask
+FF FF # experimenter class
+06 10 # type_len - EXP_ODU_SIG_ID
+FF 00 00 07 # experimenter id
+55 55 # tpn
+00 50 # tslen
+01 01 01 01 01 01 01 01 01 01 00 00 # tsmap
+
+FF FF # experimenter class
+04 01 # type_len - EXP_ODU_SIG_TYPE
+FF 00 00 07 # experimenter id
+08 # value
+
+FF FF # experimenter class
+0A 06 # type_len - EXP_OCH_SIG_ID
+FF 00 00 07 # experimenter id
+02 # gridType
+01 # channelSpacing
+00 04 # channelNumber
+00 01 # spectralWidth
+
+FF FF # experimenter class
+08 01 # type_len - EXP_OCH_SIG_TYPE
+FF 00 00 07 # experimenter id
+16 # value
+
00 # match.pad
00 01 # instructions[0].type
@@ -68,6 +93,10 @@
ofp.oxm.ipv6_src_masked(
value ='\x1C\xCA\xFE\x1C\xB1\x10\x1C\x00\x00\x28\x00\x00\x00\x00\x00\x00',
value_mask='\xFF\xFF\xFF\xFF\xFF\xF0\xFF\xFF\x1C\x2C\x3C\x00\x00\x00\x00\x00')
+ ofp.oxm.exp_odu_sig_id(21845,80,new byte {1,1,1,1,1,1,1,1,1,1}),
+ ofp.oxm.exp_odu_sigtype(8),
+ ofp.oxm.exp_och_sig_id(2,1,4,1),
+ ofp.oxm.exp_och_sigtype(22)
]),
instructions=[
ofp.instruction.goto_table(table_id=4),
@@ -92,6 +121,10 @@
.setMasked(MatchField.IPV6_SRC,
IPv6Address.of(0x1CCAFE1CB1101C00l, 0x0028000000000000l),
IPv6Address.of(0xFFFFFFFFFFF0FFFFl, 0x1C2C3C0000000000l))
+ .setExact(MatchField.EXP_ODU_SIG_ID, new OduSignalID((short)21845, (short)80,new byte[] {1,1,1,1,1,1,1,1,1,1}))
+ .setExact(MatchField.EXP_ODU_SIGTYPE, U8.of((short) 8 ))
+ .setExact(MatchField.EXP_OCH_SIG_ID, new CircuitSignalID((byte)2,(byte)1,(short)4,(short)1))
+ .setExact(MatchField.EXP_OCH_SIGTYPE, U8.of((short) 22))
.build()
)
.setInstructions(
diff --git a/test_data/of13/flow_delete.data b/test_data/of13/flow_delete.data
index bf9c453..0c1387f 100644
--- a/test_data/of13/flow_delete.data
+++ b/test_data/of13/flow_delete.data
@@ -1,6 +1,6 @@
-- binary
04 0e # version, type
-00 80 # length
+00 B8 # length
12 34 56 78 # xid
fe dc ba 98 76 54 32 10 # cookie
@@ -21,7 +21,7 @@
00 00 # pad
00 01 # match.type
-00 3F # match.length # 59 bytes OXMs + 4 bytes match header
+00 77 # match.length #
80 00 01 08 # match.oxm_list[0].type_len - IN_PORT
00 00 00 04 # match.oxm_list[0].value
@@ -37,6 +37,31 @@
1C CA FE 1C B1 10 1C 00 00 28 00 00 00 00 00 00 # match.oxm_list[3].value
FF FF FF FF FF F0 FF FF 1C 2C 3C 00 00 00 00 00 # match.oxm_list[3].mask
+FF FF # experimenter class
+06 10 # type_len - EXP_ODU_SIG_ID
+FF 00 00 07 # experimenter id
+55 55 # tpn
+00 50 # tslen
+01 01 01 01 01 01 01 01 01 01 00 00 # tsmap
+
+FF FF # experimenter class
+04 01 # type_len - EXP_ODU_SIG_TYPE
+FF 00 00 07 # experimenter id
+08 # value
+
+FF FF # experimenter class
+0A 06 # type_len - EXP_OCH_SIG_ID
+FF 00 00 07 # experimenter id
+02 # gridType
+01 # channelSpacing
+00 04 # channelNumber
+00 01 # spectralWidth
+
+FF FF # experimenter class
+08 01 # type_len - EXP_OCH_SIG_TYPE
+FF 00 00 07 # experimenter id
+16 # value
+
00 # match.pad
00 01 # instructions[0].type
@@ -47,6 +72,7 @@
00 01 # instructions[1].type
00 08 # instructions[1].length
07 # instructions[1].table_id
+
00 00 00 # pad
-- python
ofp.message.flow_delete(
@@ -92,6 +118,10 @@
.setMasked(MatchField.IPV6_SRC,
IPv6Address.of(0x1CCAFE1CB1101C00l, 0x0028000000000000l),
IPv6Address.of(0xFFFFFFFFFFF0FFFFl, 0x1C2C3C0000000000l))
+ .setExact(MatchField.EXP_ODU_SIG_ID, new OduSignalID((short)21845, (short)80,new byte[] {1,1,1,1,1,1,1,1,1,1}))
+ .setExact(MatchField.EXP_ODU_SIGTYPE, U8.of((short) 8 ))
+ .setExact(MatchField.EXP_OCH_SIG_ID, new CircuitSignalID((byte)2,(byte)1,(short)4,(short)1))
+ .setExact(MatchField.EXP_OCH_SIGTYPE, U8.of((short) 22))
.build()
)
.setInstructions(
diff --git a/test_data/of13/flow_modify.data b/test_data/of13/flow_modify.data
index 6f3ebee..1c02f5a 100644
--- a/test_data/of13/flow_modify.data
+++ b/test_data/of13/flow_modify.data
@@ -1,6 +1,6 @@
-- binary
04 0e # version, type
-00 80 # length
+00 B8 # length
12 34 56 78 # xid
fe dc ba 98 76 54 32 10 # cookie
@@ -21,7 +21,7 @@
00 00 # pad
00 01 # match.type
-00 3F # match.length # 59 bytes OXMs + 4 bytes match header
+00 77 # match.length #
80 00 01 08 # match.oxm_list[0].type_len - IN_PORT
00 00 00 04 # match.oxm_list[0].value
@@ -37,6 +37,31 @@
1C CA FE 1C B1 10 1C 00 00 28 00 00 00 00 00 00 # match.oxm_list[3].value
FF FF FF FF FF F0 FF FF 1C 2C 3C 00 00 00 00 00 # match.oxm_list[3].mask
+FF FF # experimenter class
+06 10 # type_len - EXP_ODU_SIG_ID
+FF 00 00 07 # experimenter id
+55 55 # tpn
+00 50 # tslen
+01 01 01 01 01 01 01 01 01 01 00 00 # tsmap
+
+FF FF # experimenter class
+04 01 # type_len - EXP_ODU_SIG_TYPE
+FF 00 00 07 # experimenter id
+08 # value
+
+FF FF # experimenter class
+0A 06 # type_len - EXP_OCH_SIG_ID
+FF 00 00 07 # experimenter id
+02 # gridType
+01 # channelSpacing
+00 04 # channelNumber
+00 01 # spectralWidth
+
+FF FF # experimenter class
+08 01 # type_len - EXP_OCH_SIG_TYPE
+FF 00 00 07 # experimenter id
+16 # value
+
00 # match.pad
00 01 # instructions[0].type
@@ -69,6 +94,10 @@
value ='\x1C\xCA\xFE\x1C\xB1\x10\x1C\x00\x00\x28\x00\x00\x00\x00\x00\x00',
value_mask='\xFF\xFF\xFF\xFF\xFF\xF0\xFF\xFF\x1C\x2C\x3C\x00\x00\x00\x00\x00')
]),
+ ofp.oxm.exp_odu_sig_id(21845,4,10),
+ ofp.oxm.exp_odu_sigtype(8),
+ ofp.oxm.exp_och_sig_id(2,1,4,1),
+ ofp.oxm.exp_och_sigtype(22),
instructions=[
ofp.instruction.goto_table(table_id=4),
ofp.instruction.goto_table(table_id=7)])
@@ -92,6 +121,10 @@
.setMasked(MatchField.IPV6_SRC,
IPv6Address.of(0x1CCAFE1CB1101C00l, 0x0028000000000000l),
IPv6Address.of(0xFFFFFFFFFFF0FFFFl, 0x1C2C3C0000000000l))
+ .setExact(MatchField.EXP_ODU_SIG_ID, new OduSignalID((short)21845, (short)80,new byte[] {1,1,1,1,1,1,1,1,1,1}))
+ .setExact(MatchField.EXP_ODU_SIGTYPE, U8.of((short) 8 ))
+ .setExact(MatchField.EXP_OCH_SIG_ID, new CircuitSignalID((byte)2,(byte)1,(short)4,(short)1))
+ .setExact(MatchField.EXP_OCH_SIGTYPE, U8.of((short) 22))
.build()
)
.setInstructions(
diff --git a/test_data/of13/match_v3.data b/test_data/of13/match_v3.data
index 8d42019..3b5a4f5 100644
--- a/test_data/of13/match_v3.data
+++ b/test_data/of13/match_v3.data
@@ -1,6 +1,6 @@
-- binary
00 01 # type
-00 3C # length
+00 74 # length
80 00 # oxm_list[0].class
05 10 # oxm_list[0].type_len - METADATA
FE DC BA 98 12 14 12 10 # oxm_list[0].value
@@ -15,6 +15,32 @@
36 10 # oxm_list[4].type_len - IPV6_DST
12 12 12 12 12 12 12 12 # oxm_list[4].value
12 12 12 12 12 12 12 12 # ...
+
+FF FF # experimenter class
+06 10 # type_len - EXP_ODU_SIG_ID
+FF 00 00 07 # experimenter id
+55 55 # tpn
+00 50 # tslen
+01 01 01 01 01 01 01 01 01 01 00 00 # tsmap
+
+FF FF # experimenter class
+04 01 # type_len - EXP_ODU_SIG_TYPE
+FF 00 00 07 # experimenter id
+08 # value
+
+FF FF # experimenter class
+0A 06 # type_len - EXP_OCH_SIG_ID
+FF 00 00 07 # experimenter id
+02 # gridType
+01 # channelSpacing
+00 04 # channelNumber
+00 01 # spectralWidth
+
+FF FF # experimenter class
+08 01 # type_len - EXP_OCH_SIG_TYPE
+FF 00 00 07 # experimenter id
+16 # value
+
00 00 00 00 # pad
-- python
ofp.match([
@@ -22,6 +48,10 @@
ofp.oxm.eth_src([1,2,3,4,5,6]),
ofp.oxm.udp_dst(53),
ofp.oxm.ipv6_dst("\x12" * 16),
+ ofp.oxm.exp_odu_sig_id(21845,4,10),
+ ofp.oxm.exp_odu_sigtype(8),
+ ofp.oxm.exp_och_sig_id(2,1,4,1),
+ ofp.oxm.exp_och_sigtype(22)
])
-- java
builder
@@ -30,4 +60,8 @@
.setExact(MatchField.UDP_DST, TransportPort.of(53))
.setExact(MatchField.IPV6_DST, IPv6Address.of(new byte[] { 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 }))
+ .setExact(MatchField.EXP_ODU_SIG_ID, new OduSignalID((short)21845, (short)80,new byte[] {1,1,1,1,1,1,1,1,1,1}))
+ .setExact(MatchField.EXP_ODU_SIGTYPE, U8.of((short) 8 ))
+ .setExact(MatchField.EXP_OCH_SIG_ID, new CircuitSignalID((byte)2,(byte)1,(short)4,(short)1))
+ .setExact(MatchField.EXP_OCH_SIGTYPE, U8.of((short) 22))
\ No newline at end of file