module openconfig-relay-agent {

  yang-version "1";

  // namespace
  namespace "http://openconfig.net/yang/relay-agent";

  prefix "oc-relay";

  // import some basic types
  import ietf-inet-types { prefix inet; }
  import ietf-yang-types { prefix yang; }
  import openconfig-interfaces { prefix oc-if; }
  import openconfig-extensions { prefix oc-ext; }


  // meta
  organization "OpenConfig working group";

  contact
    "OpenConfig working group
    www.openconfig.net";

  description
    "This module describes a model for configuration and operational
    state related to relay agents typically used for DHCP and BOOTP
    packets.  The supports both DHCP and DHCPv6 and device-wide and
    per-interface settings.";

  oc-ext:openconfig-version "0.1.0";

  revision "2016-05-16" {
    description
      "Initial public release";
    reference "0.1.0";
  }


  // grouping statements

  grouping agent-information-ipv4-common-config {
    description
      "Common configuration data for DHCP relay option";

    leaf enable {
      type boolean;
      default false;
      description
        "Enable sending the DHCP option for Relay Agent information
        -- option 82.";
      reference
        "RFC 3046 - DHCP Relay Agent Information Option";
    }
  }

  grouping agent-information-ipv4-common-state {
    description
      "Common operational state data for DHCP relay option";

  }

  grouping agent-information-ipv4-global-top {
    description
      "Top-level grouping for agent information data at global level";

    container agent-information-option {
      description
        "Top-level container for relay agent information option
        data";

      container config {
        description
          "Configuration data for the relay agent information
          option";

        uses agent-information-ipv4-common-config;
      }

      container state {

        config false;

        description
          "Operational state data for agent information at global
          level";

        uses agent-information-ipv4-common-config;
        uses agent-information-ipv4-common-state;
      }
    }
  }

  grouping agent-information-ipv4-interface-config {
    description
      "Configuration data for DCHP relay option on interfaces";

    leaf circuit-id {
      type string;
      description
        "Encodes an agent-local identifier of the circuit from which
        a DHCP client-to-server packet was received.  It is intended
        for use by agents in relaying DHCP responses back to the
        proper circuit.  The circuit id is an opaque value";
      reference
        "RFC 3046 - DHCP Relay Agent Information Option";
    }

    leaf remote-id {
      type string;
      description
        "Provides a mechanism to identify the remote host end of
        the circuit.  The remote-id should be thought of as an
        opaque value, but must be globally unique.";
      reference
        "RFC 3046 - DHCP Relay Agent Information Option";
    }
  }

  grouping agent-information-ipv4-interface-state {
    description
      "Operational state data for DHCP relay option on interfaces";

    leaf sent-circuit-id {
      type string;
      description
        "Reports the circuit-id sent by the system to the DHCP
        server.";
    }

    leaf sent-remote-id {
      type string;
      description
        "Reports the remote-id value sent by the system to the DHCP
        server";
    }
  }

  grouping agent-information-ipv4-interface-top {
    description
      "Top-level grouping for relay agent information option data";

    container agent-information-option {
      description
        "Top-level container for relay agent information option
        data";

      container config {
        description
          "Configuration data for the relay agent information
          option";

        uses agent-information-ipv4-common-config;
        uses agent-information-ipv4-interface-config;
      }

      container state {

        config false;

        description
          "Operational state data ";

        uses agent-information-ipv4-common-config;
        uses agent-information-ipv4-interface-config;
        uses agent-information-ipv4-common-state;
        uses agent-information-ipv4-interface-state;
      }
    }
  }

  grouping agent-options-ipv6-common-config {
    description
      "Configuration data for DHCPv6 options";

    leaf enable-interface-id {
      type boolean;
      default false;
      description
        "Enables DHCPv6 OPTION_INTERFACE_ID (18) to identify the
        interface on which the client message was received.";
      reference
        "IETF RFC 3315 - Dynamic Host Configuration Protocol for
        IPv6 (DHCPv6)";
    }

    leaf enable-remote-id {
      type boolean;
      default false;
      description
        "Sets DHCPv6 OPTION_REMOTE_ID (37).  This option is the
        DHCPv6 equivalent for the IPv4 (DHCPv4) Relay Agent Option's
        Remote-ID suboption as specified in RFC 3046. The remote-id
        field may be used to encode a user name, remote IP address,
        interface/port identifier, etc.";
      reference
        "IETF RFC 4649 - Dynamic Host Configuration Protocol for
        IPv6 (DHCPv6) Relay Agent Remote-ID Option";
    }
  }

