draft-ietf-netmod-ip-cfg-13.txt | draft-ietf-netmod-ip-cfg-14.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 February 13, 2014 | Intended status: Standards Track March 28, 2014 | |||
Expires: August 17, 2014 | Expires: September 29, 2014 | |||
A YANG Data Model for IP Management | A YANG Data Model for IP Management | |||
draft-ietf-netmod-ip-cfg-13 | draft-ietf-netmod-ip-cfg-14 | |||
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 August 17, 2014. | This Internet-Draft will expire on September 29, 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 3, line 29 | skipping to change at page 3, line 29 | |||
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14, [RFC2119]. | 14, [RFC2119]. | |||
The following terms are defined in [RFC6241] and are not redefined | The following terms are defined in [RFC6241] and are not redefined | |||
here: | here: | |||
o client | o client | |||
o configuration data | ||||
o server | o server | |||
o state data | o state data | |||
The following terms are defined in [RFC6020] and are not redefined | The following terms are defined in [RFC6020] and are not redefined | |||
here: | here: | |||
o augment | o augment | |||
o data model | o data model | |||
o data node | o data node | |||
The terminology for describing YANG data models is found in | ||||
[RFC6020]. | ||||
1.2. Tree Diagrams | 1.2. Tree Diagrams | |||
A simplified graphical representation of the data model is used in | A simplified graphical representation of the data model is used in | |||
this document. The meaning of the symbols in these diagrams is as | this document. The meaning of the symbols in these diagrams is as | |||
follows: | follows: | |||
o Brackets "[" and "]" enclose list keys. | o Brackets "[" and "]" enclose list keys. | |||
o Abbreviations before data node names: "rw" means configuration | o Abbreviations before data node names: "rw" means configuration | |||
(read-write) and "ro" state data (read-only). | data (read-write) and "ro" state data (read-only). | |||
o Symbols after data node names: "?" means an optional node, "!" | o Symbols after data node names: "?" means an optional node, "!" | |||
means a presence container, and "*" denotes a list and leaf-list. | means a presence container, and "*" denotes a list and leaf-list. | |||
o Parentheses enclose choice and case nodes, and case nodes are also | o Parentheses enclose choice and case nodes, and case nodes are also | |||
marked with a colon (":"). | marked with a colon (":"). | |||
o Ellipsis ("...") stands for contents of subtrees that are not | o Ellipsis ("...") stands for contents of subtrees that are not | |||
shown. | shown. | |||
2. IP Data Model | 2. IP Data Model | |||
This document defines the YANG module "ietf-ip", which augments the | This document defines the YANG module "ietf-ip", which augments the | |||
"interface" and "interface-state" lists defined in the | "interface" and "interface-state" lists defined in the | |||
"ietf-interfaces" module [I-D.ietf-netmod-interfaces-cfg] with IP | "ietf-interfaces" module [I-D.ietf-netmod-interfaces-cfg] with IP | |||
specific nodes, and adds IP specific state data. | specific data nodes, and adds IP specific state data. | |||
The data model has the following structure for IP configuration per | The data model has the following structure for IP configuration per | |||
interface: | interface: | |||
+--rw if:interfaces | +--rw if:interfaces | |||
+--rw if:interface* [name] | +--rw if:interface* [name] | |||
... | ... | |||
+--rw ipv4! | +--rw ipv4! | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw forwarding? boolean | | +--rw forwarding? boolean | |||
skipping to change at page 9, line 9 | skipping to change at page 9, line 9 | |||
| 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], [RFC4941] and | |||
[I-D.ietf-6man-stable-privacy-addresses]. | ||||
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-02-14.yang" | <CODE BEGINS> file "ietf-ip@2014-03-28.yang" | |||
module ietf-ip { | module ietf-ip { | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-ip"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ip"; | |||
prefix ip; | prefix ip; | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix if; | prefix if; | |||
} | } | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix inet; | prefix inet; | |||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
} | } | |||
organization | organization | |||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
WG Chair: Thomas Nadeau | WG Chair: Thomas Nadeau | |||
<mailto:tnadeau@lucidvision.com> | <mailto:tnadeau@lucidvision.com> | |||
WG Chair: Juergen Schoenwaelder | WG Chair: Juergen Schoenwaelder | |||
<mailto:j.schoenwaelder@jacobs-university.de> | <mailto:j.schoenwaelder@jacobs-university.de> | |||
Editor: Martin Bjorklund | Editor: Martin Bjorklund | |||
<mailto:mbj@tail-f.com>"; | <mailto:mbj@tail-f.com>"; | |||
description | description | |||
"This module contains a collection of YANG definitions for | "This module contains a collection of YANG definitions for | |||
configuring IP implementations. | configuring IP implementations. | |||
Copyright (c) 2013 IETF Trust and the persons identified as | Copyright (c) 2013 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
// note. | // note. | |||
// RFC Ed.: update the date below with the date of RFC publication | // RFC Ed.: update the date below with the date of RFC publication | |||
// and remove this note. | // and remove this note. | |||
revision 2014-02-13 { | revision 2014-03-28 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for IP Management"; | "RFC XXXX: A YANG Data Model for IP Management"; | |||
} | } | |||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
feature ipv4-non-contiguous-netmasks { | feature ipv4-non-contiguous-netmasks { | |||
description | description | |||
"Indicates support for configuring non-contiguous | "Indicates support for configuring non-contiguous | |||
subnet masks."; | subnet masks."; | |||
} | } | |||
feature ipv6-privacy-autoconf { | feature ipv6-privacy-autoconf { | |||
description | description | |||
"Indicates support for Privacy Extensions for Stateless Address | "Indicates support for Privacy Extensions for Stateless Address | |||
Autoconfiguration in IPv6."; | Autoconfiguration in IPv6."; | |||
reference | reference | |||
"RFC 4941: Privacy Extensions for Stateless Address | "RFC 4941: Privacy Extensions for Stateless Address | |||
Autoconfiguration in IPv6"; | Autoconfiguration in IPv6"; | |||
} | } | |||
/* | /* | |||
* Typedefs | * Typedefs | |||
*/ | */ | |||
typedef ip-address-origin { | typedef ip-address-origin { | |||
type enumeration { | type enumeration { | |||
enum other { | enum other { | |||
description | description | |||
"None of the following."; | "None of the following."; | |||
} | } | |||
enum static { | enum static { | |||
description | description | |||
"Indicates that the address has been statically | "Indicates that the address has been statically | |||
configured, for example using NETCONF or a Command Line | configured, for example using NETCONF or a Command Line | |||
Interface."; | Interface."; | |||
} | } | |||
enum dhcp { | enum dhcp { | |||
description | description | |||
"Indicates an address that has been assigned to this | "Indicates an address that has been assigned to this | |||
system by a DHCP server."; | system by a DHCP server."; | |||
} | } | |||
enum link-layer { | enum link-layer { | |||
description | description | |||
"Indicates an address created by IPv6 stateless | "Indicates an address created by IPv6 stateless | |||
auto-configuration."; | auto-configuration that embeds a link-layer address in its | |||
} | interface identifier."; | |||
enum random { | } | |||
description | enum random { | |||
"Indicates an address chosen by the system at | description | |||
random, e.g., an IPv4 address within 169.254/16, or an | "Indicates an address chosen by the system at | |||
RFC 4941 privacy address."; | random, e.g., an IPv4 address within 169.254/16, an | |||
} | RFC 4941 temporary address, or a semantically opaque | |||
} | address [I-D.ietf-6man-stable-privacy-addresses]"; | |||
description | } | |||
"The origin of an address."; | } | |||
} | description | |||
"The origin of an address."; | ||||
} | ||||
typedef neighbor-origin { | typedef neighbor-origin { | |||
type enumeration { | type enumeration { | |||
enum other { | enum other { | |||
description | description | |||
"None of the following."; | "None of the following."; | |||
} | } | |||
enum static { | enum static { | |||
description | description | |||
"Indicates that the mapping has been statically | "Indicates that the mapping has been statically | |||
configured, for example using NETCONF or a Command Line | configured, for example using NETCONF or a Command Line | |||
Interface."; | Interface."; | |||
} | } | |||
enum dynamic { | enum dynamic { | |||
description | description | |||
"Indicates that the mapping has been dynamically resolved | "Indicates that the mapping has been dynamically resolved | |||
using e.g., IPv4 ARP or the IPv6 Neighbor Discovery | using e.g., IPv4 ARP or the IPv6 Neighbor Discovery | |||
protocol."; | protocol."; | |||
} | } | |||
} | ||||
description | ||||
"The origin of a neighbor entry."; | ||||
} | ||||
} | /* | |||
description | * Configuration data nodes | |||
"The origin of a neighbor entry."; | */ | |||
} | ||||
/* | augment "/if:interfaces/if:interface" { | |||
* Configuration data nodes | description | |||
*/ | "Parameters for configuring IP on interfaces. | |||
augment "/if:interfaces/if:interface" { | If an interface is not capable of running IP, the server | |||
description | must not allow the client to configure these parameters."; | |||
"Parameters for configuring IP on interfaces. | ||||
If an interface is not capable of running IP, the server | container ipv4 { | |||
must not allow the client to configure these parameters."; | presence | |||
"Enables IPv4 unless the 'enabled' leaf | ||||
(which defaults to 'true') is set to 'false'"; | ||||
description | ||||
"Parameters for the IPv4 address family."; | ||||
container ipv4 { | leaf enabled { | |||
presence | type boolean; | |||
"Enables IPv4 unless the 'enabled' leaf | default true; | |||
(which defaults to 'true') is set to 'false'"; | description | |||
description | "Controls if IPv4 is enabled or disabled on this | |||
"Parameters for the IPv4 address family."; | 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"; | ||||
leaf enabled { | } | |||
type boolean; | units octets; | |||
default true; | description | |||
description | "The size, in octets, of the largest IPv4 packet that the | |||
"Controls if IPv4 is enabled or disabled on this | interface will send and receive. | |||
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 | The server may restrict the allowed values for this leaf | |||
depending on the interface's type. | depending on the interface's type. | |||
If this leaf is not configured, the operationally used mtu | If this leaf is not configured, the operationally used mtu | |||
depends on the interface's type."; | depends on the interface's type."; | |||
reference | reference | |||
"RFC 791: Internet Protocol"; | "RFC 791: Internet Protocol"; | |||
} | } | |||
list address { | list address { | |||
key "ip"; | key "ip"; | |||
description | description | |||
"The list of configured IPv4 addresses on the interface."; | "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 on the interface."; | "The IPv4 address on the interface."; | |||
} | } | |||
choice subnet { | choice subnet { | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The subnet can be specified as a prefix-length, or, | "The subnet can be specified as a prefix-length, or, | |||
if the server supports non-contiguous netmasks, as | if the server supports non-contiguous netmasks, as | |||
a netmask."; | a netmask."; | |||
leaf prefix-length { | leaf prefix-length { | |||
type uint8 { | type uint8 { | |||
range "0..32"; | range "0..32"; | |||
} | } | |||
description | description | |||
"The length of the subnet prefix."; | "The length of the subnet prefix."; | |||
} | } | |||
leaf netmask { | leaf netmask { | |||
if-feature ipv4-non-contiguous-netmasks; | if-feature ipv4-non-contiguous-netmasks; | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
description | description | |||
"The subnet specified as a netmask."; | "The subnet specified as a netmask."; | |||
} | } | |||
} | } | |||
} | } | |||
list neighbor { | list neighbor { | |||
key "ip"; | key "ip"; | |||
description | description | |||
"A list of mappings from IPv4 addresses to | "A list of mappings from IPv4 addresses to | |||
link-layer addresses. | link-layer addresses. | |||
Entries in this list are used as static entries in the | Entries in this list are used as static entries in the | |||
ARP cache."; | ARP cache."; | |||
reference | reference | |||
"RFC 826: An Ethernet Address Resolution Protocol"; | "RFC 826: An Ethernet Address Resolution Protocol"; | |||
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 of the neighbor node."; | |||
} | } | |||
leaf link-layer-address { | leaf link-layer-address { | |||
type yang:phys-address; | type yang:phys-address; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The link-layer address of the neighbor node."; | "The link-layer address of the neighbor node."; | |||
} | } | |||
} | } | |||
} | } | |||
container ipv6 { | container ipv6 { | |||
presence | presence | |||
"Enables IPv6 unless the 'enabled' leaf | "Enables IPv6 unless the 'enabled' leaf | |||
(which defaults to 'true') is set to 'false'"; | (which defaults to 'true') is set to 'false'"; | |||
description | description | |||
"Parameters for the IPv6 address family."; | "Parameters for the IPv6 address family."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
description | description | |||
"Controls if IPv6 is enabled or disabled on this | "Controls if IPv6 is enabled or disabled on this | |||
interface. When IPv6 is enabled, this interface is | interface. When IPv6 is enabled, this interface is | |||
connected to an IPv6 stack, and the interface can send | connected to an IPv6 stack, and the interface can send | |||
and receive IPv6 packets."; | and receive IPv6 packets."; | |||
} | } | |||
leaf forwarding { | leaf forwarding { | |||
type boolean; | type boolean; | |||
default false; | default false; | |||
description | description | |||
"Controls IPv6 packet forwarding of datagrams received by, | "Controls IPv6 packet forwarding of datagrams received by, | |||
but not addressed to, this interface. IPv6 routers forward | but not addressed to, this interface. IPv6 routers | |||
datagrams. IPv6 hosts do not (except those source-routed | forward datagrams. IPv6 hosts do not (except those | |||
via the host)"; | source-routed via the host)"; | |||
reference | reference | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) | "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) | |||
Section 6.2.1, IsRouter"; | Section 6.2.1, IsRouter"; | |||
} | } | |||
leaf mtu { | leaf mtu { | |||
type uint32 { | type uint32 { | |||
range "1280..max"; | range "1280..max"; | |||
} | } | |||
units octets; | units octets; | |||
description | description | |||
"The size, in octets, of the largest IPv6 packet that the | "The size, in octets, of the largest IPv6 packet that the | |||
interface will send and receive. | interface will send and receive. | |||
The server may restrict the allowed values for this leaf | The server may restrict the allowed values for this leaf | |||
depending on the interface's type. | depending on the interface's type. | |||
If this leaf is not configured, the operationally used mtu | If this leaf is not configured, the operationally used mtu | |||
depends on the interface's type."; | depends on the interface's type."; | |||
reference | reference | |||
"RFC 2460: IPv6 Specification | "RFC 2460: IPv6 Specification | |||
Section 5"; | Section 5"; | |||
} | } | |||
list address { | list address { | |||
key "ip"; | key "ip"; | |||
description | description | |||
"The list of configured IPv6 addresses on the interface."; | "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 on the interface."; | "The IPv6 address on the interface."; | |||
} | } | |||
leaf prefix-length { | leaf prefix-length { | |||
type uint8 { | type uint8 { | |||
range "0..128"; | range "0..128"; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The length of the subnet prefix."; | "The length of the subnet prefix."; | |||
} | } | |||
} | } | |||
list neighbor { | list neighbor { | |||
key "ip"; | key "ip"; | |||
description | description | |||
"A list of mappings from IPv6 addresses to | "A list of mappings from IPv6 addresses to | |||
link-layer addresses. | link-layer addresses. | |||
Entries in this list are used as static entries in the | Entries in this list are used as static entries in the | |||
Neighbor Cache."; | 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; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The link-layer address of the neighbor node."; | "The link-layer address of the neighbor node."; | |||
} | } | |||
} | } | |||
leaf dup-addr-detect-transmits { | leaf dup-addr-detect-transmits { | |||
type uint32; | type uint32; | |||
default 1; | default 1; | |||
description | description | |||
"The number of consecutive Neighbor Solicitation messages | "The number of consecutive Neighbor Solicitation messages | |||
sent while performing Duplicate Address Detection on a | sent while performing Duplicate Address Detection on a | |||
tentative address. A value of zero indicates that | tentative address. A value of zero indicates that | |||
Duplicate Address Detection is not performed on | Duplicate Address Detection is not performed on | |||
tentative addresses. A value of one indicates a single | tentative addresses. A value of one indicates a single | |||
transmission with no follow-up retransmissions."; | transmission with no follow-up retransmissions."; | |||
reference | reference | |||
"RFC 4862: IPv6 Stateless Address Autoconfiguration"; | "RFC 4862: IPv6 Stateless Address Autoconfiguration"; | |||
} | } | |||
container autoconf { | container autoconf { | |||
description | description | |||
"Parameters to control the autoconfiguration of IPv6 | "Parameters to control the autoconfiguration of IPv6 | |||
addresses, as described in RFC 4862."; | addresses, as described in RFC 4862."; | |||
reference | reference | |||
"RFC 4862: IPv6 Stateless Address Autoconfiguration"; | "RFC 4862: IPv6 Stateless Address Autoconfiguration"; | |||
leaf create-global-addresses { | leaf create-global-addresses { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
description | description | |||
"If enabled, the host creates global addresses as | "If enabled, the host creates global addresses as | |||
described in section 5.5 of RFC 4862."; | described in section 5.5 of RFC 4862."; | |||
reference | reference | |||
"RFC 4862: IPv6 Stateless Address Autoconfiguration"; | "RFC 4862: IPv6 Stateless Address Autoconfiguration"; | |||
} | } | |||
leaf create-temporary-addresses { | leaf create-temporary-addresses { | |||
if-feature ipv6-privacy-autoconf; | if-feature ipv6-privacy-autoconf; | |||
type boolean; | type boolean; | |||
default false; | default false; | |||
description | description | |||
"If enabled, the host creates temporary addresses as | "If enabled, the host creates temporary addresses as | |||
described in RFC 4941."; | described in RFC 4941."; | |||
reference | reference | |||
"RFC 4941: Privacy Extensions for Stateless Address | "RFC 4941: Privacy Extensions for Stateless Address | |||
Autoconfiguration in IPv6"; | Autoconfiguration in IPv6"; | |||
} | } | |||
leaf temporary-valid-lifetime { | leaf temporary-valid-lifetime { | |||
if-feature ipv6-privacy-autoconf; | if-feature ipv6-privacy-autoconf; | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
default 604800; | default 604800; | |||
description | description | |||
"The time period during which the temporary address | "The time period during which the temporary address | |||
is valid."; | is valid."; | |||
reference | reference | |||
"RFC 4941: Privacy Extensions for Stateless Address | "RFC 4941: Privacy Extensions for Stateless Address | |||
Autoconfiguration in IPv6 | Autoconfiguration in IPv6 | |||
- TEMP_VALID_LIFETIME"; | - TEMP_VALID_LIFETIME"; | |||
} | } | |||
leaf temporary-preferred-lifetime { | leaf temporary-preferred-lifetime { | |||
if-feature ipv6-privacy-autoconf; | if-feature ipv6-privacy-autoconf; | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
default 86400; | default 86400; | |||
description | description | |||
"The time period during which the temporary address is | "The time period during which the temporary address is | |||
preferred."; | preferred."; | |||
reference | reference | |||
"RFC 4941: Privacy Extensions for Stateless Address | "RFC 4941: Privacy Extensions for Stateless Address | |||
Autoconfiguration in IPv6 | Autoconfiguration in IPv6 | |||
- TEMP_PREFERRED_LIFETIME"; | - TEMP_PREFERRED_LIFETIME"; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Operational state data nodes | * Operational state data nodes | |||
*/ | */ | |||
augment "/if:interfaces-state/if:interface" { | augment "/if:interfaces-state/if:interface" { | |||
description | description | |||
"Data nodes for the operational state of IP on interfaces."; | "Data nodes for the operational state of IP on interfaces."; | |||
container ipv4 { | container ipv4 { | |||
presence "Present if IPv4 is enabled on this interface"; | presence "Present if IPv4 is enabled on this interface"; | |||
config false; | config false; | |||
description | description | |||
"Interface specific parameters for the IPv4 address family."; | "Interface specific parameters for the IPv4 address family."; | |||
leaf forwarding { | leaf forwarding { | |||
type boolean; | type boolean; | |||
description | description | |||
"Indicates if IPv4 packet forwarding is enabled or disabled | "Indicates if IPv4 packet forwarding is enabled or disabled | |||
on this interface."; | on this interface."; | |||
} | } | |||
leaf mtu { | leaf mtu { | |||
type uint16 { | type uint16 { | |||
range "68..max"; | range "68..max"; | |||
} | } | |||
units octets; | units octets; | |||
description | description | |||
"The size, in octets, of the largest IPv4 packet that the | "The size, in octets, of the largest IPv4 packet that the | |||
interface will send and receive."; | interface will send and receive."; | |||
reference | reference | |||
"RFC 791: Internet Protocol"; | "RFC 791: Internet Protocol"; | |||
} | } | |||
list address { | list address { | |||
key "ip"; | key "ip"; | |||
description | description | |||
"The list of IPv4 addresses on the interface."; | "The list of 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 on the interface."; | "The IPv4 address on the interface."; | |||
} | } | |||
choice subnet { | choice subnet { | |||
description | description | |||
"The subnet can be specified as a prefix-length, or, | "The subnet can be specified as a prefix-length, or, | |||
if the server supports non-contiguous netmasks, as | if the server supports non-contiguous netmasks, as | |||
a netmask."; | a netmask."; | |||
leaf prefix-length { | leaf prefix-length { | |||
type uint8 { | type uint8 { | |||
range "0..32"; | range "0..32"; | |||
} | } | |||
description | description | |||
"The length of the subnet prefix."; | "The length of the subnet prefix."; | |||
} | } | |||
leaf netmask { | leaf netmask { | |||
if-feature ipv4-non-contiguous-netmasks; | if-feature ipv4-non-contiguous-netmasks; | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
description | description | |||
"The subnet specified as a netmask."; | "The subnet specified as a netmask."; | |||
} | } | |||
} | } | |||
leaf origin { | leaf origin { | |||
type ip-address-origin; | type ip-address-origin; | |||
description | description | |||
"The origin of this address."; | "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."; | |||
} | reference | |||
list neighbor { | "RFC 826: An Ethernet Address Resolution Protocol"; | |||
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 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 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."; | ||||
} | ||||
} | ||||
} | container ipv6 { | |||
presence "Present if IPv6 is enabled on this interface"; | ||||
config false; | ||||
description | ||||
"Parameters for the IPv6 address family."; | ||||
container ipv6 { | leaf forwarding { | |||
presence "Present if IPv6 is enabled on this interface"; | type boolean; | |||
config false; | default false; | |||
description | description | |||
"Parameters for the IPv6 address family."; | "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"; | ||||
} | ||||
list address { | ||||
key "ip"; | ||||
description | ||||
"The list of IPv6 addresses on the interface."; | ||||
leaf forwarding { | leaf ip { | |||
type boolean; | type inet:ipv6-address-no-zone; | |||
default false; | description | |||
description | "The IPv6 address on the interface."; | |||
"Indicates if IPv6 packet forwarding is enabled or disabled | } | |||
on this interface."; | leaf prefix-length { | |||
reference | type uint8 { | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) | range "0..128"; | |||
Section 6.2.1, IsRouter"; | } | |||
} | mandatory true; | |||
leaf mtu { | description | |||
type uint32 { | "The length of the subnet prefix."; | |||
range "1280..max"; | } | |||
} | leaf origin { | |||
units octets; | type ip-address-origin; | |||
description | description | |||
"The size, in octets, of the largest IPv6 packet that the | "The origin of this address."; | |||
interface will send and receive."; | } | |||
reference | leaf status { | |||
"RFC 2460: IPv6 Specification | type enumeration { | |||
Section 5"; | enum preferred { | |||
} | description | |||
list address { | "This is a valid address that can appear as the | |||
key "ip"; | destination or source address of a packet."; | |||
description | } | |||
"The list of IPv6 addresses on the interface."; | enum deprecated { | |||
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."; | ||||
} | ||||
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"; | ||||
} | ||||
leaf ip { | } | |||
type inet:ipv6-address-no-zone; | list neighbor { | |||
description | key "ip"; | |||
"The IPv6 address on the interface."; | description | |||
} | "A list of mappings from IPv6 addresses to | |||
leaf prefix-length { | link-layer addresses. | |||
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 { | ||||
description | ||||
"This is a valid address that can appear as the | ||||
destination or source address of a packet."; | ||||
} | ||||
enum deprecated { | ||||
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."; | ||||
} | ||||
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 | |||
skipping to change at page 28, line 41 | skipping to change at page 28, line 41 | |||
Address Autoconfiguration", RFC 4862, September 2007. | Address Autoconfiguration", RFC 4862, September 2007. | |||
[RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy | [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy | |||
Extensions for Stateless Address Autoconfiguration in | Extensions for Stateless Address Autoconfiguration in | |||
IPv6", RFC 4941, September 2007. | IPv6", RFC 4941, September 2007. | |||
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | |||
Network Configuration Protocol (NETCONF)", RFC 6020, | Network Configuration Protocol (NETCONF)", RFC 6020, | |||
October 2010. | October 2010. | |||
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | ||||
Bierman, "Network Configuration Protocol (NETCONF)", | ||||
RFC 6241, June 2011. | ||||
[RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, | [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, | |||
July 2013. | July 2013. | |||
8.2. Informative References | 8.2. Informative References | |||
[I-D.ietf-6man-stable-privacy-addresses] | ||||
Gont, F., "A Method for Generating Semantically Opaque | ||||
Interface Identifiers with IPv6 Stateless Address | ||||
Autoconfiguration (SLAAC)", | ||||
draft-ietf-6man-stable-privacy-addresses-17 (work in | ||||
progress), January 2014. | ||||
[I-D.ietf-netmod-routing-cfg] | [I-D.ietf-netmod-routing-cfg] | |||
Lhotka, L., "A YANG Data Model for Routing Configuration", | Lhotka, L., "A YANG Data Model for Routing Configuration", | |||
draft-ietf-netmod-routing-cfg-10 (work in progress), | draft-ietf-netmod-routing-cfg-10 (work in progress), | |||
July 2012. | July 2012. | |||
[RFC0826] Plummer, D., "Ethernet Address Resolution Protocol: Or | [RFC0826] Plummer, D., "Ethernet Address Resolution Protocol: Or | |||
converting network protocol addresses to 48.bit Ethernet | converting network protocol addresses to 48.bit Ethernet | |||
address for transmission on Ethernet hardware", STD 37, | address for transmission on Ethernet hardware", STD 37, | |||
RFC 826, November 1982. | RFC 826, November 1982. | |||
[RFC4293] Routhier, S., "Management Information Base for the | [RFC4293] Routhier, S., "Management Information Base for the | |||
Internet Protocol (IP)", RFC 4293, April 2006. | Internet Protocol (IP)", RFC 4293, April 2006. | |||
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | ||||
Bierman, "Network Configuration Protocol (NETCONF)", | ||||
RFC 6241, June 2011. | ||||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, June 2011. | Shell (SSH)", RFC 6242, June 2011. | |||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
Protocol (NETCONF) Access Control Model", RFC 6536, | Protocol (NETCONF) Access Control Model", RFC 6536, | |||
March 2012. | March 2012. | |||
Appendix A. Example: NETCONF <get> reply | Appendix A. Example: NETCONF <get> reply | |||
This section gives an example of a reply to the NETCONF <get> request | This section gives an example of a reply to the NETCONF <get> request | |||
End of changes. 65 change blocks. | ||||
649 lines changed or deleted | 664 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/ |