module ciena-waveserver-lldp {
  namespace "urn:ciena:params:xml:ns:yang:ciena-ws:ciena-waveserver-lldp";
  prefix lldp;

  import ciena-waveserver-typedefs {
    prefix cienawstypes;
  }

  organization
    "Ciena Corporation";
  contact
    "Web URL: http://www.ciena.com/
     Postal:  7035 Ridge Road
             Hanover, Maryland 21076
             U.S.A.
     Phone:   +1 800-921-1144
     Fax:     +1 410-694-5750";
  description
    "This module defines the configuration and operational data for Link Layer Discovery Protocol (LLDP) on the Waveserver.";

  revision 2017-06-16 {
    description
      "Waveserver Platform Data Model
       Migrated from Waveserver Classic R1.4 YANG model.
       Updated namespace to 'ciena-waveserver'.
       Changed 'port-id' from integer to string format.";
    reference "";
  }

  typedef chassis-id {
    type string {
      length "1..256";
    }
    description
      "Chassis Identifier";
  }

  typedef chassis-id-subtype {
    type enumeration {
      enum "unknown" {
        value 0;
      }
      enum "chassis-component" {
        value 1;
      }
      enum "interface-alias" {
        value 2;
      }
      enum "port-component" {
        value 3;
      }
      enum "mac-address" {
        value 4;
      }
      enum "network-address" {
        value 5;
      }
      enum "interface-name" {
        value 6;
      }
      enum "local" {
        value 7;
      }
    }
  }

  typedef lldp-system-capability-bits {
    type bits {
      bit other {
        position 0;
      }
      bit repeater {
        position 1;
      }
      bit bridge {
        position 2;
      }
      bit wlan-access-point {
        position 3;
      }
      bit router {
        position 4;
      }
      bit telephone {
        position 5;
      }
      bit docsis {
        position 6;
      }
      bit station-only {
        position 7;
      }
    }
  }

  typedef lldp-management-address-subtype {
    type enumeration {
      enum "reserved" {
        value 0;
      }
      enum "ipv4" {
        value 1;
      }
      enum "ipv6" {
        value 2;
      }
      enum "nsap" {
        value 3;
      }
      enum "hdlc" {
        value 4;
      }
      enum "bbn-1822" {
        value 5;
      }
      enum "ieee-802" {
        value 6;
      }
      enum "e-163" {
        value 7;
      }
      enum "e164-smds-atm" {
        value 8;
      }
      enum "f69-telex" {
        value 9;
      }
      enum "x121-x25-fr" {
        value 10;
      }
      enum "ipx" {
        value 11;
      }
      enum "appletalk" {
        value 12;
      }
      enum "decnet-iv" {
        value 13;
      }
      enum "banyan-vines" {
        value 14;
      }
      enum "e164-w-nsap" {
        value 15;
      }
      enum "dns" {
        value 16;
      }
      enum "distinguish-name" {
        value 17;
      }
      enum "as-number" {
        value 18;
      }
      enum "xtp-over-ipv4" {
        value 19;
      }
      enum "xtp-over-ipv6" {
        value 20;
      }
      enum "xtp-native-mode" {
        value 21;
      }
      enum "fibre-ch-ww-port" {
        value 22;
      }
      enum "fibre-ch-ww-node" {
        value 23;
      }
      enum "gwid" {
        value 24;
      }
    }
    description
      "";
  }

  typedef lldp-management-address-interface-subtype {
    type enumeration {
      enum "unknown" {
        value 0;
      }
      enum "un-known" {
        value 1;
      }
      enum "if-index" {
        value 2;
      }
      enum "system-port-number" {
        value 3;
      }
    }
    description
      "";
  }

  typedef lldp-port-id-sub-type {
    type enumeration {
      enum "unknown" {
        value 0;
      }
      enum "interface-alias" {
        value 1;
      }
      enum "port-component" {
        value 2;
      }
      enum "mac-address" {
        value 3;
      }
      enum "network-address" {
        value 4;
      }
      enum "interface-name" {
        value 5;
      }
      enum "agent-circuit-id" {
        value 6;
      }
      enum "local" {
        value 7;
      }
    }
    description
      "Local port id sub-type.";
  }