  grouping agent-options-ipv6-common-state {
    description
      "Operational state data for DHCPv6 options";
  }

  grouping agent-options-ipv6-interface-config {
    description
      "Configuration data for DHCPv6 options";

    leaf interface-id {
      type string;
      description
        "Sets DHCPv6 OPTION_INTERFACE_ID (18) to identify the
        interface on which the client message was received.";
      reference
        "IETF RFC 3315 - Dynamic Host Configuration Protocol for
        IPv6 (DHCPv6)";
    }

    leaf remote-id {
      type string;
      description
        "Sets DHCPv6 OPTION_REMOTE_ID (37).  This option is the
        DHCPv6 equivalent for the IPv4 (DHCPv4) Relay Agent Option's
        Remote-ID suboption as specified in RFC 3046. The remote-id
        field may be used to encode a user name, remote IP address,
        interface/port identifier, etc.";
      reference
        "IETF RFC 4649 - Dynamic Host Configuration Protocol for
        IPv6 (DHCPv6) Relay Agent Remote-ID Option";
    }
  }

  grouping agent-options-ipv6-interface-state {
    description
      "Operational state data for DHCPv6 options";

    leaf sent-interface-id {
      type string;
      description
        "Reflects the DHCPv6 OPTION_INTERFACE_ID (18) sent to the
        server by the system.";
      reference
        "IETF RFC 3315 - Dynamic Host Configuration Protocol for
        IPv6 (DHCPv6)";
    }

    leaf sent-remote-id {
      type string;
      description
        "Reflects the DHCPv6 OPTION_REMOTE_ID (37) sent to the
        server by the system.";
      reference
        "IETF RFC 4649 - Dynamic Host Configuration Protocol for
        IPv6 (DHCPv6) Relay Agent Remote-ID Option";
    }
  }

  grouping agent-options-ipv6-global-top {
    description
      "Top-level grouping for DHCPv6 options on interfaces";

    container options {
      description
        "Top-level container for DHCPv6 agent options on interfaces";

      container config {
        description
          "Configuration data ";

        uses agent-options-ipv6-common-config;
      }

      container state {

        config false;

        description
          "Operational state data for DHCPv6 agent option on an
          interface";

        uses agent-options-ipv6-common-config;
        uses agent-options-ipv6-common-state;
      }
    }
  }

  grouping agent-options-ipv6-interface-top {
    description
      "Top-level grouping for DHCPv6 options on interfaces";

    container options {
      description
        "Top-level container for DHCPv6 agent options on interfaces";

      container config {
        description
          "Configuration data ";

        uses agent-options-ipv6-common-config;
        uses agent-options-ipv6-interface-config;
      }

      container state {

        config false;

        description
          "Operational state data for DHCPv6 agent option on an
          interface";

        uses agent-options-ipv6-common-config;
        uses agent-options-ipv6-interface-config;
        uses agent-options-ipv6-common-state;
        uses agent-options-ipv6-interface-state;
      }
    }
  }

  grouping relay-agent-common-config {
    description
      "Configuration data for global level relay agent options,
      common across address families";

      leaf enable-relay-agent {
        type boolean;
        default false;
        description
          "Enables DHCP/BOOTP relay agent on all interfaces";
      }
  }

  grouping relay-agent-common-state {
    description
      "Operational state data for global level relay agent, common
      across address families";
  }

  grouping relay-agent-ipv4-config {
    description
      "Configuration data for DHCPv4 relay agents";

    uses relay-agent-common-config;
  }

  grouping relay-agent-ipv4-state {
    description
      "Configuration data for DHCPv4 relay agents";

    uses relay-agent-common-state;
  }


  grouping relay-agent-ipv4-top {
    description
      "Top-level grouping for global relay agent data";

    container dhcp {
      description
        "Top-level container for global relay agent data";

      container config {
        description
          "Configuration data for global DHCPv4";

        uses relay-agent-ipv4-config;
      }

      container state {

        config false;

        description
          "Operational state data global DHCPv4";

        uses relay-agent-ipv4-config;
        uses relay-agent-ipv4-state;
      }

      uses agent-information-ipv4-global-top;
      uses relay-agent-ipv4-interfaces-top;
    }
  }

  grouping relay-agent-ipv6-config {
    description
      "Configuration data for DHCPv6 relay agents";

    uses relay-agent-common-config;
  }

  grouping relay-agent-ipv6-state {
    description
      "Configuration data for DHCPv6 relay agents";

    uses relay-agent-common-state;
  }

