blob: c0a2637f6f217a342745badff332da800308de9d [file] [log] [blame]
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
}