draft-ietf-rtgwg-routing-types-07.txt   draft-ietf-rtgwg-routing-types-08.txt 
skipping to change at page 1, line 16 skipping to change at page 1, line 16
Expires: December 31, 2017 Futurewei Technologies, Inc. Expires: December 31, 2017 Futurewei Technologies, Inc.
A. Lindem A. Lindem
Cisco Systems Cisco Systems
C. Hopps C. Hopps
Deutsche Telekom Deutsche Telekom
L. Berger L. Berger
LabN Consulting, L.L.C. LabN Consulting, L.L.C.
June 29, 2017 June 29, 2017
Routing Area Common YANG Data Types Routing Area Common YANG Data Types
draft-ietf-rtgwg-routing-types-07 draft-ietf-rtgwg-routing-types-08
Abstract Abstract
This document defines a collection of common data types using the This document defines a collection of common data types using the
YANG data modeling language. These derived common types are designed YANG data modeling language. These derived common types are designed
to be imported by other modules defined in the routing area. to be imported by other modules defined in the routing area.
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 2, line 16 skipping to change at page 2, line 16
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. IETF Routing Types YANG Module . . . . . . . . . . . . . . . 6 3. IETF Routing Types YANG Module . . . . . . . . . . . . . . . 6
4. IANA Routing Types YANG Module . . . . . . . . . . . . . . . 22 4. IANA Routing Types YANG Module . . . . . . . . . . . . . . . 23
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34
5.1. IANA-Maintained iana-routing-types Module . . . . . . . . 33 5.1. IANA-Maintained iana-routing-types Module . . . . . . . . 35
6. Security Considerations . . . . . . . . . . . . . . . . . . . 34 6. Security Considerations . . . . . . . . . . . . . . . . . . . 36
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 36
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 36
8.1. Normative References . . . . . . . . . . . . . . . . . . 35 8.1. Normative References . . . . . . . . . . . . . . . . . . 36
8.2. Informative References . . . . . . . . . . . . . . . . . 35 8.2. Informative References . . . . . . . . . . . . . . . . . 37
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 37 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 39
1. Introduction 1. Introduction
The YANG [RFC6020] [RFC7950] is a data modeling language used to The YANG [RFC6020] [RFC7950] is a data modeling language used to
model configuration data, state data, Remote Procedure Calls, and model configuration data, state data, Remote Procedure Calls, and
notifications for network management protocols. The YANG language notifications for network management protocols. The YANG language
supports a small set of built-in data types and provides mechanisms supports a small set of built-in data types and provides mechanisms
to derive other types from the built-in types. to derive other types from the built-in types.
This document introduces a collection of common data types derived This document introduces a collection of common data types derived
skipping to change at page 6, line 49 skipping to change at page 6, line 49
[I-D.ietf-idr-bgp-model]. [I-D.ietf-idr-bgp-model].
subsequent-address-family subsequent-address-family
This type defines values for use in subsequent address family This type defines values for use in subsequent address family
(SAFI) identifiers. The values are based on the IANA Subsequent (SAFI) identifiers. The values are based on the IANA Subsequent
Address Family Identifiers (SAFI) Parameters Registry Address Family Identifiers (SAFI) Parameters Registry
[IANA-SAFI-REGISTRY]. [IANA-SAFI-REGISTRY].
3. IETF Routing Types YANG Module 3. IETF Routing Types YANG Module
<CODE BEGINS> file "ietf-routing-types@2017-06-29.yang" <CODE BEGINS> file "ietf-routing-types@2017-06-29.yang"
module ietf-routing-types { module ietf-routing-types {
namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types"; namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types";
prefix rt-types; prefix rt-types;
import ietf-yang-types {
prefix yang;
}
import ietf-inet-types {
prefix inet;
}
organization
"IETF RTGWG - Routing Area Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/rtgwg/>
WG List: <mailto:rtgwg@ietf.org>
Editor: Xufeng Lui import ietf-yang-types {
<mailto:Xufeng_Lui@jabail.com> prefix yang;
Yingzhen Qu }
<mailto:yingzhen.qu@huawei.com> import ietf-inet-types {
Acee Lindem prefix inet;
<mailto:acee@cisco.com> }
Christian Hopps
<mailto:chopps@chopps.org>
Lou Berger
<mailto:lberger@labn.com>";
description
"This module contains a collection of YANG data types
considered generally useful for routing protocols.
Copyright (c) 2017 IETF Trust and the persons organization
identified as authors of the code. All rights reserved. "IETF RTGWG - Routing Area Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/rtgwg/>
WG List: <mailto:rtgwg@ietf.org>
Redistribution and use in source and binary forms, with or Editor: Xufeng Lui
without modification, is permitted pursuant to, and subject <mailto:Xufeng_Lui@jabail.com>
to the license terms contained in, the Simplified BSD License Yingzhen Qu
set forth in Section 4.c of the IETF Trust's Legal Provisions <mailto:yingzhen.qu@huawei.com>
Relating to IETF Documents Acee Lindem
(http://trustee.ietf.org/license-info). <mailto:acee@cisco.com>
Christian Hopps
<mailto:chopps@chopps.org>
Lou Berger
<mailto:lberger@labn.com>";
description
"This module contains a collection of YANG data types
considered generally useful for routing protocols.
This version of this YANG module is part of RFC XXXX; see Copyright (c) 2017 IETF Trust and the persons
the RFC itself for full legal notices."; identified as authors of the code. All rights reserved.
reference "RFC XXXX";
revision 2017-06-29 { Redistribution and use in source and binary forms, with or
description without modification, is permitted pursuant to, and subject
"Initial revision."; to the license terms contained in, the Simplified BSD License
reference "RFC TBD: Routing YANG Data Types"; set forth in Section 4.c of the IETF Trust's Legal Provisions
} Relating to IETF Documents
/*** Identities related to MPLS/GMPLS ***/ (http://trustee.ietf.org/license-info).
identity mpls-label-special-purpose-value { This version of this YANG module is part of RFC XXXX; see
description the RFC itself for full legal notices.";
"Base identity for deriving identities describing reference "RFC XXXX";
special-purpose Multiprotocol Label Switching (MPLS) label
values.";
reference
"RFC7274: Allocating and Retiring Special-Purpose MPLS
Labels.";
}
identity ipv4-explicit-null-label { revision 2017-06-29 {
base mpls-label-special-purpose-value; description
description "Initial revision.";
"This identity represents the IPv4 Explicit NULL Label."; reference "RFC TBD: Routing YANG Data Types";
reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; }
} /*** Identities related to MPLS/GMPLS ***/
identity router-alert-label { identity mpls-label-special-purpose-value {
base mpls-label-special-purpose-value; description
description "Base identity for deriving identities describing
"This identity represents the Router Alert Label."; special-purpose Multiprotocol Label Switching (MPLS) label
reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; values.";
} reference
"RFC7274: Allocating and Retiring Special-Purpose MPLS
Labels.";
}
identity ipv6-explicit-null-label { identity ipv4-explicit-null-label {
base mpls-label-special-purpose-value; base mpls-label-special-purpose-value;
description description
"This identity represents the IPv6 Explicit NULL Label."; "This identity represents the IPv4 Explicit NULL Label.";
reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; reference "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
} }
identity implicit-null-label { identity router-alert-label {
base mpls-label-special-purpose-value; base mpls-label-special-purpose-value;
description description
"This identity represents the Implicit NULL Label."; "This identity represents the Router Alert Label.";
reference "RFC3032: MPLS Label Stack Encoding. Section 2.1."; reference "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
} }
identity entropy-label-indicator { identity ipv6-explicit-null-label {
base mpls-label-special-purpose-value; base mpls-label-special-purpose-value;
description description
"This identity represents the Entropy Label Indicator."; "This identity represents the IPv6 Explicit NULL Label.";
reference reference "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
"RFC6790: The Use of Entropy Labels in MPLS Forwarding. }
Sections 3 and 10.1.";
}
identity gal-label {
base mpls-label-special-purpose-value;
description
"This identity represents the Generic Associated Channel
Label (GAL).";
reference
"RFC5586: MPLS Generic Associated Channel.
Sections 4 and 10.";
}
identity oam-alert-label { identity implicit-null-label {
base mpls-label-special-purpose-value; base mpls-label-special-purpose-value;
description description
"This identity represents the OAM Alert Label."; "This identity represents the Implicit NULL Label.";
reference reference "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
"RFC3429: Assignment of the 'OAM Alert Label' for }
Multiprotocol Label Switching Architecture (MPLS)
Operation and Maintenance (OAM) Functions.
Sections 3 and 6.";
}
identity extension-label { identity entropy-label-indicator {
base mpls-label-special-purpose-value; base mpls-label-special-purpose-value;
description description
"This identity represents the Extension Label."; "This identity represents the Entropy Label Indicator.";
reference reference
"RFC7274: Allocating and Retiring Special-Purpose MPLS "RFC6790: The Use of Entropy Labels in MPLS Forwarding.
Labels. Sections 3.1 and 5."; Sections 3 and 10.1.";
} }
identity gal-label {
base mpls-label-special-purpose-value;
description
"This identity represents the Generic Associated Channel
Label (GAL).";
reference
"RFC5586: MPLS Generic Associated Channel.
Sections 4 and 10.";
}
/*** Collection of types related to routing ***/ identity oam-alert-label {
base mpls-label-special-purpose-value;
description
"This identity represents the OAM Alert Label.";
reference
"RFC3429: Assignment of the 'OAM Alert Label' for
Multiprotocol Label Switching Architecture (MPLS)
Operation and Maintenance (OAM) Functions.
Sections 3 and 6.";
}
typedef router-id { identity extension-label {
type yang:dotted-quad; base mpls-label-special-purpose-value;
description description
"A 32-bit number in the dotted quad format assigned to each "This identity represents the Extension Label.";
router. This number uniquely identifies the router within reference
an Autonomous System."; "RFC7274: Allocating and Retiring Special-Purpose MPLS
} Labels. Sections 3.1 and 5.";
}
/*** Collection of types related to VPN ***/ /*** Collection of types related to routing ***/
typedef route-target { typedef router-id {
type string { type yang:dotted-quad;
pattern "(0:(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d):(429496729[0-5]|42949672[0-8]\\d|4294967[01]\\d{2}|429496[0-6]\\d{3}|42949[0-5]\\d{4}|4294[0-8]\\d{5}|429[0-3]\\d{6}|42[0-8]\\d{7}|4[01]\\d{8}|[0-3]?\\d{0,8}\\d))|(1:(((\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])):(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d))|(2:(429496729[0-5]|42949672[0-8]\\d|4294967[01]\\d{2}|429496[0-6]\\d{3}|42949[0-5]\\d{4}|4294[0-8]\\d{5}|429[0-3]\\d{6}|42[0-8]\\d{7}|4[01]\\d{8}|[0-3]?\\d{0,8}\\d):(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d))"; description
"A 32-bit number in the dotted quad format assigned to each
router. This number uniquely identifies the router within
an Autonomous System.";
} }
description
"A route target is an 8-octet BGP extended community
initially identifying a set of sites in a BGP
VPN (RFC 4364). However, it has since taken on a more
general role in BGP route filtering.
A route target consists of three fields:
a 2-octet type field, an administrator field,
and an assigned number field.
According to the data formats for type 0, 1, and 2 defined
in RFC4360 and RFC5668, the encoding pattern is defined as:
0:2-octet-asn:4-octet-number /*** Collection of types related to VPN ***/
1:4-octet-ipv4addr:2-octet-number
2:4-octet-asn:2-octet-number.
Some valid examples are: 0:100:100, 1:1.1.1.1:100, and typedef route-target {
2:1234567890:203."; type string {
reference pattern
"RFC4360: BGP Extended Communities Attribute. '(0:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
RFC5668: 4-Octet AS Specific BGP Extended Community."; + '[0-5]?\d{0,3}\d):(429496729[0-5]|42949672[0-8]\d|'
} + '4294967[01]\d{2}|429496[0-6]\d{3}|42949[0-5]\d{4}|'
+ '4294[0-8]\d{5}|429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|'
+ '[0-3]?\d{0,8}\d))|'
+ '(1:(((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|'
+ '1\d{2}|2[0-4]\d|25[0-5])):(6553[0-5]|655[0-2]\d|'
+ '65[0-4]\d{2}|6[0-4]\d{3}|[0-5]?\d{0,3}\d))|'
+ '(2:(429496729[0-5]|42949672[0-8]\d|4294967[01]\d{2}|'
+ '429496[0-6]\d{3}|42949[0-5]\d{4}|4294[0-8]\d{5}|'
+ '429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|[0-3]?\d{0,8}\d):'
+ '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
+ '[0-5]?\d{0,3}\d))';
}
description
"A route target is an 8-octet BGP extended community
initially identifying a set of sites in a BGP
VPN (RFC 4364). However, it has since taken on a more
general role in BGP route filtering.
A route target consists of three fields:
a 2-octet type field, an administrator field,
and an assigned number field.
According to the data formats for type 0, 1, and 2 defined
in RFC4360 and RFC5668, the encoding pattern is defined as:
typedef ipv6-route-target { 0:2-octet-asn:4-octet-number
type string { 1:4-octet-ipv4addr:2-octet-number
pattern "((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]))):(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d)"; 2:4-octet-asn:2-octet-number.
pattern "((([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)):(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d)";
Some valid examples are: 0:100:100, 1:1.1.1.1:100, and
2:1234567890:203.";
reference
"RFC4360: BGP Extended Communities Attribute.
RFC5668: 4-Octet AS Specific BGP Extended Community.";
} }
description
"An IPv6 route target is a 20-octet BGP IPv6 address
specific extended community serving the same function
as a standard 8-octet route target only allowing for
an IPv6 address as the global adminstrator. The format
is <ipv6-address:2-octet-number>.
Some valid examples are: 2001:DB8::1:6544 and typedef ipv6-route-target {
2001:DB8::5eb1:791:6b37:17958"; type string {
reference pattern
"RFC5701: IPv6 Address Specific BGP Extended Community '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
Attribute"; + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
} + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+ '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+ ':'
+ '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
+ '[0-5]?\d{0,3}\d)';
pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+ '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))'
+ ':'
+ '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
+ '[0-5]?\d{0,3}\d)';
typedef route-target-type {
type enumeration {
enum "import" {
value 0;
description
"The route target applies to route import.";
}
enum "export" {
value 1;
description
"The route target applies to route export.";
}
enum "both" {
value 2;
description
"The route target applies to both route import and
route export.";
} }
description
"An IPv6 route target is a 20-octet BGP IPv6 address
specific extended community serving the same function
as a standard 8-octet route target only allowing for
an IPv6 address as the global adminstrator. The format
is <ipv6-address:2-octet-number>.
Some valid examples are: 2001:DB8::1:6544 and
2001:DB8::5eb1:791:6b37:17958";
reference
"RFC5701: IPv6 Address Specific BGP Extended Community
Attribute";
} }
description
"Indicates the role a route target takes
in route filtering.";
reference "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs).";
}
typedef route-distinguisher { typedef route-target-type {
type string { type enumeration {
pattern "(0:(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d):(429496729[0-5]|42949672[0-8]\\d|4294967[01]\\d{2}|429496[0-6]\\d{3}|42949[0-5]\\d{4}|4294[0-8]\\d{5}|429[0-3]\\d{6}|42[0-8]\\d{7}|4[01]\\d{8}|[0-3]?\\d{0,8}\\d))|(1:(((\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])):(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d))|(2:(429496729[0-5]|42949672[0-8]\\d|4294967[01]\\d{2}|429496[0-6]\\d{3}|42949[0-5]\\d{4}|4294[0-8]\\d{5}|429[0-3]\\d{6}|42[0-8]\\d{7}|4[01]\\d{8}|[0-3]?\\d{0,8}\\d):(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d))|(([3-9a-fA-F]|[1-9a-fA-F][\\da-fA-F]{1,3}):[\\da-fA-F]{1,12})"; enum "import" {
value 0;
description
"The route target applies to route import.";
}
enum "export" {
value 1;
description
"The route target applies to route export.";
}
enum "both" {
value 2;
description
"The route target applies to both route import and
route export.";
}
}
description
"Indicates the role a route target takes
in route filtering.";
reference "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs).";
} }
description
"A route distinguisher is an 8-octet value used to distinguish
routes from different BGP VPNs (RFC 4364). A route
distinguisher consists of three fields: A 2-octet type field,
an administrator field, and an assigned number field.
According to the data formats for type 0, 1, and 2 defined in
RFC4364, the encoding pattern is defined as:
0:2-octet-asn:4-octet-number typedef route-distinguisher {
1:4-octet-ipv4addr:2-octet-number type string {
2:4-octet-asn:2-octet-number. pattern
2-octet-other-hex-number:6-octet-hex-number '(0:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
+ '[0-5]?\d{0,3}\d):(429496729[0-5]|42949672[0-8]\d|'
+ '4294967[01]\d{2}|429496[0-6]\d{3}|42949[0-5]\d{4}|'
+ '4294[0-8]\d{5}|429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|'
+ '[0-3]?\d{0,8}\d))|'
+ '(1:(((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|'
+ '1\d{2}|2[0-4]\d|25[0-5])):(6553[0-5]|655[0-2]\d|'
+ '65[0-4]\d{2}|6[0-4]\d{3}|[0-5]?\d{0,3}\d))|'
+ '(2:(429496729[0-5]|42949672[0-8]\d|4294967[01]\d{2}|'
+ '429496[0-6]\d{3}|42949[0-5]\d{4}|4294[0-8]\d{5}|'
+ '429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|[0-3]?\d{0,8}\d):'
+ '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
+ '[0-5]?\d{0,3}\d))|'
+ '(([3-9a-fA-F]|[1-9a-fA-F][\da-fA-F]{1,3}):'
+ '[\da-fA-F]{1,12})';
}
description
"A route distinguisher is an 8-octet value used to distinguish
routes from different BGP VPNs (RFC 4364). A route
distinguisher consists of three fields: A 2-octet type field,
an administrator field, and an assigned number field.
According to the data formats for type 0, 1, and 2 defined in
RFC4364, the encoding pattern is defined as:
Some valid examples are: 0:100:100, 1:1.1.1.1:100, and 0:2-octet-asn:4-octet-number
2:1234567890:203."; 1:4-octet-ipv4addr:2-octet-number
reference "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; 2:4-octet-asn:2-octet-number.
} 2-octet-other-hex-number:6-octet-hex-number
typedef route-origin { Some valid examples are: 0:100:100, 1:1.1.1.1:100, and
type string { 2:1234567890:203.";
pattern "(0:(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d):(429496729[0-5]|42949672[0-8]\\d|4294967[01]\\d{2}|429496[0-6]\\d{3}|42949[0-5]\\d{4}|4294[0-8]\\d{5}|429[0-3]\\d{6}|42[0-8]\\d{7}|4[01]\\d{8}|[0-3]?\\d{0,8}\\d))|(1:(((\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])):(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d))|(2:(429496729[0-5]|42949672[0-8]\\d|4294967[01]\\d{2}|429496[0-6]\\d{3}|42949[0-5]\\d{4}|4294[0-8]\\d{5}|429[0-3]\\d{6}|42[0-8]\\d{7}|4[01]\\d{8}|[0-3]?\\d{0,8}\\d):(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d))|(([3-9a-fA-F]|[1-9a-fA-F][\\da-fA-F]{1,3}):[\\da-fA-F]{1,12})"; reference "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs).";
} }
description
"A route origin is an 8-octet BGP extended community
identifying the set of sites where the BGP route
originated(RFC 4364). A route origin consists of three
fields: A 2-octet type field, an administrator field,
and an assigned number field. According to the data
formats for type 0, 1, and 2 defined in RFC4364,
the encoding pattern is defined as:
0:2-octet-asn:4-octet-number typedef route-origin {
1:4-octet-ipv4addr:2-octet-number type string {
2:4-octet-asn:2-octet-number. pattern
2-octet-other-hex-number:6-octet-hex-number '(0:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
+ '[0-5]?\d{0,3}\d):(429496729[0-5]|42949672[0-8]\d|'
+ '4294967[01]\d{2}|429496[0-6]\d{3}|42949[0-5]\d{4}|'
+ '4294[0-8]\d{5}|429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|'
+ '[0-3]?\d{0,8}\d))|'
+ '(1:(((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|'
+ '1\d{2}|2[0-4]\d|25[0-5])):(6553[0-5]|655[0-2]\d|'
+ '65[0-4]\d{2}|6[0-4]\d{3}|[0-5]?\d{0,3}\d))|'
+ '(2:(429496729[0-5]|42949672[0-8]\d|4294967[01]\d{2}|'
+ '429496[0-6]\d{3}|42949[0-5]\d{4}|4294[0-8]\d{5}|'
+ '429[0-3]\d{6}|42[0-8]\d{7}|4[01]\d{8}|[0-3]?\d{0,8}\d):'
+ '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
+ '[0-5]?\d{0,3}\d))|'
+ '(([3-9a-fA-F]|[1-9a-fA-F][\da-fA-F]{1,3}):'
+ '[\da-fA-F]{1,12})';
}
description
"A route origin is an 8-octet BGP extended community
identifying the set of sites where the BGP route
originated(RFC 4364). A route origin consists of three
fields: A 2-octet type field, an administrator field,
and an assigned number field. According to the data
formats for type 0, 1, and 2 defined in RFC4364,
the encoding pattern is defined as:
Some valid examples are: 0:100:100, 1:1.1.1.1:100, and 0:2-octet-asn:4-octet-number
2:1234567890:203."; 1:4-octet-ipv4addr:2-octet-number
reference 2:4-octet-asn:2-octet-number.
"RFC4360: BGP Extended Communities Attribute. 2-octet-other-hex-number:6-octet-hex-number
RFC4369: BGP/MPLS IP Virtual Private Networks (VPNs)
RFC5668: 4-Octet AS Specific BGP Extended Community.";
}
typedef ipv6-route-origin { Some valid examples are: 0:100:100, 1:1.1.1.1:100, and
type string { 2:1234567890:203.";
pattern "((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]))):(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d)"; reference
pattern "((([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)):(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]?\\d{0,3}\\d)"; "RFC4360: BGP Extended Communities Attribute.
RFC4369: BGP/MPLS IP Virtual Private Networks (VPNs)
RFC5668: 4-Octet AS Specific BGP Extended Community.";
} }
description
"An IPv6 route origin is a 20-octet BGP IPv6 address
specific extended community serving the same function
as a standard 8-octet route only only allowing for
an IPv6 address as the global adminstrator. The format
is <ipv6-address:2-octet-number>.
Some valid examples are: 2001:DB8::1:6544 and typedef ipv6-route-origin {
2001:DB8::5eb1:791:6b37:17958"; type string {
reference pattern
"RFC5701: IPv6 Address Specific BGP Extended Community '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
Attribute"; + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
} + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+ '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+ ':'
+ '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
+ '[0-5]?\d{0,3}\d)';
pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+ '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))'
+ ':'
+ '(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|'
+ '[0-5]?\d{0,3}\d)';
}
description
"An IPv6 route origin is a 20-octet BGP IPv6 address
specific extended community serving the same function
as a standard 8-octet route only only allowing for
an IPv6 address as the global adminstrator. The format
is <ipv6-address:2-octet-number>.
/*** Collection of types common to multicast ***/ Some valid examples are: 2001:DB8::1:6544 and
2001:DB8::5eb1:791:6b37:17958";
reference
"RFC5701: IPv6 Address Specific BGP Extended Community
Attribute";
}
typedef ipv4-multicast-group-address { /*** Collection of types common to multicast ***/
type inet:ipv4-address {
pattern "(2((2[4-9])|(3[0-9]))\\.).*"; typedef ipv4-multicast-group-address {
type inet:ipv4-address {
pattern '(2((2[4-9])|(3[0-9]))\.).*';
}
description
"This type represents an IPv4 multicast group address,
which is in the range from 224.0.0.0 to 239.255.255.255.";
reference "RFC1112: Host Extensions for IP Multicasting.";
} }
description
"This type represents an IPv4 multicast group address,
which is in the range from 224.0.0.0 to 239.255.255.255.";
reference "RFC1112: Host Extensions for IP Multicasting.";
}
typedef ipv6-multicast-group-address { typedef ipv6-multicast-group-address {
type inet:ipv6-address { type inet:ipv6-address {
pattern "(([fF]{2}[0-9a-fA-F]{2}):).*"; pattern
'(([fF]{2}[0-9a-fA-F]{2}):).*';
}
description
"This type represents an IPv6 multicast group address,
which is in the range of FF00::/8.";
reference
"RFC4291: IP Version 6 Addressing Architecture. Sec 2.7.
RFC7346: IPv6 Multicast Address Scopes.";
} }
description
"This type represents an IPv6 multicast group address,
which is in the range of FF00::/8.";
reference
"RFC4291: IP Version 6 Addressing Architecture. Sec 2.7.
RFC7346: IPv6 Multicast Address Scopes.";
}
typedef ip-multicast-group-address { typedef ip-multicast-group-address {
type union { type union {
type ipv4-multicast-group-address; type ipv4-multicast-group-address;
type ipv6-multicast-group-address; type ipv6-multicast-group-address;
}
description
"This type represents a version-neutral IP multicast group
address. The format of the textual representation implies
the IP version.";
} }
description
"This type represents a version-neutral IP multicast group
address. The format of the textual representation implies
the IP version.";
}
typedef ipv4-multicast-source-address { typedef ipv4-multicast-source-address {
type union { type union {
type enumeration { type enumeration {
enum "*" { enum "*" {
description description
"Any source address."; "Any source address.";
}
} }
type inet:ipv4-address;
} }
type inet:ipv4-address; description
"Multicast source IPv4 address type.";
} }
description
"Multicast source IPv4 address type.";
}
typedef ipv6-multicast-source-address { typedef ipv6-multicast-source-address {
type union { type union {
type enumeration { type enumeration {
enum "*" { enum "*" {
description description
"Any source address."; "Any source address.";
}
} }
type inet:ipv6-address;
} }
type inet:ipv6-address; description
"Multicast source IPv6 address type.";
} }
description
"Multicast source IPv6 address type.";
} /*** Collection of types common to protocols ***/
/*** Collection of types common to protocols ***/
typedef bandwidth-ieee-float32 {
type string {
pattern "0[xX](0((\\.0?)?[pP](\\+)?0?|(\\.0?))|1(\\.([\\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\\+)?(12[0-7]|1[01]\\d|0?\\d?\\d)?)";
}
description
"Bandwidth in IEEE 754 floating point 32-bit binary format:
(-1)**(S) * 2**(Exponent-127) * (1 + Fraction),
where Exponent uses 8 bits, and Fraction uses 23 bits.
The units are octets per second.
The encoding format is the external hexadecimal-significant
character sequences specified in IEEE 754 and C99. The
format is restricted to be normalized, non-negative, and
non-fraction: 0x1.hhhhhhp{+}d or 0X1.HHHHHHP{+}D
where 'h' and 'H' are hexadecimal digits, 'd' and 'D' are
integers in the range of [0..127].
When six hexadecimal digits are used for 'hhhhhh' or 'HHHHHH',
the least significant digit must be an even number.
'x' and 'X' indicate hexadecimal; 'p' and 'P' indicate power
of two. Some examples are: 0x0p0, 0x1p10, and
0x1.abcde2p+20";
reference
"IEEE Std 754-2008: IEEE Standard for Floating-Point
Arithmetic.";
}
typedef link-access-type { typedef bandwidth-ieee-float32 {
type enumeration { type string {
enum "broadcast" { pattern
description '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
"Specify broadcast multi-access network."; + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
} + '1[01]\d|0?\d?\d)?)';
enum "non-broadcast-multiaccess" {
description
"Specify Non-Broadcast Multi-Access (NBMA) network.";
}
enum "point-to-multipoint" {
description
"Specify point-to-multipoint network.";
}
enum "point-to-point" {
description
"Specify point-to-point network.";
} }
} description
description "Bandwidth in IEEE 754 floating point 32-bit binary format:
"Link access type."; (-1)**(S) * 2**(Exponent-127) * (1 + Fraction),
} where Exponent uses 8 bits, and Fraction uses 23 bits.
The units are octets per second.
The encoding format is the external hexadecimal-significant
character sequences specified in IEEE 754 and C99. The
format is restricted to be normalized, non-negative, and
non-fraction: 0x1.hhhhhhp{+}d or 0X1.HHHHHHP{+}D
where 'h' and 'H' are hexadecimal digits, 'd' and 'D' are
integers in the range of [0..127].
When six hexadecimal digits are used for 'hhhhhh' or 'HHHHHH',
the least significant digit must be an even number.
'x' and 'X' indicate hexadecimal; 'p' and 'P' indicate power
of two. Some examples are: 0x0p0, 0x1p10, and
0x1.abcde2p+20";
reference
"IEEE Std 754-2008: IEEE Standard for Floating-Point
Arithmetic.";
typedef timer-multiplier { }
type uint8;
description
"The number of timer value intervals that should be
interpreted as a failure.";
}
typedef timer-value-seconds16 { typedef link-access-type {
type union {
type uint16 {
range "1..65535";
}
type enumeration { type enumeration {
enum "infinity" { enum "broadcast" {
description description
"The timer is set to infinity."; "Specify broadcast multi-access network.";
} }
enum "not-set" { enum "non-broadcast-multiaccess" {
description description
"The timer is not set."; "Specify Non-Broadcast Multi-Access (NBMA) network.";
} }
} enum "point-to-multipoint" {
}
units "seconds";
description
"Timer value type, in seconds (16-bit range).";
}
typedef timer-value-seconds32 {
type union {
type uint32 {
range "1..4294967295";
}
type enumeration {
enum "infinity" {
description description
"The timer is set to infinity."; "Specify point-to-multipoint network.";
} }
enum "not-set" { enum "point-to-point" {
description description
"The timer is not set."; "Specify point-to-point network.";
} }
} }
description
"Link access type.";
} }
units "seconds";
description
"Timer value type, in seconds (32-bit range).";
}
typedef timer-value-milliseconds { typedef timer-multiplier {
type union { type uint8;
type uint32 { description
range "1..4294967295"; "The number of timer value intervals that should be
} interpreted as a failure.";
type enumeration { }
enum "infinity" {
description typedef timer-value-seconds16 {
"The timer is set to infinity."; type union {
type uint16 {
range "1..65535";
} }
enum "not-set" { type enumeration {
description enum "infinity" {
"The timer is not set."; description
"The timer is set to infinity.";
}
enum "not-set" {
description
"The timer is not set.";
}
} }
} }
units "seconds";
description
"Timer value type, in seconds (16-bit range).";
} }
units "milliseconds";
description
"Timer value type, in milliseconds.";
}
typedef percentage { typedef timer-value-seconds32 {
type uint8 { type union {
range "0..100"; type uint32 {
range "1..4294967295";
}
type enumeration {
enum "infinity" {
description
"The timer is set to infinity.";
}
enum "not-set" {
description
"The timer is not set.";
}
}
}
units "seconds";
description
"Timer value type, in seconds (32-bit range).";
} }
description
"Integer indicating a percentage value";
}
typedef timeticks64 { typedef timer-value-milliseconds {
type uint64; type union {
description type uint32 {
"This type is based on the timeticks type defined in range "1..4294967295";
RFC 6991, but with 64-bit width. It represents the time, }
modulo 2^64, in hundredths of a second between two epochs."; type enumeration {
reference "RFC 6991 - Common YANG Data Types"; enum "infinity" {
} description
"The timer is set to infinity.";
typedef uint24 { }
type uint32 { enum "not-set" {
range "0 .. 16777215"; description
"The timer is not set.";
}
}
}
units "milliseconds";
description
"Timer value type, in milliseconds.";
} }
description
"24-bit unsigned integer";
}
/*** Collection of types related to MPLS/GMPLS ***/ typedef percentage {
type uint8 {
typedef generalized-label { range "0..100";
type binary; }
description description
"Generalized label. Nodes sending and receiving the "Integer indicating a percentage value";
Generalized Label are aware of the link-specific
label context and type.";
reference "RFC3471: Section 3.2";
}
typedef mpls-label-special-purpose {
type identityref {
base mpls-label-special-purpose-value;
} }
description
"This type represents the special-purpose Multiprotocol Label
Switching (MPLS) label values.";
reference
"RFC3032: MPLS Label Stack Encoding.
RFC7274: Allocating and Retiring Special-Purpose MPLS
Labels.";
}
typedef mpls-label-general-use { typedef timeticks64 {
type uint32 { type uint64;
range "16..1048575"; description
"This type is based on the timeticks type defined in
RFC 6991, but with 64-bit width. It represents the time,
modulo 2^64, in hundredths of a second between two epochs.";
reference "RFC 6991 - Common YANG Data Types";
} }
description
"The 20-bit label values in an MPLS label stack entry,
specified in RFC3032. This label value does not include
the encodings of Traffic Class and TTL (time to live).
The label range specified by this type is for general use,
with special-purpose MPLS label values excluded.";
reference "RFC3032: MPLS Label Stack Encoding.";
}
typedef mpls-label { typedef uint24 {
type union { type uint32 {
type mpls-label-special-purpose; range "0 .. 16777215";
type mpls-label-general-use; }
description
"24-bit unsigned integer";
} }
description
"The 20-bit label values in an MPLS label stack entry,
specified in RFC3032. This label value does not include
the encodings of Traffic Class and TTL (time to live).";
reference "RFC3032: MPLS Label Stack Encoding.";
}
/*** Groupings **/ /*** Collection of types related to MPLS/GMPLS ***/
grouping mpls-label-stack { typedef generalized-label {
description type binary;
"A grouping that specifies an MPLS label stack.";
container mpls-label-stack {
description description
"Container for a list of MPLS label stack entries."; "Generalized label. Nodes sending and receiving the
list entry { Generalized Label are aware of the link-specific
key "id"; label context and type.";
description reference "RFC3471: Section 3.2";
"List of MPLS label stack entries.";
leaf id {
type uint8;
description
"Identifies the sequence of an MPLS label stack entries.
An entry with smaller ID value is precedes an entry in
the label stack with a smaller ID.";
}
leaf label {
type rt-types:mpls-label;
description
"Label value.";
}
leaf ttl {
type uint8;
description
"Time to Live (TTL).";
reference "RFC3032: MPLS Label Stack Encoding.";
}
leaf traffic-class {
type uint8 {
range "0..7";
}
description
"Traffic Class (TC).";
reference
"RFC5462: Multiprotocol Label Switching (MPLS) Label
Stack Entry: 'EXP' Field Renamed to 'Traffic Class'
Field.";
}
}
} }
}
grouping vpn-route-targets { typedef mpls-label-special-purpose {
description type identityref {
"A grouping that specifies Route Target import-export rules base mpls-label-special-purpose-value;
used in the BGP enabled Virtual Private Networks (VPNs)."; }
reference
"RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs).
RFC4664: Framework for Layer 2 Virtual Private Networks
(L2VPNs)";
list vpn-target {
key "route-target";
description description
"List of Route Targets."; "This type represents the special-purpose Multiprotocol Label
leaf route-target { Switching (MPLS) label values.";
type rt-types:route-target; reference
description "RFC3032: MPLS Label Stack Encoding.
"Route Target value"; RFC7274: Allocating and Retiring Special-Purpose MPLS
Labels.";
}
typedef mpls-label-general-use {
type uint32 {
range "16..1048575";
} }
leaf route-target-type { description
type rt-types:route-target-type; "The 20-bit label values in an MPLS label stack entry,
mandatory true; specified in RFC3032. This label value does not include
description the encodings of Traffic Class and TTL (time to live).
"Import/export type of the Route Target."; The label range specified by this type is for general use,
with special-purpose MPLS label values excluded.";
reference "RFC3032: MPLS Label Stack Encoding.";
}
typedef mpls-label {
type union {
type mpls-label-special-purpose;
type mpls-label-general-use;
} }
description
"The 20-bit label values in an MPLS label stack entry,
specified in RFC3032. This label value does not include
the encodings of Traffic Class and TTL (time to live).";
reference "RFC3032: MPLS Label Stack Encoding.";
} }
}
grouping geo-coordinates { /*** Groupings **/
description
"Standard grouping for Geo Coordinates grouping mpls-label-stack {
in routing information";
container geo-coordinates {
description description
"Container for Geo Coordinates"; "A grouping that specifies an MPLS label stack.";
leaf flags { container mpls-label-stack {
type bits { description
bit U { "Container for a list of MPLS label stack entries.";
list entry {
key "id";
description
"List of MPLS label stack entries.";
leaf id {
type uint8;
description description
"If the U-bit is set, it indicates that "Identifies the sequence of an MPLS label stack entries.
the location-uncertainty is specified, If the An entry with smaller ID value is precedes an entry in
U-bit is clear, it indicates the the label stack with a smaller ID.";
location-uncertainty is unspecified.";
} }
bit N { leaf label {
type rt-types:mpls-label;
description description
"If the N-bit is set, it indicates the "Label value.";
latitude is north relative to the Equator. If
the N-bit is clear, it indicates the latitude
is south of the Equator.";
} }
bit E { leaf ttl {
description type uint8;
"If the E-bit is set, it indicates the
longitute is east of the Prime Meridian. If
the E-bit is clear, it indicates the longitude
is west of the Prime Meridian.";
}
bit A {
description
"If the A-bit is set, it indicates the
altitude is specified. If the A-bit is clear,
it indicates the altitude is unspecified.";
}
bit M {
description
"If the M-bit is set, it indicates the
altitude is specified in meters. If the M-bit
is clear, it indicates the altitude is
specified in centimeters.";
}
bit R {
description description
"If the R-bit is set, it indicates the "Time to Live (TTL).";
radius is specified and the encoding is for a reference "RFC3032: MPLS Label Stack Encoding.";
circular area. If the R-bit is clear, it
indicates the radius is unspecified and the
encoding is for a single point.";
} }
bit K { leaf traffic-class {
type uint8 {
range "0..7";
}
description description
"If the R-bit is set, it indicates the "Traffic Class (TC).";
radius is specified in kilometers. If the reference
R-bit is clear, it indicates the radius is "RFC5462: Multiprotocol Label Switching (MPLS) Label
specified in meters."; Stack Entry: 'EXP' Field Renamed to 'Traffic Class'
Field.";
} }
} }
description
"Bits defining granularity or semantics
of Geo Coordinates fields.";
} }
leaf location-uncertainty { }
type uint16;
grouping vpn-route-targets {
description
"A grouping that specifies Route Target import-export rules
used in the BGP enabled Virtual Private Networks (VPNs).";
reference
"RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs).
RFC4664: Framework for Layer 2 Virtual Private Networks
(L2VPNs)";
list vpn-target {
key "route-target";
description description
"Number of centimeters of uncertainty for "List of Route Targets.";
the location."; leaf route-target {
} type rt-types:route-target;
leaf latitude-degrees { description
type uint8 { "Route Target value";
range "0 .. 90";
} }
description leaf route-target-type {
"Latitude degrees north or south of the type rt-types:route-target-type;
Equator (northern or southern hemisphere, mandatory true;
respectively)."; description
} "Import/export type of the Route Target.";
leaf latitude-milliseconds {
type uint24 {
range "0 .. 3599999";
} }
description
"Latitude millisecond granularity (less
than 60 minutes or a single degree).";
} }
leaf longitude-degrees { }
type uint8 { grouping geo-coordinates {
range "0 .. 180"; description
} "Standard grouping for Geo Coordinates
in routing information";
container geo-coordinates {
description description
"Longitude degrees east or westof the "Container for Geo Coordinates";
Prime Meridian (eastern or western hemisphere, leaf flags {
respectively)."; type bits {
} bit U {
leaf longitude-milliseconds { description
type uint24 { "If the U-bit is set, it indicates that
range "0 .. 3599999"; the location-uncertainty is specified, If the
U-bit is clear, it indicates the
location-uncertainty is unspecified.";
}
bit N {
description
"If the N-bit is set, it indicates the
latitude is north relative to the Equator. If
the N-bit is clear, it indicates the latitude
is south of the Equator.";
}
bit E {
description
"If the E-bit is set, it indicates the
longitute is east of the Prime Meridian. If
the E-bit is clear, it indicates the longitude
is west of the Prime Meridian.";
}
bit A {
description
"If the A-bit is set, it indicates the
altitude is specified. If the A-bit is clear,
it indicates the altitude is unspecified.";
}
bit M {
description
"If the M-bit is set, it indicates the
altitude is specified in meters. If the M-bit
is clear, it indicates the altitude is
specified in centimeters.";
}
bit R {
description
"If the R-bit is set, it indicates the
radius is specified and the encoding is for a
circular area. If the R-bit is clear, it
indicates the radius is unspecified and the
encoding is for a single point.";
}
bit K {
description
"If the R-bit is set, it indicates the
radius is specified in kilometers. If the
R-bit is clear, it indicates the radius is
specified in meters.";
}
}
description
"Bits defining granularity or semantics
of Geo Coordinates fields.";
}
leaf location-uncertainty {
type uint16;
description
"Number of centimeters of uncertainty for
the location.";
}
leaf latitude-degrees {
type uint8 {
range "0 .. 90";
}
description
"Latitude degrees north or south of the
Equator (northern or southern hemisphere,
respectively).";
}
leaf latitude-milliseconds {
type uint24 {
range "0 .. 3599999";
}
description
"Latitude millisecond granularity (less
than 60 minutes or a single degree).";
}
leaf longitude-degrees {
type uint8 {
range "0 .. 180";
}
description
"Longitude degrees east or westof the
Prime Meridian (eastern or western hemisphere,
respectively).";
}
leaf longitude-milliseconds {
type uint24 {
range "0 .. 3599999";
}
description
"Longitude millisecond granularity (less
than 60 minutes or a single degree).";
}
leaf altitude {
type int32;
description
"Height relative to sea level in
centimeters or meters. A negative height
indicates that the location is below sea
level.";
}
leaf radius {
type uint16;
description
"Radius of a circle centered at the
specified coordinates. The radius is specified
in meters unless the K-bit is specified
indicating specification in kilometers. If the
radius is specified, the geo-coordinates specify
the entire area of the circle defined by the
radius and center point.";
} }
description
"Longitude millisecond granularity (less
than 60 minutes or a single degree).";
}
leaf altitude {
type int32;
description
"Height relative to sea level in
centimeters or meters. A negative height
indicates that the location is below sea
level.";
}
leaf radius {
type uint16;
description
"Radius of a circle centered at the
specified coordinates. The radius is specified
in meters unless the K-bit is specified
indicating specification in kilometers. If the
radius is specified, the geo-coordinates specify
the entire area of the circle defined by the
radius and center point.";
} }
} }
} }
}
<CODE ENDS> <CODE ENDS>
4. IANA Routing Types YANG Module 4. IANA Routing Types YANG Module
<CODE BEGINS> file "iana-routing-types@2017-06-29.yang" <CODE BEGINS> file "iana-routing-types@2017-06-29.yang"
module iana-routing-types { module iana-routing-types {
namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; namespace "urn:ietf:params:xml:ns:yang:iana-routing-types";
prefix iana-rt-types; prefix iana-rt-types;
organization organization
"IANA"; "IANA";
 End of changes. 111 change blocks. 
630 lines changed or deleted 699 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/