  grouping relay-agent-ipv6-top {
    description
      "Top-level grouping for global relay agent data";

    container dhcpv6 {
      description
        "Top-level container for global relay agent data";

      container config {
        description
          "Configuration data for global DHCPv6";

        uses relay-agent-ipv6-config;
      }

      container state {

        config false;

        description
          "Operational state data global DHCPv6";

        uses relay-agent-ipv6-config;
        uses relay-agent-ipv6-state;
      }

      uses agent-options-ipv6-global-top;
      uses relay-agent-ipv6-interfaces-top;
    }
  }


  grouping relay-agent-common-stats {
    description
      "Common DHCP / BOOTP message statistics for
      DHCPv4 and DHCPv6";


    leaf total-dropped {
      type yang:counter64;
      description
        "Total number of DHCP packets dropped by the relay agent";
    }

    leaf invalid-opcode {
      type yang:counter64;
      description
        "Number of DHCP packets dropped due to an invalid opcode";
    }

    leaf invalid-options {
      type yang:counter64;
      description
        "Number of DHCP packets dropped due to an invalid option";
    }
  }

  grouping relay-agent-ipv4-stats {
    description
      "DHCPv4 relay agent message statistics";

    leaf bootrequest-received {
      type yang:counter64;
      description
        "BOOTREQUEST messages received by the relay agent";
    }

    leaf dhcp-decline-received {
      type yang:counter64;
      description
        "DHCP DECLINE messages received by the relay agent";
    }

    leaf dhcp-discover-received {
      type yang:counter64;
      description
        "DHCP DISCOVER messages received by the relay agent";
    }

    leaf dhcp-inform-received {
      type yang:counter64;
      description
        "DHCP INFORM messages received by the relay agent";
    }

    leaf dhcp-release-received {
      type yang:counter64;
      description
        "DHCP RELEASE messages received by the relay agent";
    }

    leaf dhcp-request-received {
      type yang:counter64;
      description
        "DHCP REQUEST messages received by the relay agent";
    }

    leaf bootrequest-sent {
      type yang:counter64;
      description
        "BOOTREQUEST messages forwarded by the relay agent";
    }

    leaf bootreply-sent {
      type yang:counter64;
      description
        "BOOTREPLY messages forwarded by the relay agent";
    }

    leaf dhcp-offer-sent {
      type yang:counter64;
      description
        "DHCP OFFER messages sent by the relay agent";
    }

    leaf dhcp-ack-sent {
      type yang:counter64;
      description
        "DHCP ACK messages sent by the relay agent";
    }

    leaf dhcp-nack-sent {
      type yang:counter64;
      description
        "DHCP NACK messages sent by the relay agent";
    }
  }

  grouping relay-agent-ipv6-stats {
    description
      "DHCPv4 relay agent message statistics";

    leaf dhcpv6-solicit-received {
      type yang:counter64;
      description
        "Number of DHCPv6 SOLICIT messages received from clients
        by the relay agent";
    }

    leaf dhcpv6-decline-received {
      type yang:counter64;
      description
        "Number of DHCPv6 DECLINE messages received from
        clients by the relay agent";
    }

    leaf dhcpv6-request-received {
      type yang:counter64;
      description
        "Number of DHCPv6 request messages received from clients
        by the relay agent";
    }

    leaf dhcpv6-release-received {
      type yang:counter64;
      description
        "Number of DHCPv6 release messages received from clients
        by the relay agent";
    }

    leaf dhcpv6-confirm-received {
      type yang:counter64;
      description
        "Number of DHCPv6 confirm messages received from clients
        by the relay agent";
    }

    leaf dhcpv6-rebind-received {
      type yang:counter64;
      description
        "Number of DHCPv6 rebind messages received from clients
        by the relay agent";
    }

    leaf dhcpv6-info-request-received {
      type yang:counter64;
      description
        "Number of DHCPv6 information requests messages received from
        clients by the relay agent";
    }

    leaf dhcpv6-relay-reply-received {
      type yang:counter64;
      description
        "Number of DHCPv6 relay reply messages received from servers
        by the relay agent";
    }

    leaf dhcpv6-adverstise-sent {
      type yang:counter64;
      description
        "Number of DHCPv6 adverstise messages sent to clients by
        the relay agent";
    }

    leaf dhcpv6-reply-sent {
      type yang:counter64;
      description
        "Number of DHCPv6 reply messages sent to clients by
        the relay agent";
    }

    leaf dhcpv6-reconfigure-sent {
      type yang:counter64;
      description
        "Number of DHCPv6 reconfigure messages sent to clients by
        the relay agent";
    }

    leaf dhcpv6-relay-forw-sent {
      type yang:counter64;
      description
        "Number of DHCPv6 relay-forward messages sent to servers
        by the relay agent";
    }

  }

