diff --git a/c_gen/c_code_gen.py b/c_gen/c_code_gen.py
index 9add81b..896e9ad 100644
--- a/c_gen/c_code_gen.py
+++ b/c_gen/c_code_gen.py
@@ -659,6 +659,7 @@
 
 /* Currently these are categorized as scalars */
 typedef char of_port_name_t[OF_MAX_PORT_NAME_LEN];
+typedef char of_app_code_t[OF_APP_CODE_LEN];
 typedef char of_table_name_t[OF_MAX_TABLE_NAME_LEN];
 typedef char of_desc_str_t[OF_DESC_STR_LEN];
 typedef char of_serial_num_t[OF_SERIAL_NUM_LEN];
diff --git a/c_gen/c_test_gen.py b/c_gen/c_test_gen.py
index 955f34f..05ff8e2 100644
--- a/c_gen/c_test_gen.py
+++ b/c_gen/c_test_gen.py
@@ -107,6 +107,9 @@
         of_bitmap_128_t="bitmap_128",
         of_bitmap_512_t="bitmap_512",
         of_checksum_128_t="checksum_128",
+	#Circuit extensions
+        of_app_code_t="app_code",
+	of_sig_id_t="sig_id",
         )
 
     if m_type.find("of_list_") == 0:
@@ -121,6 +124,7 @@
 string_types = [ "of_port_name_t", "of_table_name_t",
                 "of_desc_str_t", "of_serial_num_t", "of_mac_addr_t",
                 "of_ipv6_t", "of_bitmap_128_t", "of_checksum_128_t",
+                "of_str64_t","of_app_code_t"]
                 "of_str64_t", "of_bitmap_512_t"]
 
 scalar_types = integer_types[:]
diff --git a/c_gen/of_g_legacy.py b/c_gen/of_g_legacy.py
index 9c0722c..caabc1a 100644
--- a/c_gen/of_g_legacy.py
+++ b/c_gen/of_g_legacy.py
@@ -86,7 +86,9 @@
     OF_MAX_PORT_NAME_LEN  = 16,
     OF_ETH_ALEN = 6,
     OF_DESC_STR_LEN   = 256,
-    OF_SERIAL_NUM_LEN = 32
+    OF_SERIAL_NUM_LEN = 32,
+    OF_APP_CODE_LEN = 15, 	
+    OF_SIGID_LEN=6, 	
 )
 
 ## List of mixed data types
@@ -215,6 +217,10 @@
     of_bitmap_128_t = dict(bytes=16, short_name="bitmap_128"),
     of_bitmap_512_t = dict(bytes=64, short_name="bitmap_512"),
     of_checksum_128_t = dict(bytes=16, short_name="checksum_128"),
+    of_app_code_t = dict(bytes=ofp_constants["OF_APP_CODE_LEN"],
+                          short_name="app_code"),
+    of_sig_id_t = dict(bytes=ofp_constants["OF_SIGID_LEN"],
+                          short_name="sig_id"),
 )
 
 of_scalar_types = ["char", "uint8_t", "uint16_t", "uint32_t", "uint64_t",
diff --git a/java_gen/java_type.py b/java_gen/java_type.py
index dbb87eb..900aa6d 100644
--- a/java_gen/java_type.py
+++ b/java_gen/java_type.py
@@ -355,6 +355,7 @@
             default="MacAddress.NONE")
 
 port_name = gen_fixed_length_string_jtype(16)
+app_code = gen_fixed_length_string_jtype(15)
 desc_str = gen_fixed_length_string_jtype(256)
 serial_num = gen_fixed_length_string_jtype(32)
 table_name = gen_fixed_length_string_jtype(32)
@@ -512,6 +513,9 @@
          .op(read="OFBufferId.of(bb.readInt())", write="bb.writeInt($name.getInt())", default="OFBufferId.NO_BUFFER")
 lag_id = JType("LagId") \
          .op(version=ANY, read="LagId.read4Bytes(bb)", write="$name.write4Bytes(bb)", default="LagId.NONE")
+
+sig_id = JType("CircuitSignalID") \
+         .op(version=ANY, read="CircuitSignalID.read6Bytes(bb)", write="$name.write6Bytes(bb)", default="CircuitSignalID.NONE")
 vrf = JType("VRF") \
          .op(version=ANY, read="VRF.read4Bytes(bb)", write="$name.write4Bytes(bb)", default="VRF.ZERO")
 class_id = JType("ClassId") \
@@ -581,6 +585,8 @@
         'of_bitmap_512_t': port_bitmap_512,
         'of_checksum_128_t': u128,
         'of_bsn_vport_t': bsn_vport,
+        'of_app_code_t': app_code,  
+        'of_sig_id_t': sig_id,
         'of_table_desc_t': table_desc,
         }
 
@@ -741,6 +747,10 @@
         'of_bsn_log': { 'data': var_string },
 
         'of_features_reply' : { 'auxiliary_id' : of_aux_id},
+        'of_oxm_och_sigtype' : { 'value' : u8obj },
+        'of_oxm_och_sigtype_basic' : { 'value' : u8obj },
+        'of_oxm_och_sigid' : {'value' : sig_id},
+        'of_oxm_och_sigid_basic' : {'value' : sig_id},  
 
         'of_bundle_add_msg' : { 'data' : of_message },
 }
diff --git a/java_gen/pre-written/pom.xml b/java_gen/pre-written/pom.xml
index 58ddab3..631544e 100644
--- a/java_gen/pre-written/pom.xml
+++ b/java_gen/pre-written/pom.xml
@@ -8,9 +8,9 @@
         <version>7</version>
     </parent>
 
-    <groupId>org.projectfloodlight</groupId>
+    <groupId>org.onosproject</groupId>
     <artifactId>openflowj</artifactId>
-    <version>0.9.0-SNAPSHOT</version>
+    <version>0.3.7.oe</version>
     <packaging>jar</packaging>
 
     <name>OpenFlowJ-Loxi</name>
@@ -224,30 +224,13 @@
                                     <ciBuildId>${env.BUILD_ID}</ciBuildId>
                                     <ciBuildTag>${env.BUILD_TAG}</ciBuildTag>
                                    <ciJobName>${env.JOB_NAME}</ciJobName>
-i                                  <ciNodeName>${env.NODE_NAME}</ciNodeName>
+                                   <ciNodeName>${env.NODE_NAME}</ciNodeName>
                                 </manifestEntries>
                             </manifestSection>
                         </manifestSections>
                     </archive>
                 </configuration>
             </plugin>
-
-            <!--
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-gpg-plugin</artifactId>
-                <version>1.4</version>
-                <executions>
-                    <execution>
-                        <id>sign-artifacts</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>sign</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            -->
         </plugins>
         <resources>
             <resource>
@@ -259,4 +242,64 @@
             </resource>
         </resources>
     </build>
+    <profiles>
+      <profile>
+        <id>release</id>
+        <build>
+          <plugins>
+              <plugin>
+                  <groupId>org.apache.maven.plugins</groupId>
+                  <artifactId>maven-source-plugin</artifactId>
+                  <version>2.2.1</version>
+                  <executions>
+                      <execution>
+                          <id>attach-sources</id>
+                          <goals>
+                              <goal>jar-no-fork</goal>
+                          </goals>
+                      </execution>
+                  </executions>
+              </plugin>
+              <plugin>
+                  <groupId>org.apache.maven.plugins</groupId>
+                  <artifactId>maven-javadoc-plugin</artifactId>
+                  <version>2.9.1</version>
+                  <executions>
+                      <execution>
+                          <id>attach-javadocs</id>
+                          <goals>
+                              <goal>jar</goal>
+                          </goals>
+                      </execution>
+                  </executions>
+              </plugin>
+              <plugin>
+                  <groupId>org.apache.maven.plugins</groupId>
+                  <artifactId>maven-gpg-plugin</artifactId>
+                  <version>1.5</version>
+                  <executions>
+                      <execution>
+                          <id>sign-artifacts</id>
+                          <phase>verify</phase>
+                          <goals>
+                              <goal>sign</goal>
+                          </goals>
+                      </execution>
+                  </executions>
+              </plugin>
+              <plugin>
+                  <groupId>org.sonatype.plugins</groupId>
+                  <artifactId>nexus-staging-maven-plugin</artifactId>
+                  <version>1.6.5</version>
+                  <extensions>true</extensions>
+                  <configuration>
+                      <serverId>ossrh</serverId>
+                      <nexusUrl>https://oss.sonatype.org/</nexusUrl>
+                      <autoReleaseAfterClose>false</autoReleaseAfterClose>
+                  </configuration>
+              </plugin>
+          </plugins>
+        </build>
+      </profile>
+    </profiles>
 </project>
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
index 931211f..e2f172b 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
@@ -28,6 +28,7 @@
 import org.projectfloodlight.openflow.types.UDF;
 import org.projectfloodlight.openflow.types.VRF;
 import org.projectfloodlight.openflow.types.VlanPcp;
