draft-ietf-netmod-ip-cfg-12.txt | draft-ietf-netmod-ip-cfg-13.txt | |||
---|---|---|---|---|
Network Working Group M. Bjorklund | Network Working Group M. Bjorklund | |||
Internet-Draft Tail-f Systems | Internet-Draft Tail-f Systems | |||
Intended status: Standards Track January 8, 2014 | Intended status: Standards Track February 13, 2014 | |||
Expires: July 12, 2014 | Expires: August 17, 2014 | |||
A YANG Data Model for IP Management | A YANG Data Model for IP Management | |||
draft-ietf-netmod-ip-cfg-12 | draft-ietf-netmod-ip-cfg-13 | |||
Abstract | Abstract | |||
This document defines a YANG data model for management of IP | This document defines a YANG data model for management of IP | |||
implementations. The data model includes configuration data and | implementations. The data model includes configuration data and | |||
state data. | state data. | |||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
skipping to change at page 1, line 32 | skipping to change at page 1, line 32 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on July 12, 2014. | This Internet-Draft will expire on August 17, 2014. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 8, line 15 | skipping to change at page 8, line 15 | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
| YANG data node in | IP-MIB object | | | YANG data node in | IP-MIB object | | |||
| /if:interfaces-state/if:interface | | | | /if:interfaces-state/if:interface | | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
| ipv4 | ipv4InterfaceEnableStatus | | | ipv4 | ipv4InterfaceEnableStatus | | |||
| ipv4/address | ipAddressEntry | | | ipv4/address | ipAddressEntry | | |||
| ipv4/address/ip | ipAddressAddrType | | | ipv4/address/ip | ipAddressAddrType | | |||
| | ipAddressAddr | | | | ipAddressAddr | | |||
| ipv4/address/origin | ipAddressOrigin | | | ipv4/address/origin | ipAddressOrigin | | |||
| ipv4/neighbor | ipNetToPhysicalEntry | | | ipv4/neighbor | ipNetToPhysicalEntry | | |||
| ipv4/neighbor/interface | ipNetToPhysicalIfIndex | | ||||
| ipv4/neighbor/ip | ipNetToPhysicalNetAddressType | | | ipv4/neighbor/ip | ipNetToPhysicalNetAddressType | | |||
| | ipNetToPhysicalNetAddressAddr | | | | ipNetToPhysicalNetAddressAddr | | |||
| ipv4/neighbor/link-layer-address | ipNetToPhysicalPhysAddress | | | ipv4/neighbor/link-layer-address | ipNetToPhysicalPhysAddress | | |||
| ipv4/neighbor/origin | ipNetToPhysicalType | | | ipv4/neighbor/origin | ipNetToPhysicalType | | |||
| ipv6 | ipv6InterfaceEnableStatus | | | ipv6 | ipv6InterfaceEnableStatus | | |||
| ipv6/forwarding | ipv6InterfaceForwarding | | | ipv6/forwarding | ipv6InterfaceForwarding | | |||
| ipv6/address | ipAddressEntry | | | ipv6/address | ipAddressEntry | | |||
| ipv6/address/ip | ipAddressAddrType | | | ipv6/address/ip | ipAddressAddrType | | |||
| | ipAddressAddr | | | | ipAddressAddr | | |||
| ipv6/address/origin | ipAddressOrigin | | | ipv6/address/origin | ipAddressOrigin | | |||
| ipv6/address/status | ipAddressStatus | | | ipv6/address/status | ipAddressStatus | | |||
| ipv6/neighbor | ipNetToPhysicalEntry | | | ipv6/neighbor | ipNetToPhysicalEntry | | |||
| ipv6/neighbor/interface | ipNetToPhysicalIfIndex | | ||||
| ipv6/neighbor/ip | ipNetToPhysicalNetAddressType | | | ipv6/neighbor/ip | ipNetToPhysicalNetAddressType | | |||
| | ipNetToPhysicalNetAddressAddr | | | | ipNetToPhysicalNetAddressAddr | | |||
| ipv6/neighbor/link-layer-address | ipNetToPhysicalPhysAddress | | | ipv6/neighbor/link-layer-address | ipNetToPhysicalPhysAddress | | |||
| ipv6/neighbor/origin | ipNetToPhysicalType | | | ipv6/neighbor/origin | ipNetToPhysicalType | | |||
| ipv6/neighbor/state | ipNetToPhysicalState | | | ipv6/neighbor/state | ipNetToPhysicalState | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
YANG interface state data nodes and related IP-MIB objects | YANG interface state data nodes and related IP-MIB objects | |||
4. IP management YANG Module | 4. IP management YANG Module | |||
This module imports typedefs from [RFC6991] and | This module imports typedefs from [RFC6991] and | |||
[I-D.ietf-netmod-interfaces-cfg], and references [RFC0791], | [I-D.ietf-netmod-interfaces-cfg], and references [RFC0791], | |||
[RFC0826], [RFC2460], [RFC4861], [RFC4862], and [RFC4941]. | [RFC0826], [RFC2460], [RFC4861], [RFC4862], and [RFC4941]. | |||
RFC Ed.: update the date below with the date of RFC publication and | RFC Ed.: update the date below with the date of RFC publication and | |||
remove this note. | remove this note. | |||
<CODE BEGINS> file "ietf-ip@2014-01-08.yang" | <CODE BEGINS> file "ietf-ip@2014-02-14.yang" | |||
module ietf-ip { | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-ip"; | ||||
prefix ip; | ||||
import ietf-interfaces { | module ietf-ip { | |||
prefix if; | ||||
} | ||||
import ietf-inet-types { | ||||
prefix inet; | ||||
} | ||||
import ietf-yang-types { | ||||
prefix yang; | ||||
} | ||||
organization | namespace "urn:ietf:params:xml:ns:yang:ietf-ip"; | |||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | prefix ip; | |||
contact | import ietf-interfaces { | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | prefix if; | |||
WG List: <mailto:netmod@ietf.org> | } | |||
import ietf-inet-types { | ||||
prefix inet; | ||||
} | ||||
import ietf-yang-types { | ||||
prefix yang; | ||||
} | ||||
WG Chair: David Kessens | organization | |||
<mailto:david.kessens@nsn.com> | "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | |||
WG Chair: Juergen Schoenwaelder | contact | |||
<mailto:j.schoenwaelder@jacobs-university.de> | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | ||||
Editor: Martin Bjorklund | WG Chair: Thomas Nadeau | |||
<mailto:mbj@tail-f.com>"; | <mailto:tnadeau@lucidvision.com> | |||
description | WG Chair: Juergen Schoenwaelder | |||
"This module contains a collection of YANG definitions for | <mailto:j.schoenwaelder@jacobs-university.de> | |||
configuring IP implementations. | ||||
Copyright (c) 2013 IETF Trust and the persons identified as | Editor: Martin Bjorklund | |||
authors of the code. All rights reserved. | <mailto:mbj@tail-f.com>"; | |||
Redistribution and use in source and binary forms, with or | description | |||
without modification, is permitted pursuant to, and subject | "This module contains a collection of YANG definitions for | |||
to the license terms contained in, the Simplified BSD License | configuring IP implementations. | |||
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 XXXX; see | Copyright (c) 2013 IETF Trust and the persons identified as | |||
the RFC itself for full legal notices."; | authors of the code. All rights reserved. | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this | Redistribution and use in source and binary forms, with or | |||
// note. | 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). | ||||
// RFC Ed.: update the date below with the date of RFC publication | This version of this YANG module is part of RFC XXXX; see | |||
// and remove this note. | the RFC itself for full legal notices."; | |||
revision 2014-01-08 { | ||||
description | ||||
"Initial revision."; | ||||
reference | ||||
"RFC XXXX: A YANG Data Model for IP Management"; | ||||
} | ||||
/* | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
* Features | // note. | |||
*/ | ||||
feature ipv4-non-contiguous-netmasks { | // RFC Ed.: update the date below with the date of RFC publication | |||
description | // and remove this note. | |||
"Indicates support for configuring non-contiguous | revision 2014-02-13 { | |||
subnet masks."; | description | |||
} | "Initial revision."; | |||
reference | ||||
"RFC XXXX: A YANG Data Model for IP Management"; | ||||
} | ||||
feature ipv6-privacy-autoconf { | /* | |||
description | * Features | |||
"Indicates support for Privacy Extensions for Stateless Address | */ | |||
Autoconfiguration in IPv6."; | ||||
reference | ||||
"RFC 4941: Privacy Extensions for Stateless Address | ||||
Autoconfiguration in IPv6"; | ||||
} | ||||
/* | feature ipv4-non-contiguous-netmasks { | |||
* Typedefs | description | |||
*/ | "Indicates support for configuring non-contiguous | |||
subnet masks."; | ||||
} | ||||
typedef ip-address-origin { | feature ipv6-privacy-autoconf { | |||
type enumeration { | description | |||
enum other { | "Indicates support for Privacy Extensions for Stateless Address | |||
description | Autoconfiguration in IPv6."; | |||
"None of the following."; | reference | |||
} | "RFC 4941: Privacy Extensions for Stateless Address | |||
enum static { | Autoconfiguration in IPv6"; | |||
description | } | |||
"Indicates that the address has been statically | ||||
configured, for example using NETCONF or a Command Line | ||||
Interface."; | ||||
} | ||||
enum dhcp { | ||||
description | ||||
"Indicates an address that has been assigned to this | ||||
system by a DHCP server."; | ||||
} | ||||
enum link-layer { | ||||
description | ||||
"Indicates an address created by IPv6 stateless | ||||
auto-configuration."; | ||||
} | ||||
enum random { | ||||
description | ||||
"Indicates an address chosen by the system at | ||||
random, e.g., an IPv4 address within 169.254/16, or an | ||||
RFC 4941 privacy address."; | ||||
} | ||||
} | ||||
description | ||||
"The origin of an address."; | ||||
} | ||||
typedef neighbor-origin { | /* | |||
type enumeration { | * Typedefs | |||
enum other { | */ | |||
description | ||||
"None of the following."; | ||||
} | ||||
enum static { | ||||
description | ||||
"Indicates that the mapping has been statically | ||||
configured, for example using NETCONF or a Command Line | ||||
Interface."; | ||||
} | ||||
enum dynamic { | ||||
description | ||||
"Indicates that the mapping has been dynamically resolved | ||||
using e.g., IPv4 ARP or the IPv6 Neighbor Discovery | ||||
protocol."; | ||||
} | ||||
} | typedef ip-address-origin { | |||
description | type enumeration { | |||
"The origin of a neighbor entry."; | enum other { | |||
} | description | |||
"None of the following."; | ||||
} | ||||
enum static { | ||||
description | ||||
"Indicates that the address has been statically | ||||
configured, for example using NETCONF or a Command Line | ||||
Interface."; | ||||
} | ||||
enum dhcp { | ||||
description | ||||
"Indicates an address that has been assigned to this | ||||
system by a DHCP server."; | ||||
} | ||||
enum link-layer { | ||||
description | ||||
"Indicates an address created by IPv6 stateless | ||||
auto-configuration."; | ||||
} | ||||
enum random { | ||||
description | ||||
"Indicates an address chosen by the system at | ||||
random, e.g., an IPv4 address within 169.254/16, or an | ||||
RFC 4941 privacy address."; | ||||
} | ||||
} | ||||
description | ||||
"The origin of an address."; | ||||
} | ||||
/* | typedef neighbor-origin { | |||
* Configuration data nodes | type enumeration { | |||
*/ | enum other { | |||
description | ||||
"None of the following."; | ||||
} | ||||
enum static { | ||||
description | ||||
"Indicates that the mapping has been statically | ||||
configured, for example using NETCONF or a Command Line | ||||
Interface."; | ||||
} | ||||
enum dynamic { | ||||
description | ||||
"Indicates that the mapping has been dynamically resolved | ||||
using e.g., IPv4 ARP or the IPv6 Neighbor Discovery | ||||
protocol."; | ||||
} | ||||
augment "/if:interfaces/if:interface" { | } | |||
description | description | |||
"Parameters for configuring IP on interfaces. | "The origin of a neighbor entry."; | |||
} | ||||
If an interface is not capable of running IP, the server | /* | |||
must not allow the client to configure these parameters."; | * Configuration data nodes | |||
*/ | ||||
container ipv4 { | augment "/if:interfaces/if:interface" { | |||
presence | description | |||
"Enables IPv4 unless the 'enabled' leaf | "Parameters for configuring IP on interfaces. | |||
(which defaults to 'true') is set to 'false'"; | ||||
description | ||||
"Parameters for the IPv4 address family."; | ||||
leaf enabled { | If an interface is not capable of running IP, the server | |||
type boolean; | must not allow the client to configure these parameters."; | |||
default true; | ||||
description | ||||
"Controls if IPv4 is enabled or disabled on this | ||||
interface."; | ||||
} | ||||
leaf forwarding { | ||||
type boolean; | ||||
default false; | ||||
description | ||||
"Controls if 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. | ||||
The server may restrict the allowed values for this leaf | container ipv4 { | |||
depending on the interface's type. | presence | |||
"Enables IPv4 unless the 'enabled' leaf | ||||
(which defaults to 'true') is set to 'false'"; | ||||
description | ||||
"Parameters for the IPv4 address family."; | ||||
If this leaf is not configured, the operationally used mtu | leaf enabled { | |||
depends on the interface's type."; | type boolean; | |||
reference | default true; | |||
"RFC 791: Internet Protocol"; | description | |||
} | "Controls if IPv4 is enabled or disabled on this | |||
list address { | interface. When IPv4 is enabled, this interface is | |||
key "ip"; | connected to an IPv4 stack, and the interface can send | |||
description | and receive IPv4 packets."; | |||
"The list of configured IPv4 addresses on the interface."; | } | |||
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. | ||||
leaf ip { | The server may restrict the allowed values for this leaf | |||
type inet:ipv4-address-no-zone; | depending on the interface's type. | |||
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."; | ||||
} | ||||
} | ||||
} | ||||
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 | If this leaf is not configured, the operationally used mtu | |||
ARP cache."; | depends on the interface's type."; | |||
reference | reference | |||
"RFC 826: An Ethernet Address Resolution Protocol"; | "RFC 791: Internet Protocol"; | |||
} | ||||
list address { | ||||
key "ip"; | ||||
description | ||||
"The list of configured IPv4 addresses on the interface."; | ||||
leaf ip { | leaf ip { | |||
type inet:ipv4-address-no-zone; | type inet:ipv4-address-no-zone; | |||
description | description | |||
"The IPv4 address of the neighbor node."; | "The IPv4 address on the interface."; | |||
} | } | |||
leaf link-layer-address { | choice subnet { | |||
type yang:phys-address; | mandatory true; | |||
mandatory true; | description | |||
description | "The subnet can be specified as a prefix-length, or, | |||
"The link-layer address of the neighbor node."; | 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."; | ||||
} | ||||
} | ||||
} | ||||
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 | |||
container ipv6 { | ARP cache."; | |||
presence | reference | |||
"Enables IPv6 unless the 'enabled' leaf | "RFC 826: An Ethernet Address Resolution Protocol"; | |||
(which defaults to 'true') is set to 'false'"; | ||||
description | ||||
"Parameters for the IPv6 address family."; | ||||
leaf enabled { | leaf ip { | |||
type boolean; | type inet:ipv4-address-no-zone; | |||
default true; | description | |||
description | "The IPv4 address of the neighbor node."; | |||
"Controls if IPv6 is enabled or disabled on this | } | |||
interface."; | leaf link-layer-address { | |||
} | type yang:phys-address; | |||
leaf forwarding { | mandatory true; | |||
type boolean; | description | |||
default false; | "The link-layer address of the neighbor node."; | |||
description | } | |||
"Controls if 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. | ||||
The server may restrict the allowed values for this leaf | } | |||
depending on the interface's type. | container ipv6 { | |||
presence | ||||
"Enables IPv6 unless the 'enabled' leaf | ||||
(which defaults to 'true') is set to 'false'"; | ||||
description | ||||
"Parameters for the IPv6 address family."; | ||||
If this leaf is not configured, the operationally used mtu | leaf enabled { | |||
depends on the interface's type."; | type boolean; | |||
reference | default true; | |||
"RFC 2460: IPv6 Specification | description | |||
Section 5"; | "Controls if IPv6 is enabled or disabled on this | |||
} | interface. When IPv6 is enabled, this interface is | |||
list address { | connected to an IPv6 stack, and the interface can send | |||
key "ip"; | and receive IPv6 packets."; | |||
description | } | |||
"The list of configured IPv6 addresses on the interface."; | 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. | ||||
leaf ip { | The server may restrict the allowed values for this leaf | |||
type inet:ipv6-address-no-zone; | depending on the interface's type. | |||
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 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 | If this leaf is not configured, the operationally used mtu | |||
Neighbor Cache."; | depends on the interface's type."; | |||
reference | reference | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; | "RFC 2460: IPv6 Specification | |||
Section 5"; | ||||
} | ||||
list address { | ||||
key "ip"; | ||||
description | ||||
"The list of configured IPv6 addresses on the interface."; | ||||
leaf ip { | leaf ip { | |||
type inet:ipv6-address-no-zone; | type inet:ipv6-address-no-zone; | |||
description | description | |||
"The IPv6 address of the neighbor node."; | "The IPv6 address on the interface."; | |||
} | } | |||
leaf link-layer-address { | leaf prefix-length { | |||
type yang:phys-address; | type uint8 { | |||
mandatory true; | range "0..128"; | |||
description | } | |||
"The link-layer address of the neighbor node."; | mandatory true; | |||
} | description | |||
} | "The length of the subnet prefix."; | |||
leaf dup-addr-detect-transmits { | } | |||
type uint32; | } | |||
default 1; | list neighbor { | |||
description | key "ip"; | |||
"The number of consecutive Neighbor Solicitation messages | description | |||
sent while performing Duplicate Address Detection on a | "A list of mappings from IPv6 addresses to | |||
tentative address. A value of zero indicates that | link-layer addresses. | |||
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 { | Entries in this list are used as static entries in the | |||
type boolean; | Neighbor Cache."; | |||
default true; | reference | |||
description | "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; | |||
"If enabled, the host creates global addresses as | ||||
described in section 5.5 of RFC 4862."; | ||||
reference | ||||
"RFC 4862: IPv6 Stateless Address Autoconfiguration"; | ||||
} | ||||
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 | leaf ip { | |||
"RFC 4941: Privacy Extensions for Stateless Address | type inet:ipv6-address-no-zone; | |||
Autoconfiguration in IPv6 | description | |||
- TEMP_VALID_LIFETIME"; | "The IPv6 address of the neighbor node."; | |||
} | } | |||
leaf temporary-preferred-lifetime { | leaf link-layer-address { | |||
if-feature ipv6-privacy-autoconf; | type yang:phys-address; | |||
type uint32; | mandatory true; | |||
units "seconds"; | description | |||
default 86400; | "The link-layer address of the neighbor node."; | |||
description | } | |||
"The time period during which the temporary address is | } | |||
preferred."; | leaf dup-addr-detect-transmits { | |||
reference | type uint32; | |||
"RFC 4941: Privacy Extensions for Stateless Address | default 1; | |||
Autoconfiguration in IPv6 | description | |||
- TEMP_PREFERRED_LIFETIME"; | "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 { | |||
* Operational state data nodes | type boolean; | |||
*/ | default true; | |||
description | ||||
"If enabled, the host creates global addresses as | ||||
described in section 5.5 of RFC 4862."; | ||||
reference | ||||
"RFC 4862: IPv6 Stateless Address Autoconfiguration"; | ||||
} | ||||
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"; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
augment "/if:interfaces-state/if:interface" { | /* | |||
description | * Operational state data nodes | |||
"Data nodes for the operational state of IP on interfaces."; | */ | |||
container ipv4 { | augment "/if:interfaces-state/if:interface" { | |||
presence "Present if IPv4 is enabled on this interface"; | description | |||
config false; | "Data nodes for the operational state of IP on interfaces."; | |||
description | ||||
"Interface specific parameters for the IPv4 address family."; | ||||
leaf forwarding { | container ipv4 { | |||
type boolean; | presence "Present if IPv4 is enabled on this interface"; | |||
description | config false; | |||
"Indicates if IPv4 packet forwarding is enabled or disabled | description | |||
on this interface."; | "Interface specific parameters for the IPv4 address family."; | |||
} | ||||
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 { | leaf forwarding { | |||
type inet:ipv4-address-no-zone; | type boolean; | |||
description | description | |||
"The IPv4 address on the interface."; | "Indicates if IPv4 packet forwarding is enabled or disabled | |||
} | on this interface."; | |||
choice subnet { | } | |||
description | leaf mtu { | |||
"The subnet can be specified as a prefix-length, or, | type uint16 { | |||
if the server supports non-contiguous netmasks, as | range "68..max"; | |||
a netmask."; | } | |||
leaf prefix-length { | units octets; | |||
type uint8 { | description | |||
range "0..32"; | "The size, in octets, of the largest IPv4 packet that the | |||
} | interface will send and receive."; | |||
description | reference | |||
"The length of the subnet prefix."; | "RFC 791: Internet Protocol"; | |||
} | } | |||
leaf netmask { | list address { | |||
if-feature ipv4-non-contiguous-netmasks; | key "ip"; | |||
type yang:dotted-quad; | description | |||
description | "The list of IPv4 addresses on the interface."; | |||
"The subnet specified as a netmask."; | ||||
} | ||||
} | ||||
leaf origin { | ||||
type ip-address-origin; | ||||
description | ||||
"The origin of this address."; | ||||
} | ||||
} | ||||
list neighbor { | ||||
key "ip"; | ||||
description | ||||
"A list of mappings from IPv4 addresses to | ||||
link-layer addresses. | ||||
This list represents the ARP Cache."; | leaf ip { | |||
reference | type inet:ipv4-address-no-zone; | |||
"RFC 826: An Ethernet Address Resolution Protocol"; | 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."; | ||||
} | ||||
} | ||||
leaf origin { | ||||
type ip-address-origin; | ||||
description | ||||
"The origin of this address."; | ||||
leaf ip { | } | |||
type inet:ipv4-address-no-zone; | } | |||
description | list neighbor { | |||
"The IPv4 address of the neighbor node."; | key "ip"; | |||
} | description | |||
leaf link-layer-address { | "A list of mappings from IPv4 addresses to | |||
type yang:phys-address; | link-layer addresses. | |||
description | ||||
"The link-layer address of the neighbor node."; | ||||
} | ||||
leaf origin { | ||||
type neighbor-origin; | ||||
description | ||||
"The origin of this neighbor entry."; | ||||
} | ||||
} | ||||
} | This list represents the ARP Cache."; | |||
reference | ||||
"RFC 826: An Ethernet Address Resolution Protocol"; | ||||
container ipv6 { | leaf ip { | |||
presence "Present if IPv6 is enabled on this interface"; | type inet:ipv4-address-no-zone; | |||
config false; | description | |||
description | "The IPv4 address of the neighbor node."; | |||
"Parameters for the IPv6 address family."; | } | |||
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 forwarding { | } | |||
type boolean; | ||||
default false; | ||||
description | ||||
"Indicates if 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: IPv6 Specification | ||||
Section 5"; | ||||
} | container ipv6 { | |||
list address { | presence "Present if IPv6 is enabled on this interface"; | |||
key "ip"; | config false; | |||
description | description | |||
"The list of IPv6 addresses on the interface."; | "Parameters for the IPv6 address family."; | |||
leaf ip { | leaf forwarding { | |||
type inet:ipv6-address-no-zone; | type boolean; | |||
description | default false; | |||
"The IPv6 address on the interface."; | description | |||
} | "Indicates if IPv6 packet forwarding is enabled or disabled | |||
leaf prefix-length { | on this interface."; | |||
type uint8 { | reference | |||
range "0..128"; | "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) | |||
} | Section 6.2.1, IsRouter"; | |||
mandatory true; | } | |||
description | leaf mtu { | |||
"The length of the subnet prefix."; | type uint32 { | |||
} | range "1280..max"; | |||
leaf origin { | } | |||
type ip-address-origin; | units octets; | |||
description | description | |||
"The origin of this address."; | "The size, in octets, of the largest IPv6 packet that the | |||
} | interface will send and receive."; | |||
leaf status { | reference | |||
type enumeration { | "RFC 2460: IPv6 Specification | |||
enum preferred { | Section 5"; | |||
description | } | |||
"This is a valid address that can appear as the | list address { | |||
destination or source address of a packet."; | key "ip"; | |||
} | description | |||
enum deprecated { | "The list of IPv6 addresses on the interface."; | |||
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 { | ||||
description | ||||
"This isn't a valid address and it shouldn't appear | ||||
as the destination or source address of a packet."; | ||||
} | ||||
enum inaccessible { | ||||
description | ||||
"The address is not accessible because the interface | ||||
to which this address is assigned is not | ||||
operational."; | ||||
} | leaf ip { | |||
enum unknown { | type inet:ipv6-address-no-zone; | |||
description | description | |||
"The status cannot be determined for some reason."; | "The IPv6 address on the interface."; | |||
} | } | |||
enum tentative { | leaf prefix-length { | |||
description | type uint8 { | |||
"The uniqueness of the address on the link is being | range "0..128"; | |||
verified. Addresses in this state should not be | } | |||
used for general communication and should only be | mandatory true; | |||
used to determine the uniqueness of the address."; | description | |||
} | "The length of the subnet prefix."; | |||
enum duplicate { | } | |||
description | leaf origin { | |||
"The address has been determined to be non-unique on | type ip-address-origin; | |||
the link and so must not be used."; | description | |||
} | "The origin of this address."; | |||
enum optimistic { | } | |||
description | leaf status { | |||
"The address is available for use, subject to | type enumeration { | |||
restrictions, while its uniqueness on a link is | enum preferred { | |||
being verified."; | description | |||
} | "This is a valid address that can appear as the | |||
} | destination or source address of a packet."; | |||
description | } | |||
"The status of an address. Most of the states correspond | enum deprecated { | |||
to states from the IPv6 Stateless Address | description | |||
Autoconfiguration protocol."; | "This is a valid but deprecated address that should | |||
reference | no longer be used as a source address in new | |||
"RFC 4293: Management Information Base for the | communications, but packets addressed to such an | |||
Internet Protocol (IP) | address are processed as expected."; | |||
- IpAddressStatusTC | } | |||
RFC 4862: IPv6 Stateless Address Autoconfiguration"; | enum invalid { | |||
} | description | |||
} | "This isn't a valid address and it shouldn't appear | |||
list neighbor { | as the destination or source address of a packet."; | |||
key "ip"; | } | |||
description | enum inaccessible { | |||
"A list of mappings from IPv6 addresses to | description | |||
link-layer addresses. | "The address is not accessible because the interface | |||
to which this address is assigned is not | ||||
operational."; | ||||
} | ||||
enum unknown { | ||||
description | ||||
"The status cannot be determined for some reason."; | ||||
} | ||||
enum tentative { | ||||
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 { | ||||
description | ||||
"The address has been determined to be non-unique on | ||||
the link and so must not be used."; | ||||
} | ||||
enum optimistic { | ||||
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 neighbor { | ||||
key "ip"; | ||||
description | ||||
"A list of mappings from IPv6 addresses to | ||||
link-layer addresses. | ||||
This list represents the Neighbor Cache."; | This list represents the Neighbor Cache."; | |||
reference | reference | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; | "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; | |||
leaf ip { | leaf ip { | |||
type inet:ipv6-address-no-zone; | type inet:ipv6-address-no-zone; | |||
description | description | |||
"The IPv6 address of the neighbor node."; | "The IPv6 address of the neighbor node."; | |||
} | } | |||
leaf link-layer-address { | leaf link-layer-address { | |||
type yang:phys-address; | type yang:phys-address; | |||
description | description | |||
"The link-layer address of the neighbor node."; | "The link-layer address of the neighbor node."; | |||
} | } | |||
leaf origin { | leaf origin { | |||
type neighbor-origin; | type neighbor-origin; | |||
description | description | |||
"The origin of this neighbor entry."; | "The origin of this neighbor entry."; | |||
} | } | |||
leaf is-router { | leaf is-router { | |||
type empty; | type empty; | |||
description | description | |||
"Indicates that the neighbor node acts as a router."; | "Indicates that the neighbor node acts as a router."; | |||
} | } | |||
leaf state { | leaf state { | |||
type enumeration { | type enumeration { | |||
enum incomplete { | enum incomplete { | |||
description | description | |||
"Address resolution is in progress and the link-layer | "Address resolution is in progress and the link-layer | |||
address of the neighbor has not yet been | address of the neighbor has not yet been | |||
determined."; | determined."; | |||
} | } | |||
enum reachable { | enum reachable { | |||
description | description | |||
"Roughly speaking, the neighbor is known to have been | "Roughly speaking, the neighbor is known to have been | |||
reachable recently (within tens of seconds ago)."; | reachable recently (within tens of seconds ago)."; | |||
} | } | |||
enum stale { | enum stale { | |||
description | description | |||
"The neighbor is no longer known to be reachable but | "The neighbor is no longer known to be reachable but | |||
until traffic is sent to the neighbor, no attempt | until traffic is sent to the neighbor, no attempt | |||
should be made to verify its reachability."; | should be made to verify its reachability."; | |||
} | } | |||
enum delay { | enum delay { | |||
description | description | |||
"The neighbor is no longer known to be reachable, and | "The neighbor is no longer known to be reachable, and | |||
traffic has recently been sent to the neighbor. | traffic has recently been sent to the neighbor. | |||
Rather than probe the neighbor immediately, however, | Rather than probe the neighbor immediately, however, | |||
delay sending probes for a short while in order to | delay sending probes for a short while in order to | |||
give upper-layer protocols a chance to provide | give upper-layer protocols a chance to provide | |||
reachability confirmation."; | reachability confirmation."; | |||
} | } | |||
enum probe { | enum probe { | |||
description | description | |||
"The neighbor is no longer known to be reachable, and | "The neighbor is no longer known to be reachable, and | |||
unicast Neighbor Solicitation probes are being sent | unicast Neighbor Solicitation probes are being sent | |||
to verify reachability."; | to verify reachability."; | |||
} | } | |||
} | } | |||
description | description | |||
"The Neighbor Unreachability Detection state of this | "The Neighbor Unreachability Detection state of this | |||
entry."; | entry."; | |||
reference | reference | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) | "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) | |||
Section 7.3.2"; | Section 7.3.2"; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
5. IANA Considerations | 5. IANA Considerations | |||
This document registers a URI in the IETF XML registry [RFC3688]. | This document registers a URI in the IETF XML registry [RFC3688]. | |||
Following the format in RFC 3688, the following registration is | Following the format in RFC 3688, the following registration is | |||
requested to be made. | requested to be made. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-ip | URI: urn:ietf:params:xml:ns:yang:ietf-ip | |||
End of changes. 59 change blocks. | ||||
638 lines changed or deleted | 642 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |