openconfig-relay-agent

This module describes a model for configuration and operational state related to relay agents typically used for DHCP and BOOTP ...

  • Version: 2018-11-21

    openconfig-relay-agent@2018-11-21


    
      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 "2018-11-21" {
          description
            "Add OpenConfig module metadata extensions.";
          reference
            "0.1.1";
    
        }
    
        revision "2016-05-16" {
          description "Initial public release";
          reference
            "0.1.0";
    
        }
    
        oc-ext:openconfig-version "0.1.1";
        oc-ext:regexp-posix;
        oc-ext:catalog-organization "openconfig";
        oc-ext:origin "openconfig";
    
        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
    

© 2023 YumaWorks, Inc. All rights reserved.