  typedef lldp-auto-neg-capability {
    type enumeration {
      enum "unknown" {
        value 0;
      }
      enum "b-10base-t" {
        value 1;
      }
      enum "b-10base-t-fd" {
        value 2;
      }
      enum "b-100base-t4" {
        value 3;
      }
      enum "b-100base-tx" {
        value 4;
      }
      enum "b-100base-tx-full-duplex" {
        value 5;
      }
      enum "b-100base-t2" {
        value 6;
      }
      enum "b-100base-t2-full-duplex" {
        value 7;
      }
      enum "b-full-duplex-pause" {
        value 8;
      }
      enum "b-full-duplex-asymmetric-pause" {
        value 9;
      }
      enum "b-full-duplex-symmetric-pause" {
        value 10;
      }
      enum "b-full-duplex-asymmetric-symmetric-pause" {
        value 11;
      }
      enum "b-1000base-x" {
        value 12;
      }
      enum "b-1000base-x-full-duplex" {
        value 13;
      }
      enum "b-1000base-t" {
        value 14;
      }
      enum "b-1000base-t-full-duplex" {
        value 15;
      }
    }
  }

  typedef lldp-operational-mau-type {
    type enumeration {
      enum "unknown" {
        value 0;
      }
      enum "dot3-mau-type-aui" {
        value 1;
      }
      enum "dot3-mau-type-10-base-5" {
        value 2;
      }
      enum "dot3-mau-type-foirl" {
        value 3;
      }
      enum "dot3-mau-type-10-base-2" {
        value 4;
      }
      enum "dot3-mau-type-10-base-t" {
        value 5;
      }
      enum "dot3-mau-type-10-base-fp" {
        value 6;
      }
      enum "dot3-mau-type-10-base-fb" {
        value 7;
      }
      enum "dot3-mau-type-10-base-fl" {
        value 8;
      }
      enum "dot3-mau-type-10-broad36" {
        value 9;
      }
      enum "dot3-mau-type-10-base-thd" {
        value 10;
      }
      enum "dot3-mau-type-10-base-tfd" {
        value 11;
      }
      enum "dot3-mau-type-10-base-flhd" {
        value 12;
      }
      enum "dot3-mau-type-10-base-flfd" {
        value 13;
      }
      enum "dot3-mau-type-100-base-t4" {
        value 14;
      }
      enum "dot3-mau-type-100-base-txhd" {
        value 15;
      }
      enum "dot3-mau-type-100-base-txfd" {
        value 16;
      }
      enum "dot3-mau-type-100-base-fxhd" {
        value 17;
      }
      enum "dot3-mau-type-100-base-fxfd" {
        value 18;
      }
      enum "dot3-mau-type-100-base-t2hd" {
        value 19;
      }
      enum "dot3-mau-type-100-base-t2fd" {
        value 20;
      }
      enum "dot3-mau-type-1000-base-xhd" {
        value 21;
      }
      enum "dot3-mau-type-1000-base-xfd" {
        value 22;
      }
      enum "dot3-mau-type-1000-base-lxhd" {
        value 23;
      }
      enum "dot3-mau-type-1000-base-lxfd" {
        value 24;
      }
      enum "dot3-mau-type-1000-base-sxhd" {
        value 25;
      }
      enum "dot3-mau-type-1000-base-sxfd" {
        value 26;
      }
      enum "dot3-mau-type-1000-base-cxhd" {
        value 27;
      }
      enum "dot3-mau-type-1000-base-cxfd" {
        value 28;
      }
      enum "dot3-mau-type-1000-base-thd" {
        value 29;
      }
      enum "dot3-mau-type-1000-base-tfd" {
        value 30;
      }
      enum "dot3-mau-type-10Gig-base-x" {
        value 31;
      }
      enum "dot3-mau-type-10Gig-base-lx4" {
        value 32;
      }
      enum "dot3-mau-type-10Gig-base-r" {
        value 33;
      }
      enum "dot3-mau-type-10Gig-base-er" {
        value 34;
      }
      enum "dot3-mau-type-10Gig-base-lr" {
        value 35;
      }
      enum "dot3-mau-type-10Gig-base-sr" {
        value 36;
      }
      enum "dot3-mau-type-10Gig-base-w" {
        value 37;
      }
      enum "dot3-mau-type-10Gig-base-ew" {
        value 38;
      }
      enum "dot3-mau-type-10Gig-base-lw" {
        value 39;
      }
      enum "dot3-mau-type-10Gig-base-sw" {
        value 40;
      }
      enum "dot3-mau-type-10Gig-base-cx4" {
        value 41;
      }
      enum "dot3-mau-type-2-base-tl" {
        value 42;
      }
      enum "dot3-mau-type-10-pass-ts" {
        value 43;
      }
      enum "dot3-mau-type-100-base-bx10D" {
        value 44;
      }
      enum "dot3-mau-type-100-base-bx10u" {
        value 45;
      }
      enum "dot3-mau-type-100-base-lx10" {
        value 46;
      }
      enum "dot3-mau-type-1000-base-bx10d" {
        value 47;
      }
      enum "dot3-mau-type-1000-base-bx10u" {
        value 48;
      }
      enum "dot3-mau-type-1000-base-lx10" {
        value 49;
      }
      enum "dot3-mau-type-1000-base-px10d" {
        value 50;
      }
      enum "dot3-mau-type-1000-base-px10u" {
        value 51;
      }
      enum "dot3-mau-type-1000-base-px20d" {
        value 52;
      }
      enum "dot3-mau-type-1000-base-px20u" {
        value 53;
      }
      enum "invalid" {
        value 54;
      }
    }
  }

