This YANG module defines components necessary for the configuration and management of DHCPv6 relays. The key words 'MUST', 'MUS...
Version: 2022-06-20
module ietf-dhcpv6-relay { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-relay"; prefix dhc6-rly; import ietf-inet-types { prefix inet; reference "RFC 6991: Common YANG Data Types"; } import ietf-yang-types { prefix yang; reference "RFC 6991: Common YANG Data Types"; } import ietf-dhcpv6-common { prefix dhc6; reference "RFC 9243: A YANG Data Model for DHCPv6 Configuration"; } import ietf-interfaces { prefix if; reference "RFC 8343: A YANG Data Model for Interface Management"; } import ietf-netconf-acm { prefix nacm; reference "RFC 8341: Network Configuration Access Control Model"; } organization "IETF Dynamic Host Configuration (DHC) Working Group"; contact "WG Web: <https://datatracker.ietf.org/wg/dhc/> WG List: <mailto:dhcwg@ietf.org> Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn> Author: Linhui Sun <lh.sunlinh@gmail.com> Editor: Ian Farrer <ian.farrer@telekom.de> Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de> Author: Zihao He <hezihao9512@gmail.com> Author: Michal Nowikowski <godfryd@isc.org>"; description "This YANG module defines components necessary for the configuration and management of DHCPv6 relays. The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be interpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here. Copyright (c) 2022 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). This version of this YANG module is part of RFC 9243 (https://www.rfc-editor.org/info/rfc9243); see the RFC itself for full legal notices."; revision "2022-06-20" { description "Initial revision."; reference "RFC 9243: A YANG Data Model for DHCPv6 Configuration"; } feature prefix-delegation { description "Enable if the relay functions as a delegating router for DHCPv6 prefix delegation."; reference "RFC 8415: Dynamic Host Configuration Protocol for IPv6 (DHCPv6), Section 6.3"; } grouping pd-lease-state { description "State data for the relay."; list pd-leases { key "ia-pd-prefix"; config false; description "Information about an active IA_PD prefix delegation."; leaf ia-pd-prefix { type inet:ipv6-prefix; description "Prefix that is delegated."; } leaf last-renew { type yang:date-and-time; description "Time of the last successful refresh or renew of the delegated prefix."; } leaf client-peer-address { type inet:ipv6-address; description "Peer-address of the leasing client."; } leaf client-duid { type dhc6:duid; description "DUID of the leasing client."; } leaf server-duid { type dhc6:duid; description "DUID of the delegating server."; } } // list pd-leases } // grouping pd-lease-state grouping message-statistics { description "Contains counters for the different DHCPv6 message types."; leaf discontinuity-time { type yang:date-and-time; description "The time on the most recent occasion at which any one or more of DHCPv6 relay's counters suffered a discontinuity. If no such discontinuities have occurred since the last re-initialization of the local management subsystem, then this node contains the time the local management subsystem re-initialized itself."; } leaf solicit-received-count { type yang:counter32; config false; description "Number of Solicit (1) messages received."; } leaf advertise-sent-count { type yang:counter32; config false; description "Number of Advertise (2) messages sent."; } leaf request-received-count { type yang:counter32; config false; description "Number of Request (3) messages received."; } leaf confirm-received-count { type yang:counter32; config false; description "Number of Confirm (4) messages received."; } leaf renew-received-count { type yang:counter32; config false; description "Number of Renew (5) messages received."; } leaf rebind-received-count { type yang:counter32; config false; description "Number of Rebind (6) messages received."; } leaf reply-sent-count { type yang:counter32; config false; description "Number of Reply (7) messages sent."; } leaf release-received-count { type yang:counter32; config false; description "Number of Release (8) messages received."; } leaf decline-received-count { type yang:counter32; config false; description "Number of Decline (9) messages received."; } leaf reconfigure-sent-count { type yang:counter32; config false; description "Number of Reconfigure (10) messages sent."; } leaf information-request-received-count { type yang:counter32; config false; description "Number of Information-request (11) messages received."; } leaf unknown-message-received-count { type yang:counter32; config false; description "Number of messages of unknown type that have been received."; } leaf unknown-message-sent-count { type yang:counter32; config false; description "Number of messages of unknown type that have been sent."; } leaf discarded-message-count { type yang:counter32; config false; description "Number of messages that have been discarded for any reason."; } } // grouping message-statistics grouping global-statistics { description "Global statistics for the device."; leaf relay-forward-sent-count { type yang:counter32; config false; description "Number of Relay-forward (12) messages sent."; } leaf relay-forward-received-count { type yang:counter32; config false; description "Number of Relay-forward (12) messages received."; } leaf relay-reply-received-count { type yang:counter32; config false; description "Number of Relay-reply (13) messages received."; } leaf relay-forward-unknown-sent-count { type yang:counter32; config false; description "Number of Relay-forward (12) messages containing a message of unknown type sent."; } leaf relay-forward-unknown-received-count { type yang:counter32; config false; description "Number of Relay-forward (12) messages containing a message of unknown type received."; } leaf discarded-message-count { type yang:counter32; config false; description "Number of messages that have been discarded for any reason."; } } // grouping global-statistics grouping interface-id-option-group { description "OPTION_INTERFACE_ID (18) Interface-Id Option."; reference "RFC 8415: Dynamic Host Configuration Protocol for IPv6 (DHCPv6), Section 21.18"; container interface-id-option { description "OPTION_INTERFACE_ID (18) Interface-Id Option."; leaf interface-id { type binary; description "An opaque value of arbitrary length generated by the relay agent to identify one of the relay agent's interfaces."; } } // container interface-id-option } // grouping interface-id-option-group container dhcpv6-relay { description "This container contains the configuration data nodes for the relay."; reference "RFC 8415: Dynamic Host Configuration Protocol for IPv6 (DHCPv6), Section 19"; leaf enabled { type boolean; description "Globally enables the DHCP relay function."; } list relay-if { key "if-name"; description "List of interfaces configured for DHCPv6 relaying."; leaf if-name { type if:interface-ref; description "interface-ref to the relay interface."; } leaf enabled { type boolean; description "Enables the DHCP relay function for this interface."; } leaf-list destination-address { type inet:ipv6-address; description "Each DHCPv6 relay agent may be configured with a list of destination addresses for relayed messages. The list may include unicast addresses, multicast addresses, or other valid addresses."; } leaf link-address { type inet:ipv6-address; description "An address that may be used by the server to identify the link on which the client is located."; } container relay-options { description "Definitions for DHCPv6 options that can be sent by the relay are augmented to this location from other YANG modules as required."; uses dhc6:auth-option-group; uses interface-id-option-group; } // container relay-options container statistics { description "DHCPv6 message counters for the relay's interface."; uses message-statistics; } // container statistics container prefix-delegation { if-feature prefix-delegation; presence "Enables prefix delegation for this interface."; description "Controls and holds state information for prefix delegation."; uses pd-lease-state; } // container prefix-delegation } // list relay-if container statistics { description "Global DHCPv6 message counters for the relay."; uses global-statistics; } // container statistics } // container dhcpv6-relay rpc clear-prefix-entry { nacm:default-deny-all; if-feature prefix-delegation; description "Clears an entry for an active delegated prefix from the relay."; reference "RFC 8987: DHCPv6 Prefix Delegating Relay Requirements, Section 4.4"; input { leaf lease-prefix { type leafref { path "/dhcpv6-relay/relay-if/prefix-delegation/pd-leases/ia-pd-prefix"; } mandatory true; description "IPv6 prefix of an active lease entry that will be deleted from the relay."; } } output { leaf return-message { type string; description "Response message from the server. If available, a language identifier should be included in the message."; reference "BCP 18 (RFC 2277) IETF Policy on Character Sets and Languages, Section 4.2"; } } } // rpc clear-prefix-entry rpc clear-client-prefixes { nacm:default-deny-all; if-feature prefix-delegation; description "Clears all active prefix entries for a single client."; reference "RFC 8987: DHCPv6 Prefix Delegating Relay Requirements, Section 4.4"; input { leaf client-duid { type dhc6:duid; mandatory true; description "DUID of the client."; } } output { leaf return-message { type string; description "Response message from the server. If available, a language identifier should be included in the message."; reference "BCP 18 (RFC 2277) IETF Policy on Character Sets and Languages, Section 4.2"; } } } // rpc clear-client-prefixes rpc clear-interface-prefixes { nacm:default-deny-all; if-feature prefix-delegation; description "Clears all delegated prefix bindings from an interface on the relay."; reference "RFC 8987: DHCPv6 Prefix Delegating Relay Requirements, Section 4.4"; input { leaf interface { type leafref { path "/dhcpv6-relay/relay-if/if-name"; } mandatory true; description "Reference to the relay interface that will have all active prefix delegation bindings deleted."; } } output { leaf return-message { type string; description "Response message from the server. If available, a language identifier should be included in the message."; reference "BCP 18 (RFC 2277) IETF Policy on Character Sets and Languages, Section 4.2"; } } } // rpc clear-interface-prefixes notification relay-event { description "DHCPv6 relay event notifications."; container topology-change { description "Raised if the entry for an interface with DHCPv6-related configuration or state is removed from if:interface-refs."; leaf relay-if-name { type leafref { path "/dhcpv6-relay/relay-if/if-name"; } description "Name of the interface that has been removed."; } leaf last-ipv6-addr { type inet:ipv6-address; description "Last IPv6 address configured on the interface."; } } // container topology-change } // notification relay-event } // module ietf-dhcpv6-relay
© 2023 YumaWorks, Inc. All rights reserved.