diff --git a/openflow_input/circuit b/openflow_input/circuit
index 0f436a4..7e02014 100644
--- a/openflow_input/circuit
+++ b/openflow_input/circuit
@@ -19,7 +19,7 @@
 };
 
 /* Layer classes (families) supported for optical transport port. */
-enum ofp_port_optical_transport_layer_class {
+enum ofp_port_optical_transport_layer_class(wire_type=uint8_t){
     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*/
diff --git a/openflow_input/optical_tras_ext b/openflow_input/optical_tras_ext
new file mode 100644
index 0000000..ddb08df
--- /dev/null
+++ b/openflow_input/optical_tras_ext
@@ -0,0 +1,212 @@
+/* This file input supports the Optical Transport Protocol Extentions - version 1.0 */
+
+#version 4
+/*Supported signal types for layer class OFPOTPL_ODU */
+enum ofp_odu_signal_type (wire_type=uint8_t) {
+    OFPODUT_ODU1           = 1,
+    OFPODUT_ODU2           = 2,
+    OFPODUT_ODU3           = 3,
+    OFPODUT_ODU4           = 4,
+    OFPODUT_ODU0           = 10,
+    OFPODUT_ODU2E          = 11,
+    OFPODUT_ODUfCBR        = 20,
+    OFPODUT_ODUfGFPfHAO    = 21,
+    OFPODUT_ODUfGFPf       = 22,
+};
+
+
+//enum ofp_experimenter_multipart_type_exp (wire_type=uint32_t){
+  //OFPEMPTE = 1,
+//};
+
+//enum ofp_port_desc_prop_type_exp (wire_type=uint32_t){
+ //OFPPDPT_OPTICAL_TRAMSPORT = 2,
+//};
+
+/* Supported signal types for layer class OFPPOTL_PORT */
+enum ofp_port_optical_transport_signal_type (wire_type=uint8_t) {
+     OFPPOTST_OTSn = 1,
+     OFPPOTST_OMSn = 2,
+     OFPPOTST_OPSn = 3,
+     OFPPOTST_OPSM = 4,
+     OFPPOTST_OCH  = 5,
+     OFPPOTST_OTU1 = 11,
+     OFPPOTST_OTU2 = 12,
+     OFPPOTST_OTU3 = 13,
+     OFPPOTST_OTU4 = 14,
+};
+
+
+/* Features of optical transport ports available in switch. */
+enum ofp_port_optical_transport_feature_type (wire_type=uint16_t) {
+    OFPPOTFT_OPT_INTERFACE_CLASS = 1,  /* Application code/ID encoding */
+    OFPPOTFT_LAYER_STACK         = 2,  /* Supported signal types and adaptations */
+};
+
+
+/*Supported signal types for layer class OFPOTPL_ODUCLT */
+enum ofp_oduclt_signal_type(wire_type=uint8_t) {
+   OFPODUCLT_STM16 	= 1,
+   OFPODUCLT_STM64  	= 2,
+   OFPODUCLT_STM256 	= 3,
+   OFPODUCLT_STM1       = 4,
+   OFPODUCLT_STM4       = 5,
+   OFPODUCLT_GBE1       = 6,
+   OFPODUCLT_GBE10      = 7,
+   OFPODUCLT_GBE40        = 8,
+   OFPODUCLT_GBE100	  = 9,
+   OFPODUCLT_FC100        = 10, 
+   OFPODUCLT_FC200        = 11,
+   OFPODUCLT_FC400        = 12,
+   OFPODUCLT_FC800        = 13,
+   OFPODUCLT_FC1200       = 14,
+   OFPODUCLT_GPON         = 15,
+   OFPODUCLT_XGPON        = 16,
+   OFPODUCLT_IB_SDR       = 17,
+   OFPODUCLT_IB_DDR       = 18,
+   OFPODUCLT_IB_QDR       = 19,
+   OFPODUCLT_SBCON_ESCON  = 20,
+   OFPODUCLT_DVBASI       = 21,
+   OFPODUCLT_SDI          = 22,
+   OFPODUCLT_SDI1G5       = 23,
+   OFPODUCLT_SDI3G        = 24,
+   OFPODUCLT_ATM          = 25,
+   OFPODUCLT_ETH          = 26,
+   OFPODUCLT_MPLS         = 27,
+   OFPODUCLT_IP           = 28,
+};
+
+/* Supported adaptations for optical transport port layer stack*/
+enum ofp_adaptations_type (wire_type=uint8_t){
+   OFPADAPT_OTS_OMS    = 1,
+   OFPADAPT_OMS_OCH    = 2,
+   OFPADAPT_OPS_OCHr   = 3,
+   OFPADAPT_OPSM_OTUk  = 4,
+   OFPADAPT_OCH_OTUk   = 5,
+   OFPADAPT_ODUk_ODUij    = 6,
+   OFPADAPT_ODUk_ODUj21   = 7,
+   OFPADAPT_ODUkh_ODUj21  = 8,
+   OFPADAPT_ODU0_CBRx     = 9,
+   OFPADAPT_ODUk_CBRx     = 10,
+   OFPADAPT_ODUk_CBRxg    = 11,
+   OFPADAPT_ODUk_RSn      = 12,
+   OFPADAPT_ODUk_ATM      = 13,
+   OFPADAPT_ODUk_ETH      = 14,
+   OFPADAPT_ODUkh_ETH     = 15,
+   OFPADAPT_ODUk_ETHPPOS  = 16,
+};
+
+struct of_oxm_exp_odu_sigtype : of_oxm {
+    uint32_t type_len == 0xFFFF0401; 
+    uint32_t experimenter == 0xFF000007;
+    uint8_t  value;
+};
+
+struct of_oxm_exp_odu_sig_id : of_oxm {
+     uint32_t type_len == 0xFFFF0610; 
+     uint32_t experimenter == 0xFF000007;
+     of_odu_sig_id_t value;// size of this struct is 16 bytes 2+2+10+2(pad)   
+}; 
+ 
+//This struct defenition is unnecessury for the openflow java ("make java" command )
+//It is reqiured for wireshark dissector ("make wireshark" command) 
+struct of_odu_sig_id_t { 
+    uint16_t tpn;           //Tributary Port Number 
+    uint16_t length;         // Number of Tributary Slots included in tsmap,
+			    // based on the Server ODU type and TS Granularity
+    of_octets_t tsmap;       //tsmap;
+};
+ 
+struct of_oxm_exp_och_sigtype : of_oxm {
+    uint32_t type_len == 0xFFFF0801; 
+    uint32_t experimenter == 0xFF000007;
+    uint8_t  value;
+};
+ 
+struct of_oxm_exp_och_sig_id : of_oxm {
+     uint32_t type_len == 0xFFFF0A06; 
+     uint32_t experimenter == 0xFF000007;
+     of_och_sig_id_t value;   
+}; 
+
+
+// open flow extention - support port description Extentions for OTN Ports 
+struct of_exp_port_desc_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 == 0xFF000007;
+    uint32_t subtype == 1;//enum ofp_experimenter_multipart_type exp_type == 1;
+};
+
+struct of_exp_port_desc_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 == 0xFF000007;
+    uint32_t subtype == 1;//enum ofp_experimenter_multipart_type subtype == 1;
+    list(of_exp_port_t) entries;
+};
+
+struct of_exp_port {
+  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_exp_port_desc_prop_optical_transport_t) properties;
+};
+
+struct of_exp_port_des_prop_header {
+  uint16_t type == 2; //enum ofp_port_desc_prop_type_exp type == 2;
+  uint16_t length;
+};
+
+struct of_exp_port_desc_prop_optical_transport // : of_exp_port_des_prop_header 
+{
+  uint16_t type == 2;
+  uint16_t length; // length in bytes of this property
+  enum ofp_port_optical_transport_signal_type  port_signal_type;
+                       //base port layer signal type (enum ofp_port_optical_transport_signal_type) 
+  uint8_t reserved;
+  pad(2);
+  list(of_exp_port_optical_transport_layer_stack_t) features; // list of of_port_optical_transport_feature_header 
+};
+
+struct of_exp_port_optical_transport_feature_header {
+  uint16_t feature_type == ?; // from enum ofp_port_optical_transport_feature_type
+  uint16_t length;
+};
+
+/* OTN Layer Stack Feature Encoding */ //of_port_optical_transport_layer_stack (in circuit ) 
+struct of_exp_port_optical_transport_layer_stack// : of_exp_port_optical_transport_feature_header
+{
+  uint16_t feature_type == 2; /* Set to OFPOTPF_LAYER_STACK */
+  uint16_t length;            /* length of feature excluding padding*/
+  pad(4);                     /* Zero bytes-see above for sizing */
+  list(of_exp_port_optical_transport_layer_entry_t) value; /* 0 or more fields */
+};
+
+/*OTN Layer Stack Entry Encoding */ // can be found in circut of_port_optical_transport_layer_entry
+struct of_exp_port_optical_transport_layer_entry {
+  enum ofp_port_optical_transport_layer_class layer_class;    /* OFPPOTL_* */
+  uint8_t signal_type;    /*OFP(OTP/OCH/ODU/ODUCL)T_*/
+  enum ofp_adaptations_type adaptation;/* OFPADAPT_*/
+  pad(5);         /* Align to 64-bit boundary */
+};
+
+
+
+
+
