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