+import org.projectfloodlight.openflow.types.CircuitSignalID;
 
 @SuppressWarnings("unchecked")
 public class MatchField<F extends OFValueType<F>> {
@@ -257,6 +258,22 @@
     public final static MatchField<ClassId> BSN_VLAN_XLATE_PORT_GROUP_ID =
             new MatchField<ClassId>("bsn_vlan_xlate_port_group_id", MatchFields.BSN_VLAN_XLATE_PORT_GROUP_ID);
 
+    public final static MatchField<U8> OCH_SIGTYPE =
+            new MatchField<U8>("och_sigtype",
+                                    MatchFields.OCH_SIGTYPE);
+
+    public final static MatchField<U8> OCH_SIGTYPE_BASIC =
+            new MatchField<U8>("och_sigtype_basic",
+                                    MatchFields.OCH_SIGTYPE_BASIC);
+
+    public final static MatchField<CircuitSignalID> OCH_SIGID =
+            new MatchField<CircuitSignalID>("och_sigid",
+                                    MatchFields.OCH_SIGID);
+
+    public final static MatchField<CircuitSignalID> OCH_SIGID_BASIC =
+            new MatchField<CircuitSignalID>("och_sigid_basic",
+                                    MatchFields.OCH_SIGID);
+    
     public final static MatchField<OFBooleanValue> BSN_L2_CACHE_HIT =
             new MatchField<OFBooleanValue>("bsn_l2_cache_hit", MatchFields.BSN_L2_CACHE_HIT);
 
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
index 3a0ec89..12e2b20 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
@@ -64,4 +64,8 @@
     BSN_TCP_FLAGS,
     BSN_VLAN_XLATE_PORT_GROUP_ID,
     BSN_L2_CACHE_HIT,
+    OCH_SIGTYPE,
+    OCH_SIGTYPE_BASIC,
+    OCH_SIGID,
+    OCH_SIGID_BASIC,
 }
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/CircuitSignalID.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/CircuitSignalID.java
new file mode 100644
index 0000000..7a304f6
--- /dev/null
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/CircuitSignalID.java
@@ -0,0 +1,137 @@
+package org.projectfloodlight.openflow.types;
+
+import com.google.common.collect.ComparisonChain;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.projectfloodlight.openflow.exceptions.OFParseError;
+
+import com.google.common.hash.PrimitiveSink;
+
+
+public class CircuitSignalID implements OFValueType<CircuitSignalID> {
+    static final int length = 6;
+
+    private byte gridType;
+    private byte channelSpacing ;
+    private short channelNumber;
+    private short spectralWidth;
+
+    public static final CircuitSignalID NONE = new CircuitSignalID((byte)0,
+                                                                   (byte)0,
+                                                                   (short)0,
+                                                                   (short)0);
+
+
+    public CircuitSignalID(byte gridType, byte channelSpacing,
+                            short channelNumber,
+                            short spectralWidth)
+    {
+        this.gridType = gridType;
+        this.channelSpacing = channelSpacing;
+        this.channelNumber = channelNumber;
+        this.spectralWidth = spectralWidth;
+
+    }
+
+    @Override
+    public int getLength() {
+        return length;
+    }
+
+    public byte getGridType() {
+        return gridType;
+    }
+
+    public byte getChannelSpacing() {
+        return channelSpacing;
+    }
+
+    public short getChannelNumber() {
+        return channelNumber;
+    }
+
+    public short getSpectralWidth() {
+        return spectralWidth;
+    }
+
+    public void write6Bytes(ChannelBuffer c) {
+        c.writeByte(gridType);
+        c.writeByte(channelSpacing);
+        c.writeShort(channelNumber);
+        c.writeShort(spectralWidth);
+    }
+
+    public static CircuitSignalID read6Bytes(ChannelBuffer c) throws OFParseError {
+        return new CircuitSignalID((byte)c.readUnsignedByte(),
+                                   (byte)c.readUnsignedByte(),
+                                   (short)c.readUnsignedShort(),
+                                   (short)c.readUnsignedShort());
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        CircuitSignalID that = (CircuitSignalID) o;
+
+        if (channelNumber != that.channelNumber) return false;
+        if (channelSpacing != that.channelSpacing) return false;
+        if (gridType != that.gridType) return false;
+        if (spectralWidth != that.spectralWidth) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) gridType;
+        result = 31 * result + (int) channelSpacing;
+        result = 31 * result + (int) channelNumber;
+        result = 31 * result + (int) spectralWidth;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "CircuitSignalID{" +
+                "gridType=" + gridType +
+                ", channelSpacing=" + channelSpacing +
+                ", channelNumber=" + channelNumber +
+                ", spectralWidth=" + spectralWidth +
+                '}';
+    }
+
+    @Override
+    public CircuitSignalID applyMask(CircuitSignalID mask) {
+        return new CircuitSignalID((byte) (this.gridType & mask.gridType),
+                                   (byte) (this.channelSpacing & mask
+                                           .channelSpacing),
+                                   (short) (this.channelNumber & mask
+                                           .channelNumber),
+                                   (short) (this.spectralWidth & mask
+                                           .spectralWidth));
+    }
+
+
+    @Override
+    public int compareTo(CircuitSignalID o) {
+        return ComparisonChain.start()
+                              .compare(gridType,o.gridType)
+                              .compare(channelSpacing,o.channelSpacing)
+                              .compare(channelNumber,o.channelNumber)
+                              .compare(spectralWidth,o.spectralWidth)
+                              .result();
+    }
+
+
+    @Override
+    public void putTo(PrimitiveSink sink) {
+        sink.putByte(gridType);
+        sink.putByte(channelSpacing);
+        sink.putShort(channelNumber);
+        sink.putShort(spectralWidth);
+    }
+
+
+
+}
diff --git a/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/OFOxmTest.java b/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/OFOxmTest.java
index 8482886..04034cc 100644
--- a/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/OFOxmTest.java
+++ b/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/OFOxmTest.java
@@ -59,4 +59,6 @@
         OFOxm<IPv4Address> canonical = ipv4SrcMasked.getCanonical();
         assertEquals(ipv4SrcMasked, canonical);
     }
