blob: 0f436a42aa63af53dc50d11a07806006136c4a9b [file] [log] [blame]
#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;
};