ietf-ip

This module contains a collection of YANG definitions for configuring IP implementations. Copyright (c) 2014 IETF Trust and the...

  • Version: 2014-06-16

    ietf-ip@2014-06-16


    
      module ietf-ip {
    
        yang-version 1;
    
        namespace
          "urn:ietf:params:xml:ns:yang:ietf-ip";
    
        prefix ip;
    
        import ietf-interfaces {
          prefix if;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import ietf-yang-types {
          prefix yang;
        }
    
        organization
          "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
    
        contact
          "WG Web:   <http://tools.ietf.org/wg/netmod/>
        WG List:  <mailto:netmod@ietf.org>
    
        WG Chair: Thomas Nadeau
                  <mailto:tnadeau@lucidvision.com>
    
        WG Chair: Juergen Schoenwaelder
                  <mailto:j.schoenwaelder@jacobs-university.de>
    
        Editor:   Martin Bjorklund
                  <mailto:mbj@tail-f.com>";
    
        description
          "This module contains a collection of YANG definitions for
        configuring IP implementations.
    
        Copyright (c) 2014 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 Simplified BSD License
        set forth in Section 4.c of the IETF Trust's Legal Provisions
        Relating to IETF Documents
        (http://trustee.ietf.org/license-info).
    
        This version of this YANG module is part of RFC 7277; see
        the RFC itself for full legal notices.";
    
        revision "2014-06-16" {
          description "Initial revision.";
          reference
            "RFC 7277: A YANG Data Model for IP Management";
    
        }
    
    
        feature ipv4-non-contiguous-netmasks {
          description
            "Indicates support for configuring non-contiguous
          subnet masks.";
        }
    
        feature ipv6-privacy-autoconf {
          description
            "Indicates support for Privacy Extensions for Stateless Address
          Autoconfiguration in IPv6.";
          reference
            "RFC 4941: Privacy Extensions for Stateless Address
            	  Autoconfiguration in IPv6";
    
        }
    
        typedef ip-address-origin {
          type enumeration {
            enum "other" {
              value 0;
              description
                "None of the following.";
            }
            enum "static" {
              value 1;
              description
                "Indicates that the address has been statically
              configured - for example, using NETCONF or a Command Line
              Interface.";
            }
            enum "dhcp" {
              value 2;
              description
                "Indicates an address that has been assigned to this
              system by a DHCP server.";
            }
            enum "link-layer" {
              value 3;
              description
                "Indicates an address created by IPv6 stateless
              autoconfiguration that embeds a link-layer address in its
              interface identifier.";
            }
            enum "random" {
              value 4;
              description
                "Indicates an address chosen by the system at
    
              random, e.g., an IPv4 address within 169.254/16, an
              RFC 4941 temporary address, or an RFC 7217 semantically
              opaque address.";
              reference
                "RFC 4941: Privacy Extensions for Stateless Address
                	  Autoconfiguration in IPv6
                 RFC 7217: A Method for Generating Semantically Opaque
                	  Interface Identifiers with IPv6 Stateless
                	  Address Autoconfiguration (SLAAC)";
    
            }
          }
          description
            "The origin of an address.";
        }
    
        typedef neighbor-origin {
          type enumeration {
            enum "other" {
              value 0;
              description
                "None of the following.";
            }
            enum "static" {
              value 1;
              description
                "Indicates that the mapping has been statically
              configured - for example, using NETCONF or a Command Line
              Interface.";
            }
            enum "dynamic" {
              value 2;
              description
                "Indicates that the mapping has been dynamically resolved
              using, e.g., IPv4 ARP or the IPv6 Neighbor Discovery
              protocol.";
            }
          }
          description
            "The origin of a neighbor entry.";
        }
    
        augment /if:interfaces/if:interface {
          description
            "Parameters for configuring IP on interfaces.
    
          If an interface is not capable of running IP, the server
          must not allow the client to configure these parameters.";
          container ipv4 {
            presence
              "Enables IPv4 unless the 'enabled' leaf
            (which defaults to 'true') is set to 'false'";
            description
              "Parameters for the IPv4 address family.";
            leaf enabled {
              type boolean;
              default 'true';
              description
                "Controls whether IPv4 is enabled or disabled on this
              interface.  When IPv4 is enabled, this interface is
              connected to an IPv4 stack, and the interface can send
              and receive IPv4 packets.";
            }
    
            leaf forwarding {
              type boolean;
              default 'false';
              description
                "Controls IPv4 packet forwarding of datagrams received by,
              but not addressed to, this interface.  IPv4 routers
              forward datagrams.  IPv4 hosts do not (except those
              source-routed via the host).";
            }
    
            leaf mtu {
              type uint16 {
                range "68..max";
              }
              units "octets";
              description
                "The size, in octets, of the largest IPv4 packet that the
              interface will send and receive.
    
              The server may restrict the allowed values for this leaf,
              depending on the interface's type.
    
              If this leaf is not configured, the operationally used MTU
              depends on the interface's type.";
              reference
                "RFC 791: Internet Protocol";
    
            }
    
            list address {
              key "ip";
              description
                "The list of configured IPv4 addresses on the interface.";
              leaf ip {
                type inet:ipv4-address-no-zone;
                description
                  "The IPv4 address on the interface.";
              }
    
              choice subnet {
                mandatory true;
                description
                  "The subnet can be specified as a prefix-length, or,
                if the server supports non-contiguous netmasks, as
                a netmask.";
                leaf prefix-length {
                  type uint8 {
                    range "0..32";
                  }
                  description
                    "The length of the subnet prefix.";
                }
                leaf netmask {
                  if-feature ipv4-non-contiguous-netmasks;
                  type yang:dotted-quad;
                  description
                    "The subnet specified as a netmask.";
                }
              }  // choice subnet
            }  // list address
    
            list neighbor {
              key "ip";
              description
                "A list of mappings from IPv4 addresses to
              link-layer addresses.
    
              Entries in this list are used as static entries in the
              ARP Cache.";
              reference
                "RFC 826: An Ethernet Address Resolution Protocol";
    
              leaf ip {
                type inet:ipv4-address-no-zone;
                description
                  "The IPv4 address of the neighbor node.";
              }
    
              leaf link-layer-address {
                type yang:phys-address;
                mandatory true;
                description
                  "The link-layer address of the neighbor node.";
              }
            }  // list neighbor
          }  // container ipv4
    
          container ipv6 {
            presence
              "Enables IPv6 unless the 'enabled' leaf
            (which defaults to 'true') is set to 'false'";
            description
              "Parameters for the IPv6 address family.";
            leaf enabled {
              type boolean;
              default 'true';
              description
                "Controls whether IPv6 is enabled or disabled on this
              interface.  When IPv6 is enabled, this interface is
              connected to an IPv6 stack, and the interface can send
              and receive IPv6 packets.";
            }
    
            leaf forwarding {
              type boolean;
              default 'false';
              description
                "Controls IPv6 packet forwarding of datagrams received by,
              but not addressed to, this interface.  IPv6 routers
              forward datagrams.  IPv6 hosts do not (except those
              source-routed via the host).";
              reference
                "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
                	  Section 6.2.1, IsRouter";
    
            }
    
            leaf mtu {
              type uint32 {
                range "1280..max";
              }
              units "octets";
              description
                "The size, in octets, of the largest IPv6 packet that the
              interface will send and receive.
    
              The server may restrict the allowed values for this leaf,
              depending on the interface's type.
    
              If this leaf is not configured, the operationally used MTU
              depends on the interface's type.";
              reference
                "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
                	  Section 5";
    
            }
    
            list address {
              key "ip";
              description
                "The list of configured IPv6 addresses on the interface.";
              leaf ip {
                type inet:ipv6-address-no-zone;
                description
                  "The IPv6 address on the interface.";
              }
    
              leaf prefix-length {
                type uint8 {
                  range "0..128";
                }
                mandatory true;
                description
                  "The length of the subnet prefix.";
              }
            }  // list address
    
            list neighbor {
              key "ip";
              description
                "A list of mappings from IPv6 addresses to
              link-layer addresses.
    
              Entries in this list are used as static entries in the
              Neighbor Cache.";
              reference
                "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
    
              leaf ip {
                type inet:ipv6-address-no-zone;
                description
                  "The IPv6 address of the neighbor node.";
              }
    
              leaf link-layer-address {
                type yang:phys-address;
                mandatory true;
                description
                  "The link-layer address of the neighbor node.";
              }
            }  // list neighbor
    
            leaf dup-addr-detect-transmits {
              type uint32;
              default '1';
              description
                "The number of consecutive Neighbor Solicitation messages
              sent while performing Duplicate Address Detection on a
              tentative address.  A value of zero indicates that
              Duplicate Address Detection is not performed on
              tentative addresses.  A value of one indicates a single
              transmission with no follow-up retransmissions.";
              reference
                "RFC 4862: IPv6 Stateless Address Autoconfiguration";
    
            }
    
            container autoconf {
              description
                "Parameters to control the autoconfiguration of IPv6
              addresses, as described in RFC 4862.";
              reference
                "RFC 4862: IPv6 Stateless Address Autoconfiguration";
    
              leaf create-global-addresses {
                type boolean;
                default 'true';
                description
                  "If enabled, the host creates global addresses as
                described in RFC 4862.";
                reference
                  "RFC 4862: IPv6 Stateless Address Autoconfiguration
                  	  Section 5.5";
    
              }
    
              leaf create-temporary-addresses {
                if-feature ipv6-privacy-autoconf;
                type boolean;
                default 'false';
                description
                  "If enabled, the host creates temporary addresses as
                described in RFC 4941.";
                reference
                  "RFC 4941: Privacy Extensions for Stateless Address
                  	  Autoconfiguration in IPv6";
    
              }
    
              leaf temporary-valid-lifetime {
                if-feature ipv6-privacy-autoconf;
                type uint32;
                units "seconds";
                default '604800';
                description
                  "The time period during which the temporary address
                is valid.";
                reference
                  "RFC 4941: Privacy Extensions for Stateless Address
                  	  Autoconfiguration in IPv6
                  	  - TEMP_VALID_LIFETIME";
    
              }
    
              leaf temporary-preferred-lifetime {
                if-feature ipv6-privacy-autoconf;
                type uint32;
                units "seconds";
                default '86400';
                description
                  "The time period during which the temporary address is
                preferred.";
                reference
                  "RFC 4941: Privacy Extensions for Stateless Address
                  	  Autoconfiguration in IPv6
                  	  - TEMP_PREFERRED_LIFETIME";
    
              }
            }  // container autoconf
          }  // container ipv6
        }
    
        augment /if:interfaces-state/if:interface {
          description
            "Data nodes for the operational state of IP on interfaces.";
          container ipv4 {
            presence
              "Present if IPv4 is enabled on this interface";
            config false;
            description
              "Interface-specific parameters for the IPv4 address family.";
            leaf forwarding {
              type boolean;
              description
                "Indicates whether IPv4 packet forwarding is enabled or
              disabled on this interface.";
            }
    
            leaf mtu {
              type uint16 {
                range "68..max";
              }
              units "octets";
              description
                "The size, in octets, of the largest IPv4 packet that the
              interface will send and receive.";
              reference
                "RFC 791: Internet Protocol";
    
            }
    
            list address {
              key "ip";
              description
                "The list of IPv4 addresses on the interface.";
              leaf ip {
                type inet:ipv4-address-no-zone;
                description
                  "The IPv4 address on the interface.";
              }
    
              choice subnet {
                description
                  "The subnet can be specified as a prefix-length, or,
                if the server supports non-contiguous netmasks, as
                a netmask.";
                leaf prefix-length {
                  type uint8 {
                    range "0..32";
                  }
                  description
                    "The length of the subnet prefix.";
                }
                leaf netmask {
                  if-feature ipv4-non-contiguous-netmasks;
                  type yang:dotted-quad;
                  description
                    "The subnet specified as a netmask.";
                }
              }  // choice subnet
    
              leaf origin {
                type ip-address-origin;
                description
                  "The origin of this address.";
              }
            }  // list address
    
            list neighbor {
              key "ip";
              description
                "A list of mappings from IPv4 addresses to
              link-layer addresses.
    
              This list represents the ARP Cache.";
              reference
                "RFC 826: An Ethernet Address Resolution Protocol";
    
              leaf ip {
                type inet:ipv4-address-no-zone;
                description
                  "The IPv4 address of the neighbor node.";
              }
    
              leaf link-layer-address {
                type yang:phys-address;
                description
                  "The link-layer address of the neighbor node.";
              }
    
              leaf origin {
                type neighbor-origin;
                description
                  "The origin of this neighbor entry.";
              }
            }  // list neighbor
          }  // container ipv4
    
          container ipv6 {
            presence
              "Present if IPv6 is enabled on this interface";
            config false;
            description
              "Parameters for the IPv6 address family.";
            leaf forwarding {
              type boolean;
              default 'false';
              description
                "Indicates whether IPv6 packet forwarding is enabled or
              disabled on this interface.";
              reference
                "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
                	  Section 6.2.1, IsRouter";
    
            }
    
            leaf mtu {
              type uint32 {
                range "1280..max";
              }
              units "octets";
              description
                "The size, in octets, of the largest IPv6 packet that the
              interface will send and receive.";
              reference
                "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
                	  Section 5";
    
            }
    
            list address {
              key "ip";
              description
                "The list of IPv6 addresses on the interface.";
              leaf ip {
                type inet:ipv6-address-no-zone;
                description
                  "The IPv6 address on the interface.";
              }
    
              leaf prefix-length {
                type uint8 {
                  range "0..128";
                }
                mandatory true;
                description
                  "The length of the subnet prefix.";
              }
    
              leaf origin {
                type ip-address-origin;
                description
                  "The origin of this address.";
              }
    
              leaf status {
                type enumeration {
                  enum "preferred" {
                    value 0;
                    description
                      "This is a valid address that can appear as the
                    destination or source address of a packet.";
                  }
                  enum "deprecated" {
                    value 1;
                    description
                      "This is a valid but deprecated address that should
                    no longer be used as a source address in new
                    communications, but packets addressed to such an
                    address are processed as expected.";
                  }
                  enum "invalid" {
                    value 2;
                    description
                      "This isn't a valid address, and it shouldn't appear
                    as the destination or source address of a packet.";
                  }
                  enum "inaccessible" {
                    value 3;
                    description
                      "The address is not accessible because the interface
                    to which this address is assigned is not
                    operational.";
                  }
                  enum "unknown" {
                    value 4;
                    description
                      "The status cannot be determined for some reason.";
                  }
                  enum "tentative" {
                    value 5;
                    description
                      "The uniqueness of the address on the link is being
                    verified.  Addresses in this state should not be
                    used for general communication and should only be
                    used to determine the uniqueness of the address.";
                  }
                  enum "duplicate" {
                    value 6;
                    description
                      "The address has been determined to be non-unique on
                    the link and so must not be used.";
                  }
                  enum "optimistic" {
                    value 7;
                    description
                      "The address is available for use, subject to
                    restrictions, while its uniqueness on a link is
                    being verified.";
                  }
                }
                description
                  "The status of an address.  Most of the states correspond
                to states from the IPv6 Stateless Address
                Autoconfiguration protocol.";
                reference
                  "RFC 4293: Management Information Base for the
                  	  Internet Protocol (IP)
                  	  - IpAddressStatusTC
                   RFC 4862: IPv6 Stateless Address Autoconfiguration";
    
              }
            }  // list address
    
            list neighbor {
              key "ip";
              description
                "A list of mappings from IPv6 addresses to
              link-layer addresses.
    
              This list represents the Neighbor Cache.";
              reference
                "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
    
              leaf ip {
                type inet:ipv6-address-no-zone;
                description
                  "The IPv6 address of the neighbor node.";
              }
    
              leaf link-layer-address {
                type yang:phys-address;
                description
                  "The link-layer address of the neighbor node.";
              }
    
              leaf origin {
                type neighbor-origin;
                description
                  "The origin of this neighbor entry.";
              }
    
              leaf is-router {
                type empty;
                description
                  "Indicates that the neighbor node acts as a router.";
              }
    
              leaf state {
                type enumeration {
                  enum "incomplete" {
                    value 0;
                    description
                      "Address resolution is in progress, and the link-layer
                    address of the neighbor has not yet been
                    determined.";
                  }
                  enum "reachable" {
                    value 1;
                    description
                      "Roughly speaking, the neighbor is known to have been
                    reachable recently (within tens of seconds ago).";
                  }
                  enum "stale" {
                    value 2;
                    description
                      "The neighbor is no longer known to be reachable, but
                    until traffic is sent to the neighbor no attempt
                    should be made to verify its reachability.";
                  }
                  enum "delay" {
                    value 3;
                    description
                      "The neighbor is no longer known to be reachable, and
                    traffic has recently been sent to the neighbor.
                    Rather than probe the neighbor immediately, however,
                    delay sending probes for a short while in order to
                    give upper-layer protocols a chance to provide
                    reachability confirmation.";
                  }
                  enum "probe" {
                    value 4;
                    description
                      "The neighbor is no longer known to be reachable, and
                    unicast Neighbor Solicitation probes are being sent
                    to verify reachability.";
                  }
                }
                description
                  "The Neighbor Unreachability Detection state of this
                entry.";
                reference
                  "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
                  	  Section 7.3.2";
    
              }
            }  // list neighbor
          }  // container ipv6
        }
      }  // module ietf-ip
    

© 2023 YumaWorks, Inc. All rights reserved.