+
+
 }
diff --git a/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/match/MatchFieldIteration13Test.java b/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/match/MatchFieldIteration13Test.java
index b654a53..1bd3efe 100644
--- a/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/match/MatchFieldIteration13Test.java
+++ b/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/match/MatchFieldIteration13Test.java
@@ -1,10 +1,22 @@
 package org.projectfloodlight.protocol.match;
 
+import org.junit.Test;
 import org.projectfloodlight.openflow.protocol.OFFactories;
 import org.projectfloodlight.openflow.protocol.OFVersion;
+import org.projectfloodlight.openflow.protocol.match.Match;
+import org.projectfloodlight.openflow.protocol.match.MatchField;
+import org.projectfloodlight.openflow.types.U8;
 
 public class MatchFieldIteration13Test extends MatchFieldIterationBase {
     public MatchFieldIteration13Test() {
         super(OFFactories.getFactory(OFVersion.OF_13));
     }
+
+    @Test
+    public void matchCircuitFields()
+    {
+        Match.Builder builder = factory.buildMatchV3().setExact(MatchField
+                                                                        .OCH_SIGTYPE, U8.ZERO);
+
+    }
 }
diff --git a/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/match/MatchFieldIterationBase.java b/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/match/MatchFieldIterationBase.java
index 9c72e37..892c5a0 100644
--- a/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/match/MatchFieldIterationBase.java
+++ b/java_gen/pre-written/src/test/java/org/projectfloodlight/protocol/match/MatchFieldIterationBase.java
@@ -25,7 +25,7 @@
 
 public class MatchFieldIterationBase {
 
-    private OFFactory factory;
+    protected OFFactory factory;
 
     protected MatchFieldIterationBase(OFFactory factory) {
         this.factory = factory;
diff --git a/loxi_ir/ir_offset.py b/loxi_ir/ir_offset.py
index 5eff8e0..490c6b0 100644
--- a/loxi_ir/ir_offset.py
+++ b/loxi_ir/ir_offset.py
@@ -25,7 +25,8 @@
     OF_MAX_PORT_NAME_LEN  = 16,
     OF_ETH_ALEN = 6,
     OF_DESC_STR_LEN   = 256,
-    OF_SERIAL_NUM_LEN = 32
+    OF_SERIAL_NUM_LEN = 32,
+    OF_APP_CODE_LEN = 15 	
 )
 
 
@@ -109,6 +110,8 @@
     of_octets_t = (0, False),
     of_bitmap_128_t = (16, True),
     of_checksum_128_t = (16, True),
+    of_app_code_t = (15,True),
+    of_sig_id_t = (6, True),
     of_bitmap_512_t = (64, True),
 )
 
