module openconfig-if-ethernet {

  yang-version "1";

  // namespace
  namespace "http://openconfig.net/yang/interfaces/ethernet";

  prefix "oc-eth";

  // import some basic types
  import openconfig-interfaces {
    prefix oc-if;
    revision-date "2016-05-26";
  }
  import iana-if-type {
    prefix ift;
    revision-date "2016-11-23";
  }
  import ietf-yang-types {
    prefix yang;
  }
  import openconfig-extensions {
    prefix oc-ext;
    revision-date "2015-10-09";
  }

  // meta
  organization "OpenConfig working group";

  contact
    "OpenConfig working group
    netopenconfig@googlegroups.com";

  description
    "Model for managing Ethernet interfaces -- augments the IETF YANG
    model for interfaces described by RFC 7223";

  oc-ext:openconfig-version "1.1.0";

  revision "2016-12-22" {
    description
      "Fixes to Ethernet interfaces model";
    reference "1.1.0";
  }

  // extension statements

  // feature statements

  // identity statements

  identity ETHERNET_SPEED {
    description "base type to specify available Ethernet link
    speeds";
  }

  identity SPEED_10MB {
    base ETHERNET_SPEED;
    description "10 Mbps Ethernet";
  }

  identity SPEED_100MB {
    base ETHERNET_SPEED;
    description "100 Mbps Ethernet";
  }

  identity SPEED_1GB {
    base ETHERNET_SPEED;
    description "1 GBps Ethernet";
  }

  identity SPEED_10GB {
    base ETHERNET_SPEED;
    description "10 GBps Ethernet";
  }

  identity SPEED_25GB {
    base ETHERNET_SPEED;
    description "25 GBps Ethernet";
  }

  identity SPEED_40GB {
    base ETHERNET_SPEED;
    description "40 GBps Ethernet";
  }

  identity SPEED_50GB {
    base ETHERNET_SPEED;
    description "50 GBps Ethernet";
  }

  identity SPEED_100GB {
    base ETHERNET_SPEED;
    description "100 GBps Ethernet";
  }

  identity SPEED_UNKNOWN {
    base ETHERNET_SPEED;
    description
      "Interface speed is unknown.  Systems may report
      speed UNKNOWN when an interface is down or unpopuplated (e.g.,
      pluggable not present).";
  }

  // typedef statements


  // grouping statements

  grouping ethernet-interface-config {
    description "Configuration items for Ethernet interfaces";

    leaf mac-address {
      type yang:mac-address;
      description
        "Assigns a MAC address to the Ethernet interface.  If not
        specified, the corresponding operational state leaf is
        expected to show the system-assigned MAC address.";
    }

    leaf auto-negotiate {
      type boolean;
      default true;
      description
        "Set to TRUE to request the interface to auto-negotiate
        transmission parameters with its peer interface.  When
        set to FALSE, the transmission parameters are specified
        manually.";
      reference
        "IEEE 802.3-2012 auto-negotiation transmission parameters";
    }

    leaf duplex-mode {
      type enumeration {
        enum FULL {
          description "Full duplex mode";
        }
        enum HALF {
          description "Half duplex mode";
        }
      }
      description
        "When auto-negotiate is TRUE, this optionally sets the
        duplex mode that will be advertised to the peer.  If
        unspecified, the interface should negotiate the duplex mode
        directly (typically full-duplex).  When auto-negotiate is
        FALSE, this sets the duplex mode on the interface directly.";
    }

    leaf port-speed {
      type identityref {
        base ETHERNET_SPEED;
      }
      description
        "When auto-negotiate is TRUE, this optionally sets the
        port-speed mode that will be advertised to the peer for
        negotiation.  If unspecified, it is expected that the
        interface will select the highest speed available based on
        negotiation.  When auto-negotiate is set to FALSE, sets the
        link speed to a fixed value -- supported values are defined
        by ETHERNET_SPEED identities";
    }

    leaf enable-flow-control {
      type boolean;
      default false;
      description
        "Enable or disable flow control for this interface.
        Ethernet flow control is a mechanism by which a receiver
        may send PAUSE frames to a sender to stop transmission for
        a specified time.
        This setting should override auto-negotiated flow control
        settings.  If left unspecified, and auto-negotiate is TRUE,
        flow control mode is negotiated with the peer interface.";
      reference
        "IEEE 802.3x";
    }
  }

