From 639509ad42f8bd6baf9b6f5b668a9bbfb05108d4 Mon Sep 17 00:00:00 2001 From: Andrej Kozemcak Date: Thu, 20 Dec 2018 17:49:33 +0100 Subject: Add Openconfig YANG modules. Change-Id: I7e98bf1ca7196cff042a35b8bf096d2ea9d80028 Signed-off-by: Andrej Kozemcak --- .../yang/openconfig/openconfig-relay-agent.yang | 815 +++++++++++++++++++++ 1 file changed, 815 insertions(+) create mode 100644 src/plugins/yang/openconfig/openconfig-relay-agent.yang (limited to 'src/plugins/yang/openconfig/openconfig-relay-agent.yang') diff --git a/src/plugins/yang/openconfig/openconfig-relay-agent.yang b/src/plugins/yang/openconfig/openconfig-relay-agent.yang new file mode 100644 index 0000000..c0a2637 --- /dev/null +++ b/src/plugins/yang/openconfig/openconfig-relay-agent.yang @@ -0,0 +1,815 @@ +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 + + +} \ No newline at end of file -- cgit 1.2.3-korg