ietf-dhcpv6-relay

This YANG module defines components necessary for the configuration and management of DHCPv6 relays. The key words 'MUST', 'MUS...

  • Version: 2022-06-20

    ietf-dhcpv6-relay@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.