  grouping relay-agent-ipv4-interfaces-config {
    description
      "Configuration data for interfaces enabled for relaying";

    leaf id {
      type oc-if:interface-id;
      description
        "Name of the interface on which relay agent is active";
    }

    leaf enable {
      type boolean;
      description
        "Enables the relay agent on the referenced interface.
        At least one helper address should also be configured
        for forwarding requested.";
    }

    leaf-list helper-address {
      type inet:ip-address;
      description
        "List of IPv4 or IPv6 addresses of DHCP servers to which the
        relay agent should forward DHCPv4 requests.  The relay agent is
        expected to forward DHCPv4/BOOTP requests to all listed
        server addresses when DHCPv4 relaying is enabled globally, or
        on the interface.";
    }
  }

  grouping relay-agent-ipv4-interfaces-state {
    description
      "Operational state data for interfaces enabled for relaying";

    container counters {
      description
        "Counters and statistics for relay agent operation.";

      uses relay-agent-common-stats;
      uses relay-agent-ipv4-stats;
    }
  }

  grouping relay-agent-ipv4-interfaces-top {
    description
      "Top-level grouping for DHCPv4 relays on interfaces";

    container interfaces {
      description
        "Enclosing container for the list of interface references.";

      list interface {
        key "id";
        description
          "List of interfaces on which the relay agent is
          configured.";

        leaf id {
          type leafref {
            path "../config/id";
          }
          description
            "Reference to the interface list key";
        }

        container config {
          description
            "Configuration data for relay agent interfaces.";

          uses relay-agent-ipv4-interfaces-config;
        }

        container state {

          config false;

          description
            "Operational state data for relay agent interfaces.";

          uses relay-agent-ipv4-interfaces-config;
          uses relay-agent-ipv4-interfaces-state;
        }

        uses oc-if:interface-ref;
        uses agent-information-ipv4-interface-top;
      }
    }
  }

  grouping relay-agent-ipv6-interfaces-config {
    description
      "Configuration data for interfaces enabled for relaying";

    leaf id {
      type oc-if:interface-id;
      description
        "Name of the interface on which relay agent is active";
    }

    leaf enable {
      type boolean;
      description
        "Enables the relay agent on the referenced interface.
        At least one helper address should also be configured
        for forwarding requested.";
    }

    leaf-list helper-address {
      type inet:ipv6-address;
      description
        "List of IPv6 addresses of DHCP servers to which the
        relay agent should forward DHCPv6 requests.  The relay agent
        is expected to forward DHCPv4/BOOTP requests to all listed
        server addresses when DHCPv6 relaying is enabled globally, or
        on the interface.";
    }
  }

  grouping relay-agent-ipv6-interfaces-state {
    description
      "Operational state data for interfaces enabled for relaying";

    container counters {
      description
        "Counters and statistics for relay agent operation.";

      uses relay-agent-common-stats;
      uses relay-agent-ipv6-stats;
    }
  }

  grouping relay-agent-ipv6-interfaces-top {
    description
      "Top-level grouping for DHCPv4 relays on interfaces";

    container interfaces {
      description
        "Enclosing container for the list of interface references.";

      list interface {
        key "id";
        description
          "List of interfaces on which the relay agent is
          configured.";

        leaf id {
          type leafref {
            path "../config/id";
          }
          description
            "Reference to the interface list key";
        }

        container config {
          description
            "Configuration data for relay agent interfaces.";

          uses relay-agent-ipv6-interfaces-config;
        }

        container state {

          config false;

          description
            "Operational state data for relay agent interfaces.";

          uses relay-agent-ipv6-interfaces-config;
          uses relay-agent-ipv6-interfaces-state;
        }

        uses oc-if:interface-ref;
        uses agent-options-ipv6-interface-top;
      }
    }
  }

  grouping relay-agent-top {
    description
      "Top-level container for relay agent configuration and opstate
      data.";

    container relay-agent {
      description
        "Top level container for relay-agent configuration and
        operational state data";

      uses relay-agent-ipv4-top;
      uses relay-agent-ipv6-top;
    }
  }

  // data definition statements

  uses relay-agent-top;

  // augment statements


}