netconfcentral logo

openconfig-relay-agent@2016-05-16



  module openconfig-relay-agent {

    yang-version 1;

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

    prefix oc-relay;

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

    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.";

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

    }

    oc-ext:openconfig-version "0.1.0";

    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-config

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

    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 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;
        }  // container state
      }  // container agent-information-option
    }  // grouping agent-information-ipv4-global-top

    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-config

    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-state

    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 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;
        }  // container state
      }  // container agent-information-option
    }  // grouping agent-information-ipv4-interface-top

    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-config

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

    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-config

    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-interface-state

    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 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;
        }  // container state
      }  // container options
    }  // grouping agent-options-ipv6-global-top

    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 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;
        }  // container state
      }  // container options
    }  // grouping agent-options-ipv6-interface-top

    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-config

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

    grouping relay-agent-ipv4-config {
      description
        "Configuration data for DHCPv4 relay agents";
      uses relay-agent-common-config;
    }  // grouping relay-agent-ipv4-config

    grouping relay-agent-ipv4-state {
      description
        "Configuration data for DHCPv4 relay agents";
      uses relay-agent-common-state;
    }  // grouping relay-agent-ipv4-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 config

        container state {
          config false;
          description
            "Operational state data global DHCPv4";
          uses relay-agent-ipv4-config;

          uses relay-agent-ipv4-state;
        }  // container state

        uses agent-information-ipv4-global-top;

        uses relay-agent-ipv4-interfaces-top;
      }  // container dhcp
    }  // grouping relay-agent-ipv4-top

    grouping relay-agent-ipv6-config {
      description
        "Configuration data for DHCPv6 relay agents";
      uses relay-agent-common-config;
    }  // grouping relay-agent-ipv6-config

    grouping relay-agent-ipv6-state {
      description
        "Configuration data for DHCPv6 relay agents";
      uses relay-agent-common-state;
    }  // grouping relay-agent-ipv6-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 config

        container state {
          config false;
          description
            "Operational state data global DHCPv6";
          uses relay-agent-ipv6-config;

          uses relay-agent-ipv6-state;
        }  // container state

        uses agent-options-ipv6-global-top;

        uses relay-agent-ipv6-interfaces-top;
      }  // container dhcpv6
    }  // grouping relay-agent-ipv6-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-common-stats

    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-ipv4-stats

    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-ipv6-stats

    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-config

    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;
      }  // container counters
    }  // grouping relay-agent-ipv4-interfaces-state

    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 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;
          }  // container state

          uses oc-if:interface-ref;

          uses agent-information-ipv4-interface-top;
        }  // list interface
      }  // container interfaces
    }  // grouping relay-agent-ipv4-interfaces-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-config

    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;
      }  // container counters
    }  // grouping relay-agent-ipv6-interfaces-state

    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 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;
          }  // container state

          uses oc-if:interface-ref;

          uses agent-options-ipv6-interface-top;
        }  // list interface
      }  // container interfaces
    }  // grouping relay-agent-ipv6-interfaces-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;
      }  // container relay-agent
    }  // grouping relay-agent-top

    uses relay-agent-top;
  }  // module openconfig-relay-agent