diff --git a/openflow_input/circuit b/openflow_input/circuit
new file mode 100644
index 0000000..0f436a4
--- /dev/null
+++ b/openflow_input/circuit
@@ -0,0 +1,184 @@
+#version 4
+
+/* WDM grid types */
+enum ofp_grid_type {
+    OFPGRIDT_RES    = 0,
+    OFPGRIDT_DWDM   = 1,
+    OFPGRIDT_CWDM   = 2,
+    OFPGRIDT_FLEX   = 3,
+};
+
+/* WDM grid channel spacing */
+enum ofp_channel_spacing {
+    OFPCS_RES       = 0,
+    OFPCS_GHZ_100    = 1,
+    OFPCS_GHZ_50     = 2,
+    OFPCS_GHZ_24     = 3,
+    OFPCS_GHZ_12P5   = 4,        /* 12.5 GHZ */
+    OFPCS_GHZ_6P25   = 5,        /* 6.25 GHZ */
+};
+
+/* Layer classes (families) supported for optical transport port. */
+enum ofp_port_optical_transport_layer_class {
+    OFPPOTL_PORT   = 1,           /* Class of base port layer signal types */
+    OFPPOTL_OCH    = 2,           /* Class of OCH layer signal types*/
+    OFPPOTL_ODU    = 3,           /* Class of ODU layer signal types*/
+    OFPPOTL_ODUCLT = 4,           /* Class of ODU client layer signal types*/
+};
+
+/* Base port layer signal types */
+enum ofp_otport_signal_type {
+    OFPOTPT_OTSn           = 1,
+    OFPOTPT_OMSn           = 2,
+    OFPOTPT_OPSn           = 3,
+    OFPOTPT_OPSM           = 4,
+    OFPOTPT_OCH            = 5,
+    OFPOTPT_OTU1           = 11,
+    OFPOTPT_OTU2           = 12,
+    OFPOTPT_OTU3           = 13,
+    OFPOTPT_OTU4           = 14,
+};
+
+/* OCH layer signal types */
+enum ofp_och_signal_type {
+    OFPOCHT_FIX_GRID       = 1,
+    OFPOCHT_FLEX_GRID      = 2,
+};
+
+// Not used .. just for info on structure.
+struct ofp_och_signal_id {
+     uint8_t grid;            //Type of WDM grid - OFPGRIDT_*
+     uint8_t cs;              //Channel Spacing - OFPCS_*
+     uint16_t n;             // Used to calculate frequency as in [ITU G.694.1]
+                             // Frequency(THz)= 193.1 THz + n * chan_spacing
+     uint16_t m;             // Used to calculate spectral width [ITU G.694.1]
+                             // Spectral Width (GHz) = m * 12.5
+                            // For fix grid networks, m=1
+};
+
+struct of_oxm_och_sigtype : of_oxm {
+    uint32_t type_len == 0x00085801; 	
+    uint8_t value;
+};
+
+struct of_oxm_och_sigid : of_oxm {
+    uint32_t type_len == 0x00085A06; 
+    of_sig_id_t value;
+};
+
+struct of_oxm_och_sigtype_basic : of_oxm {
+    uint32_t type_len == 0x80005801; 	
+    uint8_t value;
+};
+
+struct of_oxm_och_sigid_basic : of_oxm {
+    uint32_t type_len == 0x80005A06; 
+    of_sig_id_t value;
+};
+
+
+struct of_action_circuit : of_action_experimenter {
+    uint16_t type == 65535;
+    uint16_t len;
+    uint32_t experimenter == 0x748771;
+    uint16_t subtype == 25;
+    uint16_t hlength == 16; // fix length of OXM field
+    of_oxm_t field;
+    pad(2);
+};
+
+
+struct of_circuit_ports_request : of_experimenter_stats_request {
+    uint8_t version;
+    uint8_t type == 18;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type == 0xffff;
+    enum ofp_stats_request_flags flags;
+    pad(4);
+    uint32_t experimenter == 0x748771;
+    uint32_t subtype == 13;
+};
+
+
+struct of_circuit_ports_reply : of_experimenter_stats_reply {
+    uint8_t version;
+    uint8_t type == 19;
+    uint16_t length;
+    uint32_t xid;
+    uint16_t stats_type == 0xffff;
+    enum ofp_stats_reply_flags flags;
+    pad(4);
+    uint32_t experimenter == 0x748771;
+    uint32_t subtype == 13;
+    list(of_port_optical_t) entries;	
+};
+
+struct of_port_optical {
+    of_port_no_t port_no;
+    uint16_t length;
+    pad(2);
+    of_mac_addr_t hw_addr;
+    pad(2);
+    of_port_name_t name;
+    enum ofp_port_config config;
+    enum ofp_port_state state;
+    list(of_port_desc_prop_optical_transport_t) desc; 					
+};
+
+struct of_port_desc_prop_optical_transport {
+   uint16_t type; 
+   uint16_t length;
+   uint8_t port_signal_type; 
+   uint8_t reserved;
+   pad(1);
+   uint8_t port_type;	
+};
+
+struct of_circuit_port_status : of_experimenter {
+    uint8_t version;
+    uint8_t type == 4;
+    uint16_t length;
+    uint32_t xid;
+    uint32_t experimenter == 0x748771;
+    uint32_t exp_type == 12;
+    enum ofp_port_reason reason;
+    pad(7);
+    of_port_no_t port_no;
+    uint16_t lengths;
+    pad(2);
+    of_mac_addr_t hw_addr;
+    pad(2);
+    of_port_name_t name;
+    enum ofp_port_config config;
+    enum ofp_port_state state;
+    uint64_t ignore;	
+};
+
+ 
+
+
+struct of_port_optical_transport_application_code 
+{
+   uint16_t feature_type; 
+   uint8_t oic_type; 
+   of_app_code_t app_code;
+};
+
+
+struct of_port_optical_transport_layer_entry {
+   uint8_t layer_class; 
+   uint8_t signal_type;
+   uint8_t adaptation;
+   pad(5);
+};
+
+
+/* ODU Layer Stack Feature Encoding */
+struct of_port_optical_transport_layer_stack {
+   uint16_t feature_type; 
+   uint16_t length; 
+   pad(4); 
+   list(of_port_optical_transport_layer_entry_t) entries; 
+};
+