  typedef supported-notsupported-enum {
    type enumeration {
      enum "not-supported" {
        value 0;
      }
      enum "supported" {
        value 1;
      }
    }
  }

  typedef lldp-port-class {
    type enumeration {
      enum "pd" {
        value 0;
      }
      enum "pse" {
        value 1;
      }
    }
  }

  typedef lldp-pair-control {
    type enumeration {
      enum "cannot" {
        value 0;
      }
      enum "can" {
        value 1;
      }
    }
  }

  typedef lldp-power-pair {
    type enumeration {
      enum "not-support" {
        value 0;
      }
      enum "signal" {
        value 1;
      }
      enum "spare" {
        value 2;
      }
      enum "unknown" {
        value 3;
      }
    }
  }

  typedef lldp-power-class {
    type enumeration {
      enum "not-support" {
        value 0;
      }
      enum "class-0" {
        value 1;
      }
      enum "class-1" {
        value 2;
      }
      enum "class-2" {
        value 3;
      }
      enum "class-3" {
        value 4;
      }
      enum "class-4" {
        value 5;
      }
      enum "unknown" {
        value 6;
      }
    }
    description
      "Power class.";
  }

  grouping system-capability-group {
    description
      "group of LLDP system capability data.";
    leaf capabilities {
      type lldp-system-capability-bits;
      description
        "LLDP system capabilities.";
    }
    leaf capability-enabled {
      type lldp-system-capability-bits;
      description
        "Enabled LLDP system capability.";
    }
  }

  grouping management-address-group {
    description
      "group of LLDP management address data.";
    leaf address {
      type cienawstypes:string-maxl-256;
      config false;
      description
        "Management address.";
    }
    leaf subtype {
      type lldp-management-address-subtype;
      config false;
      description
        "Management adress subtype.";
    }
  }

  grouping management-address-interface-group {
    description
      "group of LLDP management address data.";
    leaf interface-subtype {
      type lldp-management-address-interface-subtype;
      config false;
      description
        "Management address interface subtype.";
    }
    leaf oid-if-number {
      type uint32;
      config false;
      description
        "Management address interface OID interface number.";
    }
    leaf oid {
      type cienawstypes:string-maxl-128;
      config false;
      description
        "Management address interface OID.";
    }
  }

  grouping port-id-group {
    description
      "group of port identification data.";
    leaf id {
      type cienawstypes:string-maxl-32;
      config false;
      description
        "port identifier.";
    }
    leaf sub-type {
      type lldp-port-id-sub-type;
      config false;
      description
        "Port identificer sub-type.";
    }
    leaf descriptor {
      type cienawstypes:string-maxl-256;
      config false;
      description
        "Port descriptor";
    }
  }

