#version 4

struct of_calient_port_stats_request : of_calient_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 == 0x0080F958;
    uint32_t subtype == 3;
    of_port_no_t port_no;
    pad(4);
};


/* in_admin_status,in_oper_status,in_oper_capability,in_alarm,in_circuit_id not present in the backkend */
struct of_calient_port_stats_entry {
    uint16_t length;
    pad(2);
    of_port_no_t port_no;
    enum ofp_calient_optical_port_admin_state in_admin_status;        /* Input port admin status */
    enum ofp_calient_optical_port_oper_state in_oper_status;          /* Input port operational status */
    enum ofp_calient_optical_port_oper_capability in_oper_capability; /* Input port operational capability */
    enum ofp_calient_ocs_alarm in_alarm;/* Alarm on Input port */
    pad(4);
    of_str6_t inport_power;     /* Input port power */
    pad(2);
    of_str6_t outport_power;    /* Output port power */
    pad(2);
    enum ofp_calient_optical_port_admin_state out_admin_status;       /* Output port Admin status */
    enum ofp_calient_optical_port_oper_state out_oper_status;         /* Output port operational status */
    enum ofp_calient_optical_port_oper_capability out_oper_capability;/* Output port operational capability */
    enum ofp_calient_ocs_alarm out_alarm;/* Alarm on Output port */
    pad(4);
    of_str32_t in_circuit_id;   /* Circuit id associated with the input port */
    of_str32_t out_circuit_id;  /* Circuit id associated with the output port */
};

struct of_calient_port_stats_reply : of_calient_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 == 0x0080F958;
    uint32_t subtype == 3;
    list(of_calient_port_stats_entry_t) entries;
};