  grouping ethernet-interface-state-counters {
    description
      "Ethernet-specific counters and statistics";

    // ingress counters

    leaf in-mac-control-frames {
      type yang:counter64;
      description
        "MAC layer control frames received on the interface";
    }

    leaf in-mac-pause-frames {
      type yang:counter64;
      description
        "MAC layer PAUSE frames received on the interface";
    }

    leaf in-oversize-frames {
      type yang:counter64;
      description
        "Number of oversize frames received on the interface";
    }

    leaf in-jabber-frames {
      type yang:counter64;
      description
        "Number of jabber frames received on the
        interface.  Jabber frames are typically defined as oversize
        frames which also have a bad CRC.  Implementations may use
        slightly different definitions of what constitutes a jabber
        frame.  Often indicative of a NIC hardware problem.";
    }

    leaf in-fragment-frames {
      type yang:counter64;
      description
        "Number of fragment frames received on the interface.";
    }

    leaf in-8021q-frames {
      type yang:counter64;
      description
        "Number of 802.1q tagged frames received on the interface";
    }

    leaf in-crc-errors {
      type yang:counter64;
      description
        "Number of receive error events due to FCS/CRC check
        failure";
    }

    // egress counters

    leaf out-mac-control-frames {
      type yang:counter64;
      description
        "MAC layer control frames sent on the interface";
    }

    leaf out-mac-pause-frames {
      type yang:counter64;
      description
        "MAC layer PAUSE frames sent on the interface";
    }

    leaf out-8021q-frames {
      type yang:counter64;
      description
        "Number of 802.1q tagged frames sent on the interface";
    }
  }

  grouping ethernet-interface-state {
    description
      "Grouping for defining Ethernet-specific operational state";

    leaf hw-mac-address {
      type yang:mac-address;
      description
        "Represenets the 'burned-in',  or system-assigned, MAC
        address for the Ethernet interface.";
    }

    leaf effective-speed {
      type uint32;
      units Mbps;
      description
        "Reports the effective speed of the interface, e.g., the
        negotiated speed if auto-negotiate is enabled";
    }

    leaf negotiated-duplex-mode {
      type enumeration {
        enum FULL {
          description "Full duplex mode";
        }
        enum HALF {
          description "Half duplex mode";
        }
      }
      description
        "When auto-negotiate is set to TRUE, and the interface has
        completed auto-negotiation with the remote peer, this value
        shows the duplex mode that has been negotiated.";
    }

    leaf negotiated-port-speed {
      type identityref {
        base ETHERNET_SPEED;
      }
      description
        "When auto-negotiate is set to TRUE, and the interface has
        completed auto-negotiation with the remote peer, this value
        shows the interface speed that has been negotiated.";
    }

    container counters {
      description "Ethernet interface counters";

      uses ethernet-interface-state-counters;

    }

  }

  // data definition statements

  grouping ethernet-top {
    description "top-level Ethernet config and state containers";

    container ethernet {
      description
        "Top-level container for ethernet configuration
        and state";

      container config {
        description "Configuration data for ethernet interfaces";

        uses ethernet-interface-config;

      }

      container state {

        config false;
        description "State variables for Ethernet interfaces";

        uses ethernet-interface-config;
        uses ethernet-interface-state;

      }

    }
  }

  // augment statements

  augment "/oc-if:interfaces/oc-if:interface" {
    description "Adds addtional Ethernet-specific configuration to
    interfaces model";

    uses ethernet-top {
      when "oc-if:state/oc-if:type = 'ift:ethernetCsmacd'" {
      description "Additional interface configuration parameters when
      the interface type is Ethernet";
      }
    }
  }

  // rpc statements

  // notification statements

}