  container waveserver-lldp {
    description
      "Waveserver LLDP configuration and operational data.";
    container chassis {
      container state {
        leaf admin-state {
          type cienawstypes:enabled-disabled-enum;
          description
            "Administrative state of chassis level LLDP.";
        }
        leaf notification-interval {
          type uint16 {
            range "5 .. 32768";
          }
          description
            "LLDP Notification interval.";
        }
      }
      container id {
        config false;
        leaf chassis-id {
          type chassis-id;
          description
            "Chassis ID.";
        }
        leaf chassis-id-subtype {
          type chassis-id-subtype;
          description
            "Chassis Id subtype.";
        }
        leaf system-name {
          type cienawstypes:string-maxl-256;
          description
            "System Name. Max string length of 255 characters.";
        }
        leaf system-description {
          type cienawstypes:string-maxl-256;
          description
            "System escription. Max string length of 255 characters.";
        }
      }
      leaf time-to-live {
        type uint16;
        config false;
        description
          "Time To Live.";
      }
      container system-capabilities {
        config false;
        description
          "LLDP system capabilities.";
        uses system-capability-group;
      }
      container local-management-address-table {
        config false;
        description
          "LLDP local management address table.";
        list address-table {
          key "index";
          config false;
          max-elements "4";
          leaf index {
            type uint32;
            description
              "Unique id, read-only attribute.";
          }
          uses management-address-group;
          uses management-address-interface-group;
        }
      }
      container statistics {
        config false;
        leaf last-change {
          type uint32;
          description
            "remote table last change in 1/100 seconds.";
        }
        leaf inserts {
          type uint32;
          description
            "Inserts.";
        }
        leaf deletes {
          type uint32;
          description
            "Deletes.";
        }
        leaf drops {
          type uint32;
          description
            "Drops.";
        }
        leaf age-outs {
          type uint32;
          description
            "Age outs.";
        }
      }
    }
    list port {
      key "port-id";
      leaf port-id {
        type cienawstypes:port-name;
        mandatory true;
        description
          "Port ID/name string.";
      }
      container properties {
        description
          "LLDP port level properties.";
        leaf mode {
          type enumeration {
            enum "unknown" {
              value 0;
            }
            enum "tx-only" {
              value 1;
            }
            enum "snoop" {
              value 2;
            }
            enum "tx-rx" {
              value 3;
            }
            enum "disabled" {
              value 4;
            }
          }
          description
            "LLDP port admin state";
        }
        leaf notification {
          type cienawstypes:on-off-enum;
          description
            "Turn notification on or off";
        }
      }
      container statistics {
        config false;
        description
          "Port level statistics.";
        leaf out-packets-total {
          type uint32;
          config false;
          description
            "Out packets.";
        }
        leaf in-packets-total {
          type uint32;
          config false;
          description
            "In packets";
        }
        leaf in-err-packets-discarded {
          type uint32;
          config false;
          description
            "Discarded in error packets";
        }
        leaf in-errored-tlv {
          type uint32;
          config false;
          description
            "In errored TLV";
        }
        leaf tlv-discarded {
          type uint32;
          config false;
          description
            "Discarded TLV.";
        }
        leaf unknown-tlv {
          type uint32;
          config false;
          description
            "Unknown TLV";
        }
        leaf aged-out-total {
          type uint32;
          config false;
          description
            "Aged out total.";
        }
      }
      container local {
        config false;
        description
          "Port LLDP local data.";
        container id {
          description
            "LLDP port identification.";
          uses port-id-group;
        }
        container specification-802-3 {
          config false;
          description
            "LLDP Specification 802.3.";
          container mac-physical-config {
            config false;
            description
              "Mac physical configuration.";
            leaf auto-negotiation-support {
              type supported-notsupported-enum;
              description
                "Auto-negotiation support.";
            }
            leaf auto-negotiation-status {
              type cienawstypes:enabled-disabled-enum;
              description
                "Auto-negotiation status.";
            }
            leaf pmd-auto-negotiation-advertised-capability {
              type lldp-auto-neg-capability;
              description
                "PMD Auto-negotiation advertised capability.";
            }
            leaf operational-mau-type {
              type lldp-operational-mau-type;
              description
                "Operational MAU type.";
            }
          }
          container power-via-mdi {
            config false;
            description
              "Power Via MDI.";
            leaf port-class {
              type lldp-port-class;
              description
                "Port class";
            }
            leaf mdi {
              type supported-notsupported-enum;
              description
                "mdi";
            }
            leaf mdi-power-support {
              type cienawstypes:enabled-disabled-enum;
              description
                "MDI power support.";
            }
            leaf pair-control {
              type lldp-pair-control;
              description
                "Pair control.";
            }
            leaf power-pair {
              type lldp-power-pair;
              description
                "Power pair.";
            }
            leaf power-class {
              type lldp-power-class;
              description
                "Power class.";
            }
          }
          leaf max-frame-size {
            type uint16;
            description
              "Maximum frame size.";
          }
        }
        list local-management-address-table {
          key "index";
          config false;
          max-elements "4";
          leaf index {
            type uint32;
            description
              "Unique id, read-only attribute.";
          }
          uses management-address-group;
          uses management-address-interface-group;
        }
      }
      container remote {
        config false;
        description
          "LLDP port level remote data.";
        container chassis {
          config false;
          container chassis-id {
            leaf chassis-id {
              type chassis-id;
              description
                "Chassis ID. Read only attribute.";
            }
            leaf chassis-id-subtype {
              type chassis-id-subtype;
              description
                "Chassis Id subtype.";
            }
            leaf system-name {
              type cienawstypes:string-maxl-256;
              description
                "System Name. Max string length of 255 characters.";
            }
            leaf system-description {
              type cienawstypes:string-maxl-256;
              description
                "System escription. Max string length of 255 characters.";
            }
          }
          leaf time-to-live {
            type uint16;
            config false;
            description
              "Time to live.";
          }
          container system-capabilities {
            config false;
            uses system-capability-group;
          }
          list management-address-table {
            key "index";
            config false;
            max-elements "4";
            leaf index {
              type uint32;
              description
                "Unique id, read-only attribute.";
            }
            uses management-address-group;
            uses management-address-interface-group;
          }
        }
        container port {
          config false;
          container id {
            config false;
            description
              "LLDP port identification.";
            uses port-id-group;
          }
          container specification-802-3 {
            config false;
            description
              "LLDP Specification 802.3.";
            container mac-physical-config {
              config false;
              description
                "Mac physical configuration.";
              leaf auto-negotiation-support {
                type supported-notsupported-enum;
                description
                  "Auto-negotiation support.";
              }
              leaf auto-negotiation-status {
                type cienawstypes:enabled-disabled-enum;
                description
                  "Auto-negotiation status.";
              }
              leaf pmd-auto-negotiation-advertised-capability {
                type lldp-auto-neg-capability;
                description
                  "PMD Auto-negotiation advertised capability.";
              }
              leaf operational-mau-type {
                type lldp-operational-mau-type;
                description
                  "Operational MAU type.";
              }
            }
            container power-via-mdi {
              config false;
              description
                "Power Via MDI.";
              leaf port-class {
                type lldp-port-class;
                description
                  "Port class";
              }
              leaf mdi {
                type supported-notsupported-enum;
                description
                  "mdi";
              }
              leaf mdi-power-support {
                type cienawstypes:enabled-disabled-enum;
                description
                  "MDI power support.";
              }
              leaf pair-control {
                type lldp-pair-control;
                description
                  "Pair control.";
              }
              leaf power-pair {
                type lldp-power-pair;
                description
                  "Power pair.";
              }
              leaf power-class {
                type lldp-power-class;
                description
                  "Power class.";
              }
            }
            leaf max-frame-size {
              type uint16;
              description
                "Maximum frame size.";
            }
          }
          list organization-definition-information-table {
            key "index";
            config false;
            description
              "Remote organization definition information table.";
            leaf index {
              type uint32;
              description
                "Unique id, read-only attribute.";
            }
            leaf oui {
              type cienawstypes:string-maxl-16;
              description
                "OUI.";
            }
            leaf subtype {
              type uint8;
              description
                "Sub-Type.";
            }
            leaf information {
              type cienawstypes:string-maxl-256;
              description
                "Information.";
            }
          }
          list unrecognized-tlv-table {
            key "index";
            config false;
            description
              "Remote unrecognized TLV table.";
            leaf index {
              type uint32;
              description
                "Unique id, read-only attribute.";
            }
            leaf type {
              type uint8;
              description
                "Type.";
            }
            leaf length {
              type uint32;
              description
                "Length.";
            }
            leaf value {
              type cienawstypes:string-maxl-256;
              description
                "Value.";
            }
          }
        }
      }
    }
  }
  rpc waveserver-lldp-clear-statistics {
    description
      "Clear the LLDP statistics.";
    output {
      leaf return-code {
        type uint32;
        description
          "return code: 0 is success; non-zero is failure";
      }
    }
  }
  rpc waveserver-lldp-clear-port-statistics {
    description
      "Clear the LLDP statistics for the specified port.";
    input {
      leaf port-id {
        type cienawstypes:port-name;
        mandatory true;
        description
          "The port ID/name string.";
      }
    }
    output {
      leaf return-code {
        type uint32;
        description
          "return code: 0 is success; non-zero is failure";
      }
    }
  }
}
