| rfc9911.original | rfc9911.txt | |||
|---|---|---|---|---|
| Network Working Group J. Schönwälder, Ed. | Internet Engineering Task Force (IETF) J. Schönwälder, Ed. | |||
| Internet-Draft Constructor University | Request for Comments: 9911 Constructor University | |||
| Obsoletes: 6991 (if approved) 23 June 2025 | Obsoletes: 6991 December 2025 | |||
| Intended status: Standards Track | Category: Standards Track | |||
| Expires: 25 December 2025 | ISSN: 2070-1721 | |||
| Common YANG Data Types | Common YANG Data Types | |||
| draft-ietf-netmod-rfc6991-bis-18 | ||||
| Abstract | Abstract | |||
| This document defines a collection of common data types to be used | This document defines a collection of common data types to be used | |||
| with the YANG data modeling language. This version of the document | with the YANG data modeling language. This version of the document | |||
| adds several new type definitions and obsoletes RFC 6991. | adds several new type definitions and obsoletes RFC 6991. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 25 December 2025. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9911. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2025 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| This document may contain material from IETF Documents or IETF | This document may contain material from IETF Documents or IETF | |||
| Contributions published or made publicly available before November | Contributions published or made publicly available before November | |||
| 10, 2008. The person(s) controlling the copyright in some of this | 10, 2008. The person(s) controlling the copyright in some of this | |||
| material may not have granted the IETF Trust the right to allow | material may not have granted the IETF Trust the right to allow | |||
| modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
| Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
| the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
| outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
| not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
| it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
| than English. | than English. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Overview | |||
| 3. Core YANG Types . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Core YANG Types | |||
| 4. Internet Protocol Suite Types . . . . . . . . . . . . . . . . 24 | 4. Internet Protocol Suite Types | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 | 5. IANA Considerations | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 39 | 6. Security Considerations | |||
| 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 39 | 7. References | |||
| 8. Normative References . . . . . . . . . . . . . . . . . . . . 39 | 7.1. Normative References | |||
| 9. Informative References . . . . . . . . . . . . . . . . . . . 40 | 7.2. Informative References | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 44 | Acknowledgments | |||
| Author's Address | ||||
| 1. Introduction | 1. Introduction | |||
| YANG [RFC7950] is a data modeling language used to model | YANG [RFC7950] is a data modeling language used to model | |||
| configuration and state data manipulated by the Network Configuration | configuration and state data manipulated by the Network Configuration | |||
| Protocol (NETCONF) [RFC6241]. The YANG language supports a small set | Protocol (NETCONF) [RFC6241]. The YANG language supports a small set | |||
| of built-in data types and provides mechanisms to derive other types | of built-in data types and provides mechanisms to derive other types | |||
| from the built-in types. | from the built-in types. | |||
| This document defines a collection of common data types. The | This document defines a collection of common data types. The | |||
| definitions are organized into two YANG modules: | definitions are organized into two YANG modules: | |||
| * The "ietf-yang-types" module defines generally useful data types | * The "ietf-yang-types" module defines generally useful data types | |||
| such as types for counters, gauges, date and time related types, | such as types for counters and gauges, types related to date and | |||
| or types for common string values such as uuids, dotted-quads, or | time, and types for common string values (e.g., UUIDs, dotted-quad | |||
| language tags. | notation, and language tags). | |||
| * The "ietf-inet-types" module defines data types relevant for the | * The "ietf-inet-types" module defines data types relevant for the | |||
| Internet protocol suite such as IP address related types, domain- | Internet protocol suite such as types related to IP address, types | |||
| name and host-name types, uri and email types, as well as types | for domain name, host name, URI, and email, and types for values | |||
| for values in common protocol fields such as port numbers. | in common protocol fields (e.g., port numbers). | |||
| The initial version of these YANG modules were published as | The initial version of these YANG modules was published as [RFC6021]. | |||
| [RFC6021]. The first revision of [RFC6021], published as [RFC6991], | The first revision of [RFC6021], published as [RFC6991], added | |||
| added several new type definitions to the YANG modules. This second | several type definitions to the YANG modules. This second revision | |||
| revision adds further new type definitions and addresses errata 4076 | adds further new type definitions and addresses Erratum IDs 4076 | |||
| [ERR4076] and 5105 [ERR5105] of [RFC6991]. Furthermore, the yang- | [Err4076] and 5105 [Err5105]. Furthermore, the yang-identifier | |||
| identifier definition has been aligned with YANG 1.1 [RFC7950] and | definition has been aligned with YANG 1.1 [RFC7950], and some pattern | |||
| some pattern statements have been improved. For further details, see | statements have been improved. For further details, see the revision | |||
| the revision statements of the YANG modules in Section 3 and | statements of the YANG modules in Sections 3 and 4. A brief overview | |||
| Section 4. A brief overview of all types and when they were | of all types and when they were introduced can be found in Section 2. | |||
| introduced can be found in Section 2. Additional type definitions | Additional type definitions may be added in the future by submitting | |||
| may be added in the future by submitting proposals to the NETMOD | proposals to the NETMOD Working Group. | |||
| working group. | ||||
| This document uses the YANG terminology defined in Section 3 of | This document uses the YANG terminology defined in Section 3 of | |||
| [RFC7950]. | [RFC7950]. | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "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] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 2. Overview | 2. Overview | |||
| Table 1 and Table 2 list the types defined in the YANG modules "ietf- | Tables 1 and 2 list the types defined in the YANG modules "ietf-yang- | |||
| yang-types" and "ietf-inet-types". For each type, the name of the | types" and "ietf-inet-types". For each type, the name of the type, | |||
| type, the base type it was derived from, and the RFC introducing the | the base type it was derived from, and the RFC introducing the type | |||
| type is listed. | is listed. | |||
| +=======================+===================+============+ | +=======================+===================+============+ | |||
| | Type | Base Type | Introduced | | | Type | Base Type | Introduced | | |||
| +=======================+===================+============+ | +=======================+===================+============+ | |||
| | counter32 | uint32 | RFC 6021 | | | counter32 | uint32 | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | zero-based-counter32 | uint32 | RFC 6021 | | | zero-based-counter32 | uint32 | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | counter64 | uint64 | RFC 6021 | | | counter64 | uint64 | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| skipping to change at page 4, line 6 ¶ | skipping to change at line 141 ¶ | |||
| | gauge32 | uint32 | RFC 6021 | | | gauge32 | uint32 | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | gauge64 | uint64 | RFC 6021 | | | gauge64 | uint64 | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | object-identifier | string | RFC 6021 | | | object-identifier | string | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | object-identifier-128 | object-identifier | RFC 6021 | | | object-identifier-128 | object-identifier | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | date-and-time | string | RFC 6021 | | | date-and-time | string | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | date | string | RFC XXXX | | | date | string | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | date-no-zone | string | RFC XXXX | | | date-no-zone | string | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | time | string | RFC XXXX | | | time | string | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | time-no-zone | string | RFC XXXX | | | time-no-zone | string | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | hours32 | int32 | RFC XXXX | | | hours32 | int32 | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | minutes32 | int32 | RFC XXXX | | | minutes32 | int32 | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | seconds32 | int32 | RFC XXXX | | | seconds32 | int32 | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | centiseconds32 | int32 | RFC XXXX | | | centiseconds32 | int32 | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | milliseconds32 | int32 | RFC XXXX | | | milliseconds32 | int32 | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | microseconds32 | int32 | RFC XXXX | | | microseconds32 | int32 | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | microseconds64 | int64 | RFC XXXX | | | microseconds64 | int64 | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | nanoseconds32 | int32 | RFC XXXX | | | nanoseconds32 | int32 | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | nanoseconds64 | int64 | RFC XXXX | | | nanoseconds64 | int64 | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | timeticks | int32 | RFC 6021 | | | timeticks | int32 | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | timestamp | timeticks | RFC 6021 | | | timestamp | timeticks | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | phys-address | string | RFC 6021 | | | phys-address | string | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | mac-address | string | RFC 6021 | | | mac-address | string | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | xpath1.0 | string | RFC 6021 | | | xpath1.0 | string | RFC 6021 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | hex-string | string | RFC 6991 | | | hex-string | string | RFC 6991 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | uuid | string | RFC 6991 | | | uuid | string | RFC 6991 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | dotted-quad | string | RFC 6991 | | | dotted-quad | string | RFC 6991 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | language-tag | string | RFC XXXX | | | language-tag | string | RFC 9911 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| | yang-identifier | string | RFC 6991 | | | yang-identifier | string | RFC 6991 | | |||
| +-----------------------+-------------------+------------+ | +-----------------------+-------------------+------------+ | |||
| Table 1: Types defined in ietf-yang-types | ||||
| Table 1: Types Defined in the "ietf-yang-types" Module | ||||
| +=============================+=================+============+ | +=============================+=================+============+ | |||
| | Type | Base Type | Introduced | | | Type | Base Type | Introduced | | |||
| +=============================+=================+============+ | +=============================+=================+============+ | |||
| | ip-version | enum | RFC 6021 | | | ip-version | enum | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | dscp | uint8 | RFC 6021 | | | dscp | uint8 | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ipv6-flow-label | uint32 | RFC 6021 | | | ipv6-flow-label | uint32 | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | port-number | uint16 | RFC 6021 | | | port-number | uint16 | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | protocol-number | uint8 | RFC XXXX | | | protocol-number | uint8 | RFC 9911 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | upper-layer-protocol-number | protocol-number | RFC XXXX | | | upper-layer-protocol-number | protocol-number | RFC 9911 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | as-number | uint32 | RFC 6021 | | | as-number | uint32 | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ip-address | union | RFC 6021 | | | ip-address | union | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ipv4-address | string | RFC 6021 | | | ipv4-address | string | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ipv6-address | string | RFC 6021 | | | ipv6-address | string | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ip-address-no-zone | union | RFC 6991 | | | ip-address-no-zone | union | RFC 6991 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ipv4-address-no-zone | ipv4-address | RFC 6991 | | | ipv4-address-no-zone | ipv4-address | RFC 6991 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ipv6-address-no-zone | ipv6-address | RFC 6991 | | | ipv6-address-no-zone | ipv6-address | RFC 6991 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ip-address-link-local | union | RFC XXXX | | | ip-address-link-local | union | RFC 9911 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ipv4-address-link-local | ipv4-address | RFC XXXX | | | ipv4-address-link-local | ipv4-address | RFC 9911 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ipv6-address-link-local | ipv6-address | RFC XXXX | | | ipv6-address-link-local | ipv6-address | RFC 9911 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ip-prefix | union | RFC 6021 | | | ip-prefix | union | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ipv4-prefix | string | RFC 6021 | | | ipv4-prefix | string | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ipv6-prefix | string | RFC 6021 | | | ipv6-prefix | string | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ip-address-and-prefix | union | RFC XXXX | | | ip-address-and-prefix | union | RFC 9911 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ipv4-address-and-prefix | string | RFC XXXX | | | ipv4-address-and-prefix | string | RFC 9911 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | ipv6-address-and-prefix | string | RFC XXXX | | | ipv6-address-and-prefix | string | RFC 9911 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | domain-name | string | RFC 6021 | | | domain-name | string | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | host-name | domain-name | RFC XXXX | | | host-name | domain-name | RFC 9911 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | host | union | RFC 6021 | | | host | union | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | uri | string | RFC 6021 | | | uri | string | RFC 6021 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| | email-address | string | RFC XXXX | | | email-address | string | RFC 9911 | | |||
| +-----------------------------+-----------------+------------+ | +-----------------------------+-----------------+------------+ | |||
| Table 2: Types defined in ietf-inet-types | Table 2: Types Defined in the "ietf-inet-types" Module | |||
| Some types have an equivalent Structure of Management Information | Some types have an equivalent Structure of Management Information | |||
| Version 2 (SMIv2) [RFC2578] [RFC2579] data type. A YANG data type is | Version 2 (SMIv2) [RFC2578] [RFC2579] data type. A YANG data type is | |||
| equivalent to an SMIv2 data type if the data types have the same set | equivalent to an SMIv2 data type if the data types have the same set | |||
| of values and the semantics of the values are equivalent. | of values and the semantics of the values are equivalent. | |||
| Table 3 lists the types defined in the "ietf-yang-types" YANG module | Table 3 lists the types defined in the "ietf-yang-types" YANG module | |||
| with their corresponding SMIv2 types and Table 4 lists the types | with their corresponding SMIv2 types, and Table 4 lists the types | |||
| defined in the "ietf-inet-types" module with their corresponding | defined in the "ietf-inet-types" module with their corresponding | |||
| SMIv2 types. | SMIv2 types. | |||
| +=======================+================================+ | +=======================+================================+ | |||
| | YANG type | Equivalent SMIv2 type (module) | | | YANG type | Equivalent SMIv2 type (module) | | |||
| +=======================+================================+ | +=======================+================================+ | |||
| | counter32 | Counter32 (SNMPv2-SMI) | | | counter32 | Counter32 (SNMPv2-SMI) | | |||
| +-----------------------+--------------------------------+ | +-----------------------+--------------------------------+ | |||
| | zero-based-counter32 | ZeroBasedCounter32 (RMON2-MIB) | | | zero-based-counter32 | ZeroBasedCounter32 (RMON2-MIB) | | |||
| +-----------------------+--------------------------------+ | +-----------------------+--------------------------------+ | |||
| skipping to change at page 7, line 35 ¶ | skipping to change at line 290 ¶ | |||
| +-----------------------+--------------------------------+ | +-----------------------+--------------------------------+ | |||
| | timestamp | TimeStamp (SNMPv2-TC) | | | timestamp | TimeStamp (SNMPv2-TC) | | |||
| +-----------------------+--------------------------------+ | +-----------------------+--------------------------------+ | |||
| | phys-address | PhysAddress (SNMPv2-TC) | | | phys-address | PhysAddress (SNMPv2-TC) | | |||
| +-----------------------+--------------------------------+ | +-----------------------+--------------------------------+ | |||
| | mac-address | MacAddress (SNMPv2-TC) | | | mac-address | MacAddress (SNMPv2-TC) | | |||
| +-----------------------+--------------------------------+ | +-----------------------+--------------------------------+ | |||
| | language-tag | LangTag (LANGTAG-TC-MIB) | | | language-tag | LangTag (LANGTAG-TC-MIB) | | |||
| +-----------------------+--------------------------------+ | +-----------------------+--------------------------------+ | |||
| Table 3: Equivalent SMIv2 types for ietf-yang-types | Table 3: Equivalent SMIv2 Types for the "ietf-yang- | |||
| types" Module | ||||
| +=================+===============================================+ | +=================+===============================================+ | |||
| | YANG type | Equivalent SMIv2 type (module) | | | YANG type | Equivalent SMIv2 type (module) | | |||
| +=================+===============================================+ | +=================+===============================================+ | |||
| | ip-version | InetVersion (INET-ADDRESS-MIB) | | | ip-version | InetVersion (INET-ADDRESS-MIB) | | |||
| +-----------------+-----------------------------------------------+ | +-----------------+-----------------------------------------------+ | |||
| | dscp | Dscp (DIFFSERV-DSCP-TC) | | | dscp | Dscp (DIFFSERV-DSCP-TC) | | |||
| +-----------------+-----------------------------------------------+ | +-----------------+-----------------------------------------------+ | |||
| | ipv6-flow-label | IPv6FlowLabel (IPV6-FLOW-LABEL-MIB) | | | ipv6-flow-label | IPv6FlowLabel (IPV6-FLOW-LABEL-MIB) | | |||
| +-----------------+-----------------------------------------------+ | +-----------------+-----------------------------------------------+ | |||
| | port-number | InetPortNumber (INET-ADDRESS-MIB) | | | port-number | InetPortNumber (INET-ADDRESS-MIB) | | |||
| +-----------------+-----------------------------------------------+ | +-----------------+-----------------------------------------------+ | |||
| | as-number | InetAutonomousSystemNumber (INET-ADDRESS-MIB) | | | as-number | InetAutonomousSystemNumber (INET-ADDRESS-MIB) | | |||
| +-----------------+-----------------------------------------------+ | +-----------------+-----------------------------------------------+ | |||
| | uri | Uri (URI-TC-MIB) | | | uri | Uri (URI-TC-MIB) | | |||
| +-----------------+-----------------------------------------------+ | +-----------------+-----------------------------------------------+ | |||
| Table 4: Equivalent SMIv2 types for ietf-inet-types | Table 4: Equivalent SMIv2 Types for the "ietf-inet-types" Module | |||
| 3. Core YANG Types | 3. Core YANG Types | |||
| The ietf-yang-types YANG module references [IEEE-802-2001], | The "ietf-yang-types" YANG module references [IEEE-802-2001], | |||
| [ISO-9834-1], [RFC2578], [RFC2579], [RFC2856], [RFC3339], [RFC4122], | [ISO-9834-1], [RFC2578], [RFC2579], [RFC2856], [RFC3339], [RFC4122], | |||
| [RFC4502], [RFC5131], [RFC5646], [RFC7950], [RFC8294], [RFC9557], | [RFC4502], [RFC5131], [RFC5646], [RFC7950], [RFC8294], [RFC9557], | |||
| [W3C.xpath], and [W3C.xmlschema11-2]. | [XPATH], and [XSD-TYPES]. | |||
| <CODE BEGINS> file "ietf-yang-types@2025-06-23.yang" | <CODE BEGINS> file "ietf-yang-types@2025-12-01.yang" | |||
| module ietf-yang-types { | module ietf-yang-types { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types"; | namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types"; | |||
| prefix "yang"; | prefix yang; | |||
| organization | organization | |||
| "IETF Network Modeling (NETMOD) Working Group"; | "IETF Network Modeling (NETMOD) Working Group"; | |||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/netmod/> | "WG Web: <https://datatracker.ietf.org/wg/netmod/> | |||
| WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
| Editor: Juergen Schoenwaelder | ||||
| <mailto:jschoenwaelder@constructor.university>"; | ||||
| Editor: Juergen Schoenwaelder | ||||
| <mailto:jschoenwaelder@constructor.university>"; | ||||
| description | description | |||
| "This module contains a collection of generally useful derived | "This module contains a collection of generally useful derived | |||
| YANG data types. | YANG data types. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here. | they appear in all capitals, as shown here. | |||
| Copyright (c) 2025 IETF Trust and the persons identified as | Copyright (c) 2025 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 Revised BSD License | to the license terms contained in, the Revised 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 | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC 9911; | |||
| see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
| revision 2025-06-23 { | revision 2025-12-01 { | |||
| description | description | |||
| "This revision adds the following new data types: | "This revision adds the following new data types: | |||
| - yang:date | - yang:date | |||
| - yang:date-no-zone | - yang:date-no-zone | |||
| - yang:time | - yang:time | |||
| - yang:time-no-zone | - yang:time-no-zone | |||
| - yang:hours32 | - yang:hours32 | |||
| - yang:minutes32 | - yang:minutes32 | |||
| - yang:seconds32 | - yang:seconds32 | |||
| - yang:centiseconds32 | - yang:centiseconds32 | |||
| - yang:milliseconds32 | - yang:milliseconds32 | |||
| - yang:microseconds32 | - yang:microseconds32 | |||
| - yang:microseconds64 | - yang:microseconds64 | |||
| - yang:nanoseconds32 | - yang:nanoseconds32 | |||
| - yang:nanoseconds64 | - yang:nanoseconds64 | |||
| - yang:language-tag | - yang:language-tag | |||
| The yang-identifier definition has been aligned with YANG | The yang-identifier definition has been aligned with YANG | |||
| 1.1 and types representing time support the representation | 1.1, and types representing time support the representation | |||
| of leap seconds. The representation of time zone offsets | of leap seconds. The representation of time zone offsets | |||
| has been aligned with RFC 9557. Several description and | has been aligned with RFC 9557. Several description and | |||
| pattern statements have been improved."; | pattern statements have been improved."; | |||
| reference | reference | |||
| "RFC XXXX: Common YANG Data Types"; | "RFC 9911: Common YANG Data Types"; | |||
| } | } | |||
| revision 2013-07-15 { | revision 2013-07-15 { | |||
| description | description | |||
| "This revision adds the following new data types: | "This revision adds the following new data types: | |||
| - yang:yang-identifier | - yang:yang-identifier | |||
| - yang:hex-string | - yang:hex-string | |||
| - yang:uuid | - yang:uuid | |||
| - yang:dotted-quad"; | - yang:dotted-quad"; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| revision 2010-09-24 { | revision 2010-09-24 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC 6021: Common YANG Data Types"; | "RFC 6021: Common YANG Data Types"; | |||
| } | } | |||
| /*** collection of counter and gauge types ***/ | /*** collection of counter and gauge types ***/ | |||
| typedef counter32 { | typedef counter32 { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The counter32 type represents a non-negative integer | "The counter32 type represents a non-negative integer | |||
| that monotonically increases until it reaches a | that monotonically increases until it reaches a | |||
| maximum value of 2^32-1 (4294967295 decimal), when it | maximum value of 2^32-1 (4294967295 decimal), when it | |||
| wraps around and starts increasing again from zero. | wraps around and starts increasing again from zero. | |||
| Counters have no defined 'initial' value, and thus, a | Counters have no defined 'initial' value, and thus, a | |||
| single value of a counter has (in general) no information | single value of a counter has (in general) no information | |||
| content. Discontinuities in the monotonically increasing | content. Discontinuities in the monotonically increasing | |||
| value normally occur at re-initialization of the | value normally occur at re-initialization of the | |||
| management system, and at other times as specified in the | management system and at other times as specified in the | |||
| description of a schema node using this type. If such | description of a schema node using this type. If such | |||
| other times can occur, for example, the instantiation of | other times can occur, for example, the instantiation of | |||
| a schema node of type counter32 at times other than | a schema node of type counter32 at times other than | |||
| re-initialization, then a corresponding schema node | re-initialization, then a corresponding schema node | |||
| should be defined, with an appropriate type, to indicate | should be defined, with an appropriate type, to indicate | |||
| the last discontinuity. | the last discontinuity. | |||
| The counter32 type should not be used for configuration | The counter32 type should not be used for configuration | |||
| schema nodes. A default statement SHOULD NOT be used in | schema nodes. A default statement SHOULD NOT be used in | |||
| combination with the type counter32. | combination with the type counter32. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the Counter32 type of the SMIv2."; | to the Counter32 type of the SMIv2."; | |||
| reference | reference | |||
| "RFC 2578: Structure of Management Information Version 2 | "RFC 2578: Structure of Management Information Version 2 | |||
| (SMIv2)"; | (SMIv2)"; | |||
| } | } | |||
| typedef zero-based-counter32 { | typedef zero-based-counter32 { | |||
| type counter32; | type counter32; | |||
| default "0"; | default "0"; | |||
| description | description | |||
| "The zero-based-counter32 type represents a counter32 | "The zero-based-counter32 type represents a counter32 | |||
| that has the defined 'initial' value zero. | that has the defined 'initial' value zero. | |||
| A data tree node using this type will be set to zero (0) | A data tree node using this type will be set to zero (0) | |||
| on creation and will thereafter increase monotonically until | on creation and will thereafter increase monotonically until | |||
| it reaches a maximum value of 2^32-1 (4294967295 decimal), | it reaches a maximum value of 2^32-1 (4294967295 decimal), | |||
| when it wraps around and starts increasing again from zero. | when it wraps around and starts increasing again from zero. | |||
| Provided that an application discovers a new data tree node | Provided that an application discovers a new data tree node | |||
| using this type within the minimum time to wrap, it can use | using this type within the minimum time to wrap, it can use | |||
| the 'initial' value as a delta. It is important for a | the 'initial' value as a delta. It is important for a | |||
| management station to be aware of this minimum time and the | management station to be aware of this minimum time and the | |||
| actual time between polls, and to discard data if the actual | actual time between polls, and to discard data if the actual | |||
| time is too long or there is no defined minimum time. | time is too long or there is no defined minimum time. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the ZeroBasedCounter32 textual convention of the SMIv2."; | to the ZeroBasedCounter32 textual convention of the SMIv2."; | |||
| reference | reference | |||
| "RFC 4502: Remote Network Monitoring Management Information | "RFC 4502: Remote Network Monitoring Management Information | |||
| Base Version 2"; | Base Version 2"; | |||
| } | } | |||
| typedef counter64 { | typedef counter64 { | |||
| type uint64; | type uint64; | |||
| description | description | |||
| "The counter64 type represents a non-negative integer | "The counter64 type represents a non-negative integer | |||
| that monotonically increases until it reaches a | that monotonically increases until it reaches a | |||
| maximum value of 2^64-1 (18446744073709551615 decimal), | maximum value of 2^64-1 (18446744073709551615 decimal), | |||
| when it wraps around and starts increasing again from zero. | when it wraps around and starts increasing again from zero. | |||
| Counters have no defined 'initial' value, and thus, a | Counters have no defined 'initial' value, and thus, a | |||
| single value of a counter has (in general) no information | single value of a counter has (in general) no information | |||
| content. Discontinuities in the monotonically increasing | content. Discontinuities in the monotonically increasing | |||
| value normally occur at re-initialization of the | value normally occur at re-initialization of the | |||
| management system, and at other times as specified in the | management system and at other times as specified in the | |||
| description of a schema node using this type. If such | description of a schema node using this type. If such | |||
| other times can occur, for example, the instantiation of | other times can occur, for example, the instantiation of | |||
| a schema node of type counter64 at times other than | a schema node of type counter64 at times other than | |||
| re-initialization, then a corresponding schema node | re-initialization, then a corresponding schema node | |||
| should be defined, with an appropriate type, to indicate | should be defined, with an appropriate type, to indicate | |||
| the last discontinuity. | the last discontinuity. | |||
| The counter64 type should not be used for configuration | The counter64 type should not be used for configuration | |||
| schema nodes. A default statement SHOULD NOT be used in | schema nodes. A default statement SHOULD NOT be used in | |||
| combination with the type counter64. | combination with the type counter64. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the Counter64 type of the SMIv2."; | to the Counter64 type of the SMIv2."; | |||
| reference | reference | |||
| "RFC 2578: Structure of Management Information Version 2 | "RFC 2578: Structure of Management Information Version 2 | |||
| (SMIv2)"; | (SMIv2)"; | |||
| } | } | |||
| typedef zero-based-counter64 { | typedef zero-based-counter64 { | |||
| type counter64; | type counter64; | |||
| default "0"; | default "0"; | |||
| description | description | |||
| "The zero-based-counter64 type represents a counter64 that | "The zero-based-counter64 type represents a counter64 that | |||
| has the defined 'initial' value zero. | has the defined 'initial' value zero. | |||
| A data tree node using this type will be set to zero (0) | A data tree node using this type will be set to zero (0) | |||
| on creation and will thereafter increase monotonically until | on creation and will thereafter increase monotonically until | |||
| it reaches a maximum value of 2^64-1 (18446744073709551615 | it reaches a maximum value of 2^64-1 (18446744073709551615 | |||
| decimal), when it wraps around and starts increasing again | decimal), when it wraps around and starts increasing again | |||
| from zero. | from zero. | |||
| Provided that an application discovers a new data tree node | Provided that an application discovers a new data tree node | |||
| using this type within the minimum time to wrap, it can use | using this type within the minimum time to wrap, it can use | |||
| the 'initial' value as a delta. It is important for a | the 'initial' value as a delta. It is important for a | |||
| management station to be aware of this minimum time and the | management station to be aware of this minimum time and the | |||
| actual time between polls, and to discard data if the actual | actual time between polls, and to discard data if the actual | |||
| time is too long or there is no defined minimum time. | time is too long or there is no defined minimum time. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the ZeroBasedCounter64 textual convention of the SMIv2."; | to the ZeroBasedCounter64 textual convention of the SMIv2."; | |||
| reference | reference | |||
| "RFC 2856: Textual Conventions for Additional High Capacity | "RFC 2856: Textual Conventions for Additional High Capacity | |||
| Data Types"; | Data Types"; | |||
| } | } | |||
| typedef gauge32 { | typedef gauge32 { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The gauge32 type represents a non-negative integer, which | "The gauge32 type represents a non-negative integer, which | |||
| may increase or decrease, but shall never exceed a maximum | may increase or decrease, but shall never exceed a maximum | |||
| value, nor fall below a minimum value. The maximum value | value, nor fall below a minimum value. The maximum value | |||
| cannot be greater than 2^32-1 (4294967295 decimal), and | cannot be greater than 2^32-1 (4294967295 decimal), and | |||
| the minimum value cannot be smaller than 0. The value of | the minimum value cannot be smaller than 0. The value of | |||
| a gauge32 has its maximum value whenever the information | a gauge32 has its maximum value whenever the information | |||
| being modeled is greater than or equal to its maximum | being modeled is greater than or equal to its maximum | |||
| value, and has its minimum value whenever the information | value, and has its minimum value whenever the information | |||
| being modeled is smaller than or equal to its minimum value. | being modeled is smaller than or equal to its minimum value. | |||
| If the information being modeled subsequently decreases | If the information being modeled subsequently decreases | |||
| below (increases above) the maximum (minimum) value, the | below (increases above) the maximum (minimum) value, the | |||
| gauge32 also decreases (increases). | gauge32 also decreases (increases). | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the Gauge32 type of the SMIv2."; | to the Gauge32 type of the SMIv2."; | |||
| reference | reference | |||
| "RFC 2578: Structure of Management Information Version 2 | "RFC 2578: Structure of Management Information Version 2 | |||
| (SMIv2)"; | (SMIv2)"; | |||
| } | } | |||
| typedef gauge64 { | typedef gauge64 { | |||
| type uint64; | type uint64; | |||
| description | description | |||
| "The gauge64 type represents a non-negative integer, which | "The gauge64 type represents a non-negative integer, which | |||
| may increase or decrease, but shall never exceed a maximum | may increase or decrease, but shall never exceed a maximum | |||
| value, nor fall below a minimum value. The maximum value | value, nor fall below a minimum value. The maximum value | |||
| cannot be greater than 2^64-1 (18446744073709551615), and | cannot be greater than 2^64-1 (18446744073709551615), and | |||
| the minimum value cannot be smaller than 0. The value of | the minimum value cannot be smaller than 0. The value of | |||
| a gauge64 has its maximum value whenever the information | a gauge64 has its maximum value whenever the information | |||
| being modeled is greater than or equal to its maximum | being modeled is greater than or equal to its maximum | |||
| value, and has its minimum value whenever the information | value, and has its minimum value whenever the information | |||
| being modeled is smaller than or equal to its minimum value. | being modeled is smaller than or equal to its minimum value. | |||
| If the information being modeled subsequently decreases | If the information being modeled subsequently decreases | |||
| below (increases above) the maximum (minimum) value, the | below (increases above) the maximum (minimum) value, the | |||
| gauge64 also decreases (increases). | gauge64 also decreases (increases). | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the CounterBasedGauge64 SMIv2 textual convention defined | to the CounterBasedGauge64 SMIv2 textual convention defined | |||
| in RFC 2856"; | in RFC 2856"; | |||
| reference | reference | |||
| "RFC 2856: Textual Conventions for Additional High Capacity | "RFC 2856: Textual Conventions for Additional High Capacity | |||
| Data Types"; | Data Types"; | |||
| } | } | |||
| /*** collection of identifier-related types ***/ | /*** collection of identifier-related types ***/ | |||
| typedef object-identifier { | typedef object-identifier { | |||
| type string { | type string { | |||
| pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9][0-9]*))))' | pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9][0-9]*))))' | |||
| + '(\.(0|([1-9][0-9]*)))*'; | + '(\.(0|([1-9][0-9]*)))*'; | |||
| } | } | |||
| description | description | |||
| "The object-identifier type represents administratively | "The object-identifier type represents administratively | |||
| assigned names in a registration-hierarchical-name tree. | assigned names in a registration-hierarchical-name tree. | |||
| Values of this type are denoted as a sequence of numerical | Values of this type are denoted as a sequence of numerical | |||
| non-negative sub-identifier values. Each sub-identifier | non-negative sub-identifier values. Each sub-identifier | |||
| value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers | value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers | |||
| are separated by single dots and without any intermediate | are separated by single dots and without any intermediate | |||
| whitespace. | whitespace. | |||
| The ASN.1 standard restricts the value space of the first | The ASN.1 standard restricts the value space of the first | |||
| sub-identifier to 0, 1, or 2. Furthermore, the value space | sub-identifier to 0, 1, or 2. Furthermore, the value space | |||
| of the second sub-identifier is restricted to the range | of the second sub-identifier is restricted to the range | |||
| 0 to 39 if the first sub-identifier is 0 or 1. Finally, | 0 to 39 if the first sub-identifier is 0 or 1. Finally, | |||
| the ASN.1 standard requires that an object identifier | the ASN.1 standard requires that an object identifier | |||
| has always at least two sub-identifiers. The pattern | has always at least two sub-identifiers. The pattern | |||
| captures these restrictions. | captures these restrictions. | |||
| Although the number of sub-identifiers is not limited, | Although the number of sub-identifiers is not limited, | |||
| module designers should realize that there may be | module designers should realize that there may be | |||
| implementations that stick with the SMIv2 limit of 128 | implementations that stick with the SMIv2 limit of 128 | |||
| sub-identifiers. | sub-identifiers. | |||
| This type is a superset of the SMIv2 OBJECT IDENTIFIER type | This type is a superset of the SMIv2 OBJECT IDENTIFIER type | |||
| since it is not restricted to 128 sub-identifiers. Hence, | since it is not restricted to 128 sub-identifiers. Hence, | |||
| this type SHOULD NOT be used to represent the SMIv2 OBJECT | this type SHOULD NOT be used to represent the SMIv2 OBJECT | |||
| IDENTIFIER type; the object-identifier-128 type SHOULD be | IDENTIFIER type; the object-identifier-128 type SHOULD be | |||
| used instead."; | used instead."; | |||
| reference | reference | |||
| "ISO9834-1: Information technology -- Open Systems | "ISO 9834-1: Information technology -- Open Systems | |||
| Interconnection -- Procedures for the operation of OSI | Interconnection -- Procedures for the operation of OSI | |||
| Registration Authorities: General procedures and top | Registration Authorities: General procedures and top | |||
| arcs of the ASN.1 Object Identifier tree"; | arcs of the International Object Identifier tree"; | |||
| } | } | |||
| typedef object-identifier-128 { | typedef object-identifier-128 { | |||
| type object-identifier { | type object-identifier { | |||
| pattern '[0-9]*(\.[0-9]*){1,127}'; | pattern '[0-9]*(\.[0-9]*){1,127}'; | |||
| } | } | |||
| description | description | |||
| "This type represents object-identifiers restricted to 128 | "This type represents object-identifiers restricted to 128 | |||
| sub-identifiers. | sub-identifiers. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the OBJECT IDENTIFIER type of the SMIv2."; | to the OBJECT IDENTIFIER type of the SMIv2."; | |||
| reference | reference | |||
| "RFC 2578: Structure of Management Information Version 2 | "RFC 2578: Structure of Management Information Version 2 | |||
| (SMIv2)"; | (SMIv2)"; | |||
| } | } | |||
| /*** collection of types related to date and time ***/ | /*** collection of types related to date and time ***/ | |||
| typedef date-and-time { | typedef date-and-time { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| '[0-9]{4}-(1[0-2]|0[1-9])-(0[1-9]|[1-2][0-9]|3[0-1])' | '[0-9]{4}-(1[0-2]|0[1-9])-(0[1-9]|[1-2][0-9]|3[0-1])' | |||
| + 'T(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?' | + 'T(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?' | |||
| + '(Z|[\+\-]((1[0-3]|0[0-9]):([0-5][0-9])|14:00))?'; | + '(Z|[\+\-]((1[0-3]|0[0-9]):([0-5][0-9])|14:00))?'; | |||
| } | } | |||
| description | description | |||
| "The date-and-time type is a profile of the ISO 8601 | "The date-and-time type is a profile of the ISO 8601 | |||
| standard for representation of dates and times using the | standard for representation of dates and times using the | |||
| Gregorian calendar. The profile is defined by the | Gregorian calendar. The profile is defined by the | |||
| date-time production in Section 5.6 of RFC 3339 and the | date-time production in Section 5.6 of RFC 3339 and the | |||
| update defined in Section 2 of RFC 9557 . The value of | update defined in Section 2 of RFC 9557. The value of | |||
| 60 for seconds is allowed only in the case of leap seconds. | 60 for seconds is allowed only in the case of leap seconds. | |||
| The date-and-time type is compatible with the dateTime XML | The date-and-time type is compatible with the dateTime XML | |||
| schema dateTime type with the following notable exceptions: | schema dateTime type with the following notable exceptions: | |||
| (a) The date-and-time type does not allow negative years. | (a) The date-and-time type does not allow negative years. | |||
| (b) The time-offset Z indicates that the date-and-time | (b) The time-offset Z indicates that the date-and-time | |||
| value is reported in UTC and that the local time zone | value is reported in UTC and that the local time zone | |||
| reference point is unknown. The time-offsets +00:00 | reference point is unknown. The time-offset +00:00 | |||
| indicates that the date-and-time value is reported in | indicates that the date-and-time value is reported in | |||
| UTC and that the local time reference point is UTC | UTC and that the local time reference point is UTC | |||
| (see RFC 9557 section 2). | (see Section 2 of RFC 9557). | |||
| This type is not equivalent to the DateAndTime textual | This type is not equivalent to the DateAndTime textual | |||
| convention of the SMIv2 since RFC 3339 uses a different | convention of the SMIv2 since RFC 3339 uses a different | |||
| separator between full-date and full-time and provides | separator between full-date and full-time and provides | |||
| higher resolution of time-secfrac. | higher resolution of time-secfrac. | |||
| The canonical format for date-and-time values with a known time | The canonical format for date-and-time values with a known | |||
| zone uses a numeric time zone offset that is calculated using | time zone uses a numeric time zone offset that is calculated | |||
| the device's configured known offset to UTC time. A change of | using the device's configured known offset to UTC time. A | |||
| the device's offset to UTC time will cause date-and-time values | change of the device's offset to UTC time will cause | |||
| to change accordingly. Such changes might happen periodically | date-and-time values to change accordingly. Such changes | |||
| in case a server follows automatically daylight saving time | might happen periodically in case a server follows | |||
| (DST) time zone offset changes. The canonical format for | automatically daylight saving time (DST) time zone offset | |||
| date-and-time values reported in UTC with an unknown local | changes. The canonical format for date-and-time values | |||
| time zone offset SHOULD use the time-offset Z and MAY use | reported in UTC with an unknown local time zone offset SHOULD | |||
| -00:00 for backwards compatibility."; | use the time-offset Z and MAY use -00:00 for backwards | |||
| compatibility."; | ||||
| reference | reference | |||
| "RFC 3339: Date and Time on the Internet: Timestamps | "RFC 3339: Date and Time on the Internet: Timestamps | |||
| RFC 9557: Date and Time on the Internet: Timestamps | RFC 9557: Date and Time on the Internet: Timestamps | |||
| with Additional Information | with Additional Information | |||
| RFC 2579: Textual Conventions for SMIv2 | RFC 2579: Textual Conventions for SMIv2 | |||
| XSD-TYPES: XML Schema Definition Language (XSD) 1.1 | XSD-TYPES: XML Schema Definition Language (XSD) 1.1 | |||
| Part 2: Datatypes"; | Part 2: Datatypes"; | |||
| } | } | |||
| typedef date { | typedef date { | |||
| type string { | type string { | |||
| pattern | pattern '[0-9]{4}-(1[0-2]|0[1-9])-(0[1-9]|[1-2][0-9]|3[0-1])' | |||
| '[0-9]{4}-(1[0-2]|0[1-9])-(0[1-9]|[1-2][0-9]|3[0-1])' | + '(Z|[\+\-]((1[0-3]|0[0-9]):([0-5][0-9])|14:00))?'; | |||
| + '(Z|[\+\-]((1[0-3]|0[0-9]):([0-5][0-9])|14:00))?'; | ||||
| } | } | |||
| description | description | |||
| "The date type represents a time-interval of the length | "The date type represents a time-interval of the length | |||
| of a day, i.e., 24 hours. It includes an optional time | of a day, i.e., 24 hours. It includes an optional time | |||
| zone offset. | zone offset. | |||
| The date type is compatible with the XML schema date | The date type is compatible with the XML schema date | |||
| type with the following notable exceptions: | type with the following notable exceptions: | |||
| (a) The date type does not allow negative years. | (a) The date type does not allow negative years. | |||
| (b) The time-offset Z indicates that the date value is | (b) The time-offset Z indicates that the date value is | |||
| reported in UTC and that the local time zone reference | reported in UTC and that the local time zone reference | |||
| point is unknown. The time-offset +00:00 indicates that | point is unknown. The time-offset +00:00 indicates that | |||
| the date value is reported in UTC and that the local | the date value is reported in UTC and that the local | |||
| time reference point is UTC (see RFC 9557 section 2). | time reference point is UTC (see Section 2 of RFC 9557). | |||
| The canonical format for date values with a known time | The canonical format for date values with a known time | |||
| zone uses a numeric time zone offset that is calculated using | zone uses a numeric time zone offset that is calculated using | |||
| the device's configured known offset to UTC time. A change of | the device's configured known offset to UTC time. A change of | |||
| the device's offset to UTC time will cause date values | the device's offset to UTC time will cause date values | |||
| to change accordingly. Such changes might happen periodically | to change accordingly. Such changes might happen periodically | |||
| in case a server follows automatically daylight saving time | in case a server follows automatically daylight saving time | |||
| (DST) time zone offset changes. The canonical format for | (DST) time zone offset changes. The canonical format for | |||
| date values reported in UTC with an unknown local time zone | date values reported in UTC with an unknown local time zone | |||
| offset uses the time-offset Z."; | offset uses the time-offset Z."; | |||
| reference | reference | |||
| "RFC 3339: Date and Time on the Internet: Timestamps | "RFC 3339: Date and Time on the Internet: Timestamps | |||
| RFC 9557: Date and Time on the Internet: Timestamps | RFC 9557: Date and Time on the Internet: Timestamps | |||
| with Additional Information | with Additional Information | |||
| XSD-TYPES: XML Schema Definition Language (XSD) 1.1 | XSD-TYPES: XML Schema Definition Language (XSD) 1.1 | |||
| Part 2: Datatypes"; | Part 2: Datatypes"; | |||
| } | } | |||
| typedef date-no-zone { | typedef date-no-zone { | |||
| type date { | type date { | |||
| pattern '[0-9]{4}-(1[0-2]|0[1-9])-(0[1-9]|[1-2][0-9]|3[0-1])'; | pattern '[0-9]{4}-(1[0-2]|0[1-9])-(0[1-9]|[1-2][0-9]|3[0-1])'; | |||
| } | } | |||
| description | description | |||
| "The date-no-zone type represents a date without the optional | "The date-no-zone type represents a date without the optional | |||
| time zone offset information."; | time zone offset information."; | |||
| } | } | |||
| typedef time { | typedef time { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| '(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?' | '(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?' | |||
| + '(Z|[\+\-]((1[0-3]|0[0-9]):([0-5][0-9])|14:00))?'; | + '(Z|[\+\-]((1[0-3]|0[0-9]):([0-5][0-9])|14:00))?'; | |||
| } | } | |||
| description | description | |||
| "The time type represents an instance of time of zero-duration | "The time type represents an instance of time of zero duration | |||
| that recurs every day. It includes an optional time zone | that recurs every day. It includes an optional time zone | |||
| offset. The value of 60 for seconds is allowed only in the | offset. The value of 60 for seconds is allowed only in the | |||
| case of leap seconds. | case of leap seconds. | |||
| The time type is compatible with the XML schema time | The time type is compatible with the XML schema time | |||
| type with the following notable exception: | type with the following notable exception: | |||
| (a) The time-offset Z indicates that the time value is | (a) The time-offset Z indicates that the time value is | |||
| reported in UTC and that the local time zone reference | reported in UTC and that the local time zone reference | |||
| point is unknown. The time-offset +00:00 indicates that | point is unknown. The time-offset +00:00 indicates that | |||
| the time value is reported in UTC and that the local | the time value is reported in UTC and that the local | |||
| time reference point is UTC (see RFC 9557 section 2). | time reference point is UTC (see Section 2 of RFC 9557). | |||
| The canonical format for time values with a known time | The canonical format for time values with a known time | |||
| zone uses a numeric time zone offset that is calculated using | zone uses a numeric time zone offset that is calculated using | |||
| the device's configured known offset to UTC time. A change of | the device's configured known offset to UTC time. A change of | |||
| the device's offset to UTC time will cause time values | the device's offset to UTC time will cause time values | |||
| to change accordingly. Such changes might happen periodically | to change accordingly. Such changes might happen periodically | |||
| in case a server follows automatically daylight saving time | in case a server follows automatically daylight saving time | |||
| (DST) time zone offset changes. The canonical format for | (DST) time zone offset changes. The canonical format for | |||
| time values reported in UTC with an unknown local time zone | time values reported in UTC with an unknown local time zone | |||
| offset uses the time-offset Z."; | offset uses the time-offset Z."; | |||
| reference | reference | |||
| "RFC 3339: Date and Time on the Internet: Timestamps | "RFC 3339: Date and Time on the Internet: Timestamps | |||
| RFC 9557: Date and Time on the Internet: Timestamps | RFC 9557: Date and Time on the Internet: Timestamps | |||
| with Additional Information | with Additional Information | |||
| XSD-TYPES: XML Schema Definition Language (XSD) 1.1 | XSD-TYPES: XML Schema Definition Language (XSD) 1.1 | |||
| Part 2: Datatypes"; | Part 2: Datatypes"; | |||
| } | } | |||
| typedef time-no-zone { | typedef time-no-zone { | |||
| type time { | type time { | |||
| pattern | pattern | |||
| '(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?'; | '(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?'; | |||
| } | } | |||
| description | description | |||
| "The time-no-zone type represents a time without the optional | "The time-no-zone type represents a time without the optional | |||
| time zone offset information."; | time zone offset information."; | |||
| } | } | |||
| typedef hours32 { | typedef hours32 { | |||
| type int32; | type int32; | |||
| units "hours"; | units "hours"; | |||
| description | description | |||
| "A period of time, measured in units of hours. | "A period of time measured in units of hours. | |||
| The maximum time period that can be expressed is in the | The maximum time period that can be expressed is in the | |||
| range [-89478485 days 08:00:00 to 89478485 days 07:00:00]. | range [-89478485 days 08:00:00 to 89478485 days 07:00:00]. | |||
| This type should be range restricted in situations | This type should be range-restricted in situations | |||
| where only non-negative time periods are desirable, | where only non-negative time periods are desirable | |||
| (i.e., range '0..max')."; | (i.e., range '0..max')."; | |||
| } | } | |||
| typedef minutes32 { | typedef minutes32 { | |||
| type int32; | type int32; | |||
| units "minutes"; | units "minutes"; | |||
| description | description | |||
| "A period of time, measured in units of minutes. | "A period of time measured in units of minutes. | |||
| The maximum time period that can be expressed is in the | The maximum time period that can be expressed is in the | |||
| range [-1491308 days 2:08:00 to 1491308 days 2:07:00]. | range [-1491308 days 2:08:00 to 1491308 days 2:07:00]. | |||
| This type should be range restricted in situations | This type should be range-restricted in situations | |||
| where only non-negative time periods are desirable, | where only non-negative time periods are desirable | |||
| (i.e., range '0..max')."; | (i.e., range '0..max')."; | |||
| } | } | |||
| typedef seconds32 { | typedef seconds32 { | |||
| type int32; | type int32; | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "A period of time, measured in units of seconds. | "A period of time measured in units of seconds. | |||
| The maximum time period that can be expressed is in the | The maximum time period that can be expressed is in the | |||
| range [-24855 days 03:14:08 to 24855 days 03:14:07]. | range [-24855 days 03:14:08 to 24855 days 03:14:07]. | |||
| This type should be range restricted in situations | This type should be range-restricted in situations | |||
| where only non-negative time periods are desirable, | where only non-negative time periods are desirable | |||
| (i.e., range '0..max')."; | (i.e., range '0..max')."; | |||
| } | } | |||
| typedef centiseconds32 { | typedef centiseconds32 { | |||
| type int32; | type int32; | |||
| units "centiseconds"; | units "centiseconds"; | |||
| description | description | |||
| "A period of time, measured in units of 10^-2 seconds. | "A period of time measured in units of 10^-2 seconds. | |||
| The maximum time period that can be expressed is in the | The maximum time period that can be expressed is in the | |||
| range [-248 days 13:13:56 to 248 days 13:13:56]. | range [-248 days 13:13:56 to 248 days 13:13:56]. | |||
| This type should be range restricted in situations | This type should be range-restricted in situations | |||
| where only non-negative time periods are desirable, | where only non-negative time periods are desirable | |||
| (i.e., range '0..max')."; | (i.e., range '0..max')."; | |||
| } | } | |||
| typedef milliseconds32 { | typedef milliseconds32 { | |||
| type int32; | type int32; | |||
| units "milliseconds"; | units "milliseconds"; | |||
| description | description | |||
| "A period of time, measured in units of 10^-3 seconds. | "A period of time measured in units of 10^-3 seconds. | |||
| The maximum time period that can be expressed is in the | The maximum time period that can be expressed is in the | |||
| range [-24 days 20:31:23 to 24 days 20:31:23]. | range [-24 days 20:31:23 to 24 days 20:31:23]. | |||
| This type should be range restricted in situations | This type should be range-restricted in situations | |||
| where only non-negative time periods are desirable, | where only non-negative time periods are desirable | |||
| (i.e., range '0..max')."; | (i.e., range '0..max')."; | |||
| } | } | |||
| typedef microseconds32 { | typedef microseconds32 { | |||
| type int32; | type int32; | |||
| units "microseconds"; | units "microseconds"; | |||
| description | description | |||
| "A period of time, measured in units of 10^-6 seconds. | "A period of time measured in units of 10^-6 seconds. | |||
| The maximum time period that can be expressed is in the | The maximum time period that can be expressed is in the | |||
| range [-00:35:47 to 00:35:47]. | range [-00:35:47 to 00:35:47]. | |||
| This type should be range restricted in situations | This type should be range-restricted in situations | |||
| where only non-negative time periods are desirable, | where only non-negative time periods are desirable | |||
| (i.e., range '0..max')."; | (i.e., range '0..max')."; | |||
| } | } | |||
| typedef microseconds64 { | typedef microseconds64 { | |||
| type int64; | type int64; | |||
| units "microseconds"; | units "microseconds"; | |||
| description | description | |||
| "A period of time, measured in units of 10^-6 seconds. | "A period of time measured in units of 10^-6 seconds. | |||
| The maximum time period that can be expressed is in the | The maximum time period that can be expressed is in the | |||
| range [-106751991 days 04:00:54 to 106751991 days 04:00:54]. | range [-106751991 days 04:00:54 to 106751991 days 04:00:54]. | |||
| This type should be range restricted in situations | This type should be range-restricted in situations | |||
| where only non-negative time periods are desirable, | where only non-negative time periods are desirable | |||
| (i.e., range '0..max')."; | (i.e., range '0..max')."; | |||
| } | } | |||
| typedef nanoseconds32 { | typedef nanoseconds32 { | |||
| type int32; | type int32; | |||
| units "nanoseconds"; | units "nanoseconds"; | |||
| description | description | |||
| "A period of time, measured in units of 10^-9 seconds. | "A period of time measured in units of 10^-9 seconds. | |||
| The maximum time period that can be expressed is in the | The maximum time period that can be expressed is in the | |||
| range [-00:00:02 to 00:00:02]. | range [-00:00:02 to 00:00:02]. | |||
| This type should be range restricted in situations | This type should be range-restricted in situations | |||
| where only non-negative time periods are desirable, | where only non-negative time periods are desirable | |||
| (i.e., range '0..max')."; | (i.e., range '0..max')."; | |||
| } | } | |||
| typedef nanoseconds64 { | typedef nanoseconds64 { | |||
| type int64; | type int64; | |||
| units "nanoseconds"; | units "nanoseconds"; | |||
| description | description | |||
| "A period of time, measured in units of 10^-9 seconds. | "A period of time measured in units of 10^-9 seconds. | |||
| The maximum time period that can be expressed is in the | The maximum time period that can be expressed is in the | |||
| range [-106753 days 23:12:44 to 106752 days 0:47:16]. | range [-106753 days 23:12:44 to 106752 days 0:47:16]. | |||
| This type should be range restricted in situations | This type should be range-restricted in situations | |||
| where only non-negative time periods are desirable, | where only non-negative time periods are desirable | |||
| (i.e., range '0..max')."; | (i.e., range '0..max')."; | |||
| } | } | |||
| typedef timeticks { | typedef timeticks { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The timeticks type represents a non-negative integer that | "The timeticks type represents a non-negative integer that | |||
| represents the time, modulo 2^32 (4294967296 decimal), in | represents the time, modulo 2^32 (4294967296 decimal), in | |||
| hundredths of a second between two epochs. When a schema | hundredths of a second between two epochs. When a schema | |||
| node is defined that uses this type, the description of | node is defined that uses this type, the description of | |||
| the schema node identifies both of the reference epochs. | the schema node identifies both of the reference epochs. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the TimeTicks type of the SMIv2."; | to the TimeTicks type of the SMIv2."; | |||
| reference | reference | |||
| "RFC 2578: Structure of Management Information Version 2 | "RFC 2578: Structure of Management Information Version 2 | |||
| (SMIv2)"; | (SMIv2)"; | |||
| } | } | |||
| typedef timestamp { | typedef timestamp { | |||
| type timeticks; | type timeticks; | |||
| description | description | |||
| "The timestamp type represents the value of an associated | "The timestamp type represents the value of an associated | |||
| timeticks schema node instance at which a specific occurrence | timeticks schema node instance at which a specific occurrence | |||
| happened. The specific occurrence must be defined in the | happened. The specific occurrence must be defined in the | |||
| description of any schema node defined using this type. When | description of any schema node defined using this type. When | |||
| the specific occurrence occurred prior to the last time the | the specific occurrence occurred prior to the last time the | |||
| associated timeticks schema node instance was zero, then the | associated timeticks schema node instance was zero, then the | |||
| timestamp value is zero. | timestamp value is zero. | |||
| Note that this requires all timestamp values to be reset to | Note that this requires all timestamp values to be reset to | |||
| zero when the value of the associated timeticks schema node | zero when the value of the associated timeticks schema node | |||
| instance reaches 497+ days and wraps around to zero. | instance reaches 497+ days and wraps around to zero. | |||
| The associated timeticks schema node must be specified | The associated timeticks schema node must be specified | |||
| in the description of any schema node using this type. | in the description of any schema node using this type. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the TimeStamp textual convention of the SMIv2."; | to the TimeStamp textual convention of the SMIv2."; | |||
| reference | reference | |||
| "RFC 2579: Textual Conventions for SMIv2"; | "RFC 2579: Textual Conventions for SMIv2"; | |||
| } | } | |||
| /*** collection of generic address types ***/ | /*** collection of generic address types ***/ | |||
| typedef phys-address { | typedef phys-address { | |||
| type string { | type string { | |||
| pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; | pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; | |||
| } | } | |||
| description | description | |||
| "Represents media- or physical-level addresses represented | "Represents media- or physical-level addresses represented | |||
| as a sequence octets, each octet represented by two hexadecimal | as a sequence of octets, each octet represented by two | |||
| numbers. Octets are separated by colons. The canonical | hexadecimal numbers. Octets are separated by colons. The | |||
| representation uses lowercase characters. | canonical representation uses lowercase characters. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the PhysAddress textual convention of the SMIv2."; | to the PhysAddress textual convention of the SMIv2."; | |||
| reference | reference | |||
| "RFC 2579: Textual Conventions for SMIv2"; | "RFC 2579: Textual Conventions for SMIv2"; | |||
| } | } | |||
| typedef mac-address { | typedef mac-address { | |||
| type string { | type string { | |||
| pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; | pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; | |||
| } | } | |||
| description | description | |||
| "The mac-address type represents a 48-bit IEEE 802 MAC | "The mac-address type represents a 48-bit IEEE 802 Media | |||
| address. The canonical representation uses lowercase | Access Control (MAC) address. The canonical representation | |||
| characters. Note that there are IEEE 802 MAC addresses | uses lowercase characters. Note that there are IEEE 802 MAC | |||
| with a different length that this type cannot represent. | addresses with a different length that this type cannot | |||
| The phys-address type may be used to represent physical | represent. The phys-address type may be used to represent | |||
| addresses of varying length. | physical addresses of varying length. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the MacAddress textual convention of the SMIv2."; | to the MacAddress textual convention of the SMIv2."; | |||
| reference | reference | |||
| "IEEE 802: IEEE Standard for Local and Metropolitan Area | "IEEE 802: IEEE Standard for Local and Metropolitan Area | |||
| Networks: Overview and Architecture | Networks: Overview and Architecture | |||
| RFC 2579: Textual Conventions for SMIv2"; | RFC 2579: Textual Conventions for SMIv2"; | |||
| } | } | |||
| /*** collection of XML-specific types ***/ | /*** collection of XML-specific types ***/ | |||
| typedef xpath1.0 { | typedef xpath1.0 { | |||
| type string; | type string; | |||
| description | description | |||
| "This type represents an XPATH 1.0 expression. | "This type represents an XPATH 1.0 expression. | |||
| When a schema node is defined that uses this type, the | When a schema node is defined that uses this type, the | |||
| description of the schema node MUST specify the XPath | description of the schema node MUST specify the XPath | |||
| context in which the XPath expression is evaluated."; | context in which the XPath expression is evaluated."; | |||
| reference | reference | |||
| "XPATH: XML Path Language (XPath) Version 1.0"; | "XPATH: XML Path Language (XPath) Version 1.0"; | |||
| } | } | |||
| /*** collection of string types ***/ | /*** collection of string types ***/ | |||
| typedef hex-string { | typedef hex-string { | |||
| type string { | type string { | |||
| pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; | pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; | |||
| } | } | |||
| description | description | |||
| "A hexadecimal string with octets represented as hex digits | "A hexadecimal string with octets represented as hex digits | |||
| separated by colons. The canonical representation uses | separated by colons. The canonical representation uses | |||
| lowercase characters."; | lowercase characters."; | |||
| } | } | |||
| typedef uuid { | typedef uuid { | |||
| type string { | type string { | |||
| pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' | pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' | |||
| + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; | + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; | |||
| } | } | |||
| description | description | |||
| "A Universally Unique IDentifier in the string representation | "A Universally Unique IDentifier in the string representation | |||
| defined in RFC 4122. The canonical representation uses | defined in RFC 4122. The canonical representation uses | |||
| lowercase characters. | lowercase characters. | |||
| The following is an example of a UUID in string representation: | The following is an example of a UUID in string | |||
| f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | representation: | |||
| f81d4fae-7dec-11d0-a765-00a0c91e6bf6. | ||||
| "; | "; | |||
| reference | reference | |||
| "RFC 4122: A Universally Unique IDentifier (UUID) URN | "RFC 4122: A Universally Unique IDentifier (UUID) URN | |||
| Namespace"; | Namespace"; | |||
| } | } | |||
| typedef dotted-quad { | typedef dotted-quad { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' | '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' | |||
| + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; | + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; | |||
| } | } | |||
| description | description | |||
| "An unsigned 32-bit number expressed in the dotted-quad | "An unsigned 32-bit number expressed in the dotted-quad | |||
| notation, i.e., four octets written as decimal numbers | notation, i.e., four octets written as decimal numbers | |||
| and separated with the '.' (full stop) character."; | and separated with the '.' (full stop) character."; | |||
| } | } | |||
| typedef language-tag { | typedef language-tag { | |||
| type string; | type string; | |||
| description | description | |||
| "A language tag according to RFC 5646 (BCP 47). The | "A language tag according to RFC 5646 (BCP 47). The | |||
| canonical representation uses lowercase characters. | canonical representation uses lowercase characters. | |||
| Values of this type must be well-formed language tags, | Values of this type must be well-formed language tags, | |||
| in conformance with the definition of well-formed tags | in conformance with the definition of well-formed tags | |||
| in BCP 47. Implementations MAY further limit the values | in BCP 47. Implementations MAY further limit the values | |||
| they accept to those permitted by a 'validating' | they accept to those permitted by a 'validating' | |||
| processor, as defined in BCP 47. | processor, as defined in BCP 47. | |||
| The canonical representation of values of this type is | The canonical representation of values of this type is | |||
| aligned with the SMIv2 LangTag textual convention for | aligned with the SMIv2 LangTag textual convention for | |||
| language tags fitting the length constraints imposed | language tags fitting the length constraints imposed | |||
| by the LangTag textual convention."; | by the LangTag textual convention."; | |||
| reference | reference | |||
| "RFC 5646: Tags for Identifying Languages | "RFC 5646: Tags for Identifying Languages | |||
| RFC 5131: A MIB Textual Convention for Language Tags"; | RFC 5131: A MIB Textual Convention for Language Tags"; | |||
| } | } | |||
| /*** collection of YANG specific types ***/ | /*** collection of YANG-specific types ***/ | |||
| typedef yang-identifier { | typedef yang-identifier { | |||
| type string { | type string { | |||
| length "1..max"; | length "1..max"; | |||
| pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; | pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; | |||
| } | } | |||
| description | description | |||
| "A YANG identifier string as defined by the 'identifier' | "A YANG identifier string as defined by the 'identifier' | |||
| rule in Section 14 of RFC 7950. An identifier must | rule in Section 14 of RFC 7950. An identifier must | |||
| start with an alphabetic character or an underscore | start with an alphabetic character or an underscore | |||
| followed by an arbitrary sequence of alphabetic or | followed by an arbitrary sequence of alphabetic or | |||
| numeric characters, underscores, hyphens, or dots. | numeric characters, underscores, hyphens, or dots. | |||
| This definition conforms to YANG 1.1 defined in RFC | This definition conforms to YANG 1.1 defined in RFC | |||
| 7950. An earlier version of this definition excluded | 7950. An earlier version of this definition excluded | |||
| all identifiers starting with any possible combination | all identifiers starting with any possible combination | |||
| of the lowercase or uppercase character sequence 'xml', | of the lowercase or uppercase character sequence 'xml', | |||
| as required by YANG 1 defined in RFC 6020. If this type | as required by YANG 1 defined in RFC 6020. If this type | |||
| is used in a YANG 1 context, then this restriction still | is used in a YANG 1 context, then this restriction still | |||
| applies."; | applies."; | |||
| reference | reference | |||
| "RFC 7950: The YANG 1.1 Data Modeling Language | "RFC 7950: The YANG 1.1 Data Modeling Language | |||
| RFC 6020: YANG - A Data Modeling Language for the | RFC 6020: YANG - A Data Modeling Language for the | |||
| Network Configuration Protocol (NETCONF)"; | Network Configuration Protocol (NETCONF)"; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 4. Internet Protocol Suite Types | 4. Internet Protocol Suite Types | |||
| The ietf-inet-types YANG module references [RFC0768], [RFC0791], | The "ietf-inet-types" YANG module references [RFC0768], [RFC0791], | |||
| [RFC0952], [RFC1034], [RFC1123], [RFC1930], [RFC2317], [RFC2474], | [RFC0952], [RFC1034], [RFC1123], [RFC1930], [RFC2317], [RFC2474], | |||
| [RFC2780], [RFC2782], [RFC3289], [RFC3305], [RFC3595], [RFC3927], | [RFC2780], [RFC2782], [RFC3289], [RFC3305], [RFC3595], [RFC3927], | |||
| [RFC3986], [RFC4001], [RFC4007], [RFC4271], [RFC4291], [RFC4340], | [RFC3986], [RFC4001], [RFC4007], [RFC4271], [RFC4291], [RFC4340], | |||
| [RFC4592], [RFC5017], [RFC5322], [RFC5890], [RFC5952], [RFC6793], | [RFC4592], [RFC5017], [RFC5322], [RFC5890], [RFC5952], [RFC6793], | |||
| [RFC8200], [RFC9260], [RFC9293], and [RFC9499]. | [RFC8200], [RFC9260], [RFC9293], and [RFC9499]. | |||
| <CODE BEGINS> file "ietf-inet-types@2025-06-23.yang" | <CODE BEGINS> file "ietf-inet-types@2025-12-01.yang" | |||
| module ietf-inet-types { | module ietf-inet-types { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types"; | namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types"; | |||
| prefix "inet"; | prefix inet; | |||
| organization | organization | |||
| "IETF Network Modeling (NETMOD) Working Group"; | "IETF Network Modeling (NETMOD) Working Group"; | |||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/netmod/> | "WG Web: <https://datatracker.ietf.org/wg/netmod/> | |||
| WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
| Editor: Juergen Schoenwaelder | ||||
| <mailto:jschoenwaelder@constructor.university>"; | ||||
| Editor: Juergen Schoenwaelder | ||||
| <mailto:jschoenwaelder@constructor.university>"; | ||||
| description | description | |||
| "This module contains a collection of generally useful derived | "This module contains a collection of generally useful derived | |||
| YANG data types for Internet addresses and related things. | YANG data types for Internet addresses and related things. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here. | they appear in all capitals, as shown here. | |||
| Copyright (c) 2025 IETF Trust and the persons identified as | Copyright (c) 2025 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 Revised BSD License | to the license terms contained in, the Revised 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 | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC 9911; | |||
| see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
| revision 2025-06-23 { | revision 2025-12-01 { | |||
| description | description | |||
| "This revision adds the following new data types: | "This revision adds the following new data types: | |||
| - inet:ip-address-and-prefix | - inet:ip-address-and-prefix | |||
| - inet:ipv4-address-and-prefix | - inet:ipv4-address-and-prefix | |||
| - inet:ipv6-address-and-prefix | - inet:ipv6-address-and-prefix | |||
| - inet:protocol-number | - inet:protocol-number | |||
| - inet:upper-layer-protocol-number | - inet:upper-layer-protocol-number | |||
| - inet:host-name | - inet:host-name | |||
| - inet:email-address | - inet:email-address | |||
| - inet:ip-address-link-local | - inet:ip-address-link-local | |||
| - inet:ipv4-address-link-local | - inet:ipv4-address-link-local | |||
| - inet:ipv6-address-link-local | - inet:ipv6-address-link-local | |||
| The inet:host union was changed to use inet:host-name instead | The inet:host union was changed to use inet:host-name instead | |||
| of inet:domain-name. Several pattern statements have been | of inet:domain-name. Several pattern statements have been | |||
| improved."; | improved."; | |||
| reference | reference | |||
| "RFC XXXX: Common YANG Data Types"; | "RFC 9911: Common YANG Data Types"; | |||
| } | } | |||
| revision 2013-07-15 { | revision 2013-07-15 { | |||
| description | description | |||
| "This revision adds the following new data types: | "This revision adds the following new data types: | |||
| - inet:ip-address-no-zone | - inet:ip-address-no-zone | |||
| - inet:ipv4-address-no-zone | - inet:ipv4-address-no-zone | |||
| - inet:ipv6-address-no-zone"; | - inet:ipv6-address-no-zone"; | |||
| reference | reference | |||
| "RFC 6991: Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| revision 2010-09-24 { | revision 2010-09-24 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC 6021: Common YANG Data Types"; | "RFC 6021: Common YANG Data Types"; | |||
| } | } | |||
| /*** collection of types related to protocol fields ***/ | /*** collection of types related to protocol fields ***/ | |||
| typedef ip-version { | typedef ip-version { | |||
| type enumeration { | type enumeration { | |||
| enum unknown { | enum unknown { | |||
| value "0"; | value 0; | |||
| description | description | |||
| "An unknown or unspecified version of the Internet | "An unknown or unspecified version of the Internet | |||
| protocol."; | protocol."; | |||
| } | } | |||
| enum ipv4 { | enum ipv4 { | |||
| value "1"; | value 1; | |||
| description | description | |||
| "The IPv4 protocol as defined in RFC 791."; | "The IPv4 protocol as defined in RFC 791."; | |||
| } | } | |||
| enum ipv6 { | enum ipv6 { | |||
| value "2"; | value 2; | |||
| description | description | |||
| "The IPv6 protocol as defined in RFC 8200."; | "The IPv6 protocol as defined in RFC 8200."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This value represents the version of the IP protocol. | "This value represents the version of the IP protocol. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the InetVersion textual convention of the SMIv2."; | to the InetVersion textual convention of the SMIv2."; | |||
| reference | reference | |||
| "RFC 791: Internet Protocol | "RFC 791: Internet Protocol | |||
| RFC 8200: Internet Protocol, Version 6 (IPv6) Specification | RFC 8200: Internet Protocol, Version 6 (IPv6) Specification | |||
| RFC 4001: Textual Conventions for Internet Network Addresses"; | RFC 4001: Textual Conventions for Internet Network Addresses"; | |||
| } | } | |||
| typedef dscp { | typedef dscp { | |||
| type uint8 { | type uint8 { | |||
| range "0..63"; | range "0..63"; | |||
| } | } | |||
| description | description | |||
| "The dscp type represents a Differentiated Services Code Point | "The dscp type represents a Differentiated Services Code Point | |||
| that may be used for marking packets in a traffic stream. | that may be used for marking packets in a traffic stream. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the Dscp textual convention of the SMIv2."; | to the Dscp textual convention of the SMIv2."; | |||
| reference | reference | |||
| "RFC 3289: Management Information Base for the Differentiated | "RFC 3289: Management Information Base for the Differentiated | |||
| Services Architecture | Services Architecture | |||
| RFC 2474: Definition of the Differentiated Services Field | RFC 2474: Definition of the Differentiated Services Field | |||
| (DS Field) in the IPv4 and IPv6 Headers | (DS Field) in the IPv4 and IPv6 Headers | |||
| RFC 2780: IANA Allocation Guidelines For Values In | RFC 2780: IANA Allocation Guidelines For Values In | |||
| the Internet Protocol and Related Headers"; | the Internet Protocol and Related Headers"; | |||
| } | } | |||
| typedef ipv6-flow-label { | typedef ipv6-flow-label { | |||
| type uint32 { | type uint32 { | |||
| range "0..1048575"; | range "0..1048575"; | |||
| } | } | |||
| description | description | |||
| "The ipv6-flow-label type represents the flow identifier or | "The ipv6-flow-label type represents the flow identifier or | |||
| Flow Label in an IPv6 packet header that may be used to | Flow Label in an IPv6 packet header that may be used to | |||
| discriminate traffic flows. | discriminate traffic flows. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the IPv6FlowLabel textual convention of the SMIv2."; | to the IPv6FlowLabel textual convention of the SMIv2."; | |||
| reference | reference | |||
| "RFC 3595: Textual Conventions for IPv6 Flow Label | "RFC 3595: Textual Conventions for IPv6 Flow Label | |||
| RFC 8200: Internet Protocol, Version 6 (IPv6) Specification"; | RFC 8200: Internet Protocol, Version 6 (IPv6) Specification"; | |||
| } | } | |||
| typedef port-number { | typedef port-number { | |||
| type uint16 { | type uint16 { | |||
| range "0..65535"; | range "0..65535"; | |||
| } | } | |||
| description | description | |||
| "The port-number type represents a 16-bit port number of an | "The port-number type represents a 16-bit port number of an | |||
| Internet transport-layer protocol such as UDP, TCP, DCCP, or | Internet transport-layer protocol such as UDP, TCP, DCCP, or | |||
| SCTP. | SCTP. | |||
| Port numbers are assigned by IANA. The current list of | Port numbers are assigned by IANA. The current list of | |||
| all assignments is available from <https://www.iana.org/>. | all assignments is available from <https://www.iana.org/>. | |||
| Note that the port number value zero is reserved by IANA. In | Note that the port number value zero is reserved by IANA. In | |||
| situations where the value zero does not make sense, it can | situations where the value zero does not make sense, it can | |||
| be excluded by subtyping the port-number type. | be excluded by subtyping the port-number type. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the InetPortNumber textual convention of the SMIv2."; | to the InetPortNumber textual convention of the SMIv2."; | |||
| reference | reference | |||
| "RFC 768: User Datagram Protocol | "RFC 768: User Datagram Protocol | |||
| RFC 9293: Transmission Control Protocol (TCP) | RFC 9293: Transmission Control Protocol (TCP) | |||
| RFC 9260: Stream Control Transmission Protocol | RFC 9260: Stream Control Transmission Protocol | |||
| RFC 4340: Datagram Congestion Control Protocol (DCCP) | RFC 4340: Datagram Congestion Control Protocol (DCCP) | |||
| RFC 4001: Textual Conventions for Internet Network Addresses"; | RFC 4001: Textual Conventions for Internet Network Addresses"; | |||
| } | } | |||
| typedef protocol-number { | typedef protocol-number { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "The protocol-number type represents an 8-bit Internet | "The protocol-number type represents an 8-bit Internet | |||
| protocol number, carried in the 'protocol' field of the | protocol number, carried in the 'protocol' field of the | |||
| IPv4 header or in the 'next header' field of the IPv6 | IPv4 header or in the 'next header' field of the IPv6 | |||
| header. | header. | |||
| Protocol numbers are assigned by IANA. The current list of | Protocol numbers are assigned by IANA. The current list of | |||
| all assignments is available from <https://www.iana.org/>."; | all assignments is available from <https://www.iana.org/>."; | |||
| reference | reference | |||
| "RFC 791: Internet Protocol | "RFC 791: Internet Protocol | |||
| RFC 8200: Internet Protocol, Version 6 (IPv6) Specification"; | RFC 8200: Internet Protocol, Version 6 (IPv6) Specification"; | |||
| } | } | |||
| typedef upper-layer-protocol-number { | typedef upper-layer-protocol-number { | |||
| type protocol-number; | type protocol-number; | |||
| description | description | |||
| "The upper-layer-protocol-number represents the upper-layer | "The upper-layer-protocol-number represents the upper-layer | |||
| protocol number carried in an IP packet. For IPv6 packets | protocol number carried in an IP packet. For IPv6 packets | |||
| with extension headers, this is the protocol number carried | with extension headers, this is the protocol number carried | |||
| in the last 'next header' field of the chain of IPv6 extension | in the last 'next header' field of the chain of IPv6 extension | |||
| headers."; | headers."; | |||
| reference | reference | |||
| "RFC 791: Internet Protocol | "RFC 791: Internet Protocol | |||
| RFC 8200: Internet Protocol, Version 6 (IPv6) Specification"; | RFC 8200: Internet Protocol, Version 6 (IPv6) Specification"; | |||
| } | } | |||
| /*** collection of types related to autonomous systems ***/ | /*** collection of types related to autonomous systems ***/ | |||
| typedef as-number { | typedef as-number { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The as-number type represents autonomous system numbers | "The as-number type represents autonomous system numbers | |||
| which identify an Autonomous System (AS). An AS is a set | that identify an Autonomous System (AS). An AS is a set | |||
| of routers under a single technical administration, using | of routers under a single technical administration, using | |||
| an interior gateway protocol and common metrics to route | an interior gateway protocol and common metrics to route | |||
| packets within the AS, and using an exterior gateway | packets within the AS, and using an exterior gateway | |||
| protocol to route packets to other ASes. IANA maintains | protocol to route packets to other ASes. IANA maintains | |||
| the AS number space and has delegated large parts to the | the AS number space and has delegated large parts to the | |||
| regional registries. | regional registries. | |||
| Autonomous system numbers were originally limited to 16 | Autonomous system numbers were originally limited to 16 | |||
| bits. BGP extensions have enlarged the autonomous system | bits. BGP extensions have enlarged the autonomous system | |||
| number space to 32 bits. This type therefore uses an uint32 | number space to 32 bits. This type therefore uses an uint32 | |||
| base type without a range restriction in order to support | base type without a range restriction in order to support | |||
| a larger autonomous system number space. | a larger autonomous system number space. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the InetAutonomousSystemNumber textual convention of | to the InetAutonomousSystemNumber textual convention of | |||
| the SMIv2."; | the SMIv2."; | |||
| reference | reference | |||
| "RFC 1930: Guidelines for creation, selection, and registration | "RFC 1930: Guidelines for creation, selection, and registration | |||
| of an Autonomous System (AS) | of an Autonomous System (AS) | |||
| RFC 4271: A Border Gateway Protocol 4 (BGP-4) | RFC 4271: A Border Gateway Protocol 4 (BGP-4) | |||
| RFC 4001: Textual Conventions for Internet Network Addresses | RFC 4001: Textual Conventions for Internet Network Addresses | |||
| RFC 6793: BGP Support for Four-Octet Autonomous System (AS) | RFC 6793: BGP Support for Four-Octet Autonomous System (AS) | |||
| Number Space"; | Number Space"; | |||
| } | } | |||
| /*** collection of types related to IP addresses and hostnames ***/ | /*** collection of types related to IP addresses and hostnames ***/ | |||
| typedef ip-address { | typedef ip-address { | |||
| type union { | type union { | |||
| type ipv4-address; | type ipv4-address; | |||
| type ipv6-address; | type ipv6-address; | |||
| } | } | |||
| description | description | |||
| "The ip-address type represents an IP address and is IP | "The ip-address type represents an IP address and is IP | |||
| version neutral. The format of the textual representation | version neutral. The format of the textual representation | |||
| implies the IP version. This type supports scoped addresses | implies the IP version. This type supports scoped addresses | |||
| by allowing zone identifiers in the address format."; | by allowing zone identifiers in the address format."; | |||
| reference | reference | |||
| "RFC 4007: IPv6 Scoped Address Architecture"; | "RFC 4007: IPv6 Scoped Address Architecture"; | |||
| } | } | |||
| typedef ipv4-address { | typedef ipv4-address { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' | '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' | |||
| + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' | + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' | |||
| + '(%.+)?'; | + '(%.+)?'; | |||
| } | } | |||
| description | description | |||
| "The ipv4-address type represents an IPv4 address in | "The ipv4-address type represents an IPv4 address in | |||
| dotted-quad notation. The IPv4 address may include a zone | dotted-quad notation. The IPv4 address may include a zone | |||
| index, separated by a % sign. If a system uses zone names | index, separated by a % sign. If a system uses zone names | |||
| that are not represented in UTF-8, then an implementation | that are not represented in UTF-8, then an implementation | |||
| needs to use some mechanism to transform the local name | needs to use some mechanism to transform the local name | |||
| into UTF-8. The definition of such a mechanism is outside | into UTF-8. The definition of such a mechanism is outside | |||
| the scope of this document. | the scope of this document. | |||
| The zone index is used to disambiguate identical address | The zone index is used to disambiguate identical address | |||
| values. For link-local addresses, the zone index will | values. For link-local addresses, the zone index will | |||
| typically be the interface index number or the name of an | typically be the interface index number or the name of an | |||
| interface. If the zone index is not present, the default | interface. If the zone index is not present, the default | |||
| zone of the device will be used. | zone of the device will be used. | |||
| The canonical format for the zone index is the numerical | The canonical format for the zone index is the numerical | |||
| format"; | format"; | |||
| skipping to change at page 30, line 27 ¶ | skipping to change at line 1364 ¶ | |||
| pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' | 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}))|' | + '((([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])\.){3}' | |||
| + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' | + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' | |||
| + '(%[A-Za-z0-9][A-Za-z0-9\-\._~/]*)?'; | + '(%[A-Za-z0-9][A-Za-z0-9\-\._~/]*)?'; | |||
| pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | |||
| + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' | + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' | |||
| + '(%.+)?'; | + '(%.+)?'; | |||
| } | } | |||
| description | description | |||
| "The ipv6-address type represents an IPv6 address in full, | "The ipv6-address type represents an IPv6 address in full, | |||
| mixed, shortened, and shortened-mixed notation. The IPv6 | mixed, shortened, and shortened-mixed notation. The IPv6 | |||
| address may include a zone index, separated by a % sign. | address may include a zone index, separated by a % sign. | |||
| If a system uses zone names that are not represented in | If a system uses zone names that are not represented in | |||
| UTF-8, then an implementation needs to use some mechanism | UTF-8, then an implementation needs to use some mechanism | |||
| to transform the local name into UTF-8. The definition of | to transform the local name into UTF-8. The definition of | |||
| such a mechanism is outside the scope of this document. | such a mechanism is outside the scope of this document. | |||
| The zone index is used to disambiguate identical address | The zone index is used to disambiguate identical address | |||
| values. For link-local addresses, the zone index will | values. For link-local addresses, the zone index will | |||
| typically be the interface index number or the name of an | typically be the interface index number or the name of an | |||
| interface. If the zone index is not present, the default | interface. If the zone index is not present, the default | |||
| zone of the device will be used. | zone of the device will be used. | |||
| The canonical format of IPv6 addresses uses the textual | The canonical format of IPv6 addresses uses the textual | |||
| representation defined in Section 4 of RFC 5952. The | representation defined in Section 4 of RFC 5952. The | |||
| canonical format for the zone index is the numerical | canonical format for the zone index is the numerical | |||
| format as described in Section 11.2 of RFC 4007."; | format as described in Section 11.2 of RFC 4007."; | |||
| reference | reference | |||
| "RFC 4291: IP Version 6 Addressing Architecture | "RFC 4291: IP Version 6 Addressing Architecture | |||
| RFC 4007: IPv6 Scoped Address Architecture | RFC 4007: IPv6 Scoped Address Architecture | |||
| RFC 5952: A Recommendation for IPv6 Address Text | RFC 5952: A Recommendation for IPv6 Address Text | |||
| Representation"; | Representation"; | |||
| } | } | |||
| typedef ip-address-no-zone { | typedef ip-address-no-zone { | |||
| type union { | type union { | |||
| type ipv4-address-no-zone; | type ipv4-address-no-zone; | |||
| type ipv6-address-no-zone; | type ipv6-address-no-zone; | |||
| } | } | |||
| description | description | |||
| "The ip-address-no-zone type represents an IP address and is | "The ip-address-no-zone type represents an IP address and is | |||
| IP version neutral. The format of the textual representation | IP version neutral. The format of the textual representation | |||
| implies the IP version. This type does not support scoped | implies the IP version. This type does not support scoped | |||
| addresses since it does not allow zone identifiers in the | addresses since it does not allow zone identifiers in the | |||
| address format."; | address format."; | |||
| reference | reference | |||
| "RFC 4007: IPv6 Scoped Address Architecture"; | "RFC 4007: IPv6 Scoped Address Architecture"; | |||
| } | } | |||
| typedef ipv4-address-no-zone { | typedef ipv4-address-no-zone { | |||
| type ipv4-address { | type ipv4-address { | |||
| pattern '[0-9\.]*'; | pattern '[0-9\.]*'; | |||
| } | } | |||
| description | description | |||
| "An IPv4 address without a zone index. This type, derived | "An IPv4 address without a zone index. This type, derived | |||
| from the type ipv4-address, may be used in situations where | from the type ipv4-address, may be used in situations where | |||
| the zone is known from the context and no zone index is | the zone is known from the context and no zone index is | |||
| skipping to change at page 31, line 39 ¶ | skipping to change at line 1425 ¶ | |||
| typedef ipv6-address-no-zone { | typedef ipv6-address-no-zone { | |||
| type ipv6-address { | type ipv6-address { | |||
| pattern '[0-9a-fA-F:\.]*'; | pattern '[0-9a-fA-F:\.]*'; | |||
| } | } | |||
| description | description | |||
| "An IPv6 address without a zone index. This type, derived | "An IPv6 address without a zone index. This type, derived | |||
| from the type ipv6-address, may be used in situations where | from the type ipv6-address, may be used in situations where | |||
| the zone is known from the context and no zone index is | the zone is known from the context and no zone index is | |||
| needed."; | needed."; | |||
| reference | reference | |||
| "RFC 4291: IP Version 6 Addressing Architecture | "RFC 4291: IP Version 6 Addressing Architecture | |||
| RFC 4007: IPv6 Scoped Address Architecture | RFC 4007: IPv6 Scoped Address Architecture | |||
| RFC 5952: A Recommendation for IPv6 Address Text | RFC 5952: A Recommendation for IPv6 Address Text | |||
| Representation"; | Representation"; | |||
| } | } | |||
| typedef ip-address-link-local { | typedef ip-address-link-local { | |||
| type union { | type union { | |||
| type ipv4-address-link-local; | type ipv4-address-link-local; | |||
| type ipv6-address-link-local; | type ipv6-address-link-local; | |||
| } | } | |||
| description | description | |||
| "The ip-address-link-local type represents a link-local IP | "The ip-address-link-local type represents a link-local IP | |||
| address and is IP version neutral. The format of the textual | address and is IP version neutral. The format of the textual | |||
| representation implies the IP version."; | representation implies the IP version."; | |||
| } | } | |||
| typedef ipv4-address-link-local { | typedef ipv4-address-link-local { | |||
| type ipv4-address { | type ipv4-address { | |||
| pattern '169\.254\..*'; | pattern '169\.254\..*'; | |||
| } | } | |||
| description | description | |||
| "A link-local IPv4 address in the prefix 169.254.0.0/16 as | "The ipv4-address-link-local type represents a link-local IPv4 | |||
| defined in section 2.1. of RFC 3927."; | address in the prefix 169.254.0.0/16 as defined in Section 2.1 | |||
| of RFC 3927."; | ||||
| reference | reference | |||
| "RFC 3927: Dynamic Configuration of IPv4 Link-Local Addresses"; | "RFC 3927: Dynamic Configuration of IPv4 Link-Local Addresses"; | |||
| } | } | |||
| typedef ipv6-address-link-local { | typedef ipv6-address-link-local { | |||
| type ipv6-address { | type ipv6-address { | |||
| pattern '[fF][eE]80:.*'; | pattern '[fF][eE]80:.*'; | |||
| } | } | |||
| description | description | |||
| "A link-local IPv6 address in the prefix fe80::/10 as defined | "The ipv6-address-link-local type represents a link-local IPv6 | |||
| in section 2.5.6. of RFC 4291."; | address in the prefix fe80::/10 as defined in Section 2.5.6 of | |||
| RFC 4291."; | ||||
| reference | reference | |||
| "RFC 4291: IP Version 6 Addressing Architecture"; | "RFC 4291: IP Version 6 Addressing Architecture"; | |||
| } | } | |||
| typedef ip-prefix { | typedef ip-prefix { | |||
| type union { | type union { | |||
| type ipv4-prefix; | type ipv4-prefix; | |||
| type ipv6-prefix; | type ipv6-prefix; | |||
| } | } | |||
| description | description | |||
| "The ip-prefix type represents an IP prefix and is IP | "The ip-prefix type represents an IP prefix and is IP | |||
| version neutral. The format of the textual representations | version neutral. The format of the textual representations | |||
| implies the IP version."; | implies the IP version."; | |||
| } | } | |||
| typedef ipv4-prefix { | typedef ipv4-prefix { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' | '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' | |||
| + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' | + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' | |||
| + '/(([0-9])|([1-2][0-9])|(3[0-2]))'; | + '/(([0-9])|([1-2][0-9])|(3[0-2]))'; | |||
| } | } | |||
| description | description | |||
| "The ipv4-prefix type represents an IPv4 prefix. | "The ipv4-prefix type represents an IPv4 prefix. | |||
| The prefix length is given by the number following the | The prefix length is given by the number following the | |||
| slash character and must be less than or equal to 32. | slash character and must be less than or equal to 32. | |||
| A prefix length value of n corresponds to an IP address | A prefix length value of n corresponds to an IP address | |||
| mask that has n contiguous 1-bits from the most | mask that has n contiguous 1-bits from the most | |||
| significant bit (MSB) and all other bits set to 0. | significant bit (MSB) and all other bits set to 0. | |||
| The canonical format of an IPv4 prefix has all bits of | The canonical format of an IPv4 prefix has all bits of | |||
| the IPv4 address set to zero that are not part of the | the IPv4 address set to zero that are not part of the | |||
| IPv4 prefix. | IPv4 prefix. | |||
| The definition of ipv4-prefix does not require that bits, | The definition of ipv4-prefix does not require that bits | |||
| which are not part of the prefix, are set to zero. However, | that are not part of the prefix be set to zero. However, | |||
| implementations have to return values in canonical format, | implementations have to return values in canonical format, | |||
| which requires non-prefix bits to be set to zero. This means | which requires non-prefix bits to be set to zero. This means | |||
| that 192.0.2.1/24 must be accepted as a valid value but it | that 192.0.2.1/24 must be accepted as a valid value, but it | |||
| will be converted into the canonical format 192.0.2.0/24."; | will be converted into the canonical format 192.0.2.0/24."; | |||
| } | } | |||
| typedef ipv6-prefix { | typedef ipv6-prefix { | |||
| type string { | type string { | |||
| pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' | 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}))|' | + '((([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])\.){3}' | |||
| + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' | + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' | |||
| + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; | + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; | |||
| pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | |||
| + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' | + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' | |||
| + '(/.+)'; | + '(/.+)'; | |||
| } | } | |||
| description | description | |||
| "The ipv6-prefix type represents an IPv6 prefix. | "The ipv6-prefix type represents an IPv6 prefix. | |||
| The prefix length is given by the number following the | The prefix length is given by the number following the | |||
| slash character and must be less than or equal to 128. | slash character and must be less than or equal to 128. | |||
| A prefix length value of n corresponds to an IP address | A prefix length value of n corresponds to an IP address | |||
| mask that has n contiguous 1-bits from the most | mask that has n contiguous 1-bits from the most | |||
| significant bit (MSB) and all other bits set to 0. | significant bit (MSB) and all other bits set to 0. | |||
| The canonical format of an IPv6 prefix has all bits of | The canonical format of an IPv6 prefix has all bits of | |||
| the IPv6 address set to zero that are not part of the | the IPv6 address set to zero that are not part of the | |||
| IPv6 prefix. Furthermore, the IPv6 address is represented | IPv6 prefix. Furthermore, the IPv6 address is represented | |||
| as defined in Section 4 of RFC 5952. | as defined in Section 4 of RFC 5952. | |||
| The definition of ipv6-prefix does not require that bits, | The definition of ipv6-prefix does not require that bits | |||
| which are not part of the prefix, are set to zero. However, | that are not part of the prefix be set to zero. However, | |||
| implementations have to return values in canonical format, | implementations have to return values in canonical format, | |||
| which requires non-prefix bits to be set to zero. This means | which requires non-prefix bits to be set to zero. This means | |||
| that 2001:db8::1/64 must be accepted as a valid value but it | that 2001:db8::1/64 must be accepted as a valid value, but it | |||
| will be converted into the canonical format 2001:db8::/64."; | will be converted into the canonical format 2001:db8::/64."; | |||
| reference | reference | |||
| "RFC 5952: A Recommendation for IPv6 Address Text | "RFC 5952: A Recommendation for IPv6 Address Text | |||
| Representation"; | Representation"; | |||
| } | } | |||
| typedef ip-address-and-prefix { | typedef ip-address-and-prefix { | |||
| type union { | type union { | |||
| type ipv4-address-and-prefix; | type ipv4-address-and-prefix; | |||
| type ipv6-address-and-prefix; | type ipv6-address-and-prefix; | |||
| } | } | |||
| description | description | |||
| "The ip-address-and-prefix type represents an IP address and | "The ip-address-and-prefix type represents an IP address and | |||
| prefix and is IP version neutral. The format of the textual | prefix and is IP version neutral. The format of the textual | |||
| representations implies the IP version."; | representations implies the IP version."; | |||
| } | } | |||
| typedef ipv4-address-and-prefix { | typedef ipv4-address-and-prefix { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' | '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' | |||
| + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' | + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' | |||
| + '/(([0-9])|([1-2][0-9])|(3[0-2]))'; | + '/(([0-9])|([1-2][0-9])|(3[0-2]))'; | |||
| } | } | |||
| description | description | |||
| "The ipv4-address-and-prefix type represents an IPv4 | "The ipv4-address-and-prefix type represents an IPv4 | |||
| address and an associated IPv4 prefix. | address and an associated IPv4 prefix. | |||
| The prefix length is given by the number following the | The prefix length is given by the number following the | |||
| slash character and must be less than or equal to 32. | slash character and must be less than or equal to 32. | |||
| A prefix length value of n corresponds to an IP address | A prefix length value of n corresponds to an IP address | |||
| mask that has n contiguous 1-bits from the most | mask that has n contiguous 1-bits from the most | |||
| significant bit (MSB) and all other bits set to 0."; | significant bit (MSB) and all other bits set to 0."; | |||
| } | } | |||
| typedef ipv6-address-and-prefix { | typedef ipv6-address-and-prefix { | |||
| type string { | type string { | |||
| pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' | 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}))|' | + '((([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])\.){3}' | |||
| + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' | + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' | |||
| + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; | + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; | |||
| pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | |||
| + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' | + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' | |||
| + '(/.+)'; | + '(/.+)'; | |||
| } | } | |||
| description | description | |||
| "The ipv6-address-and-prefix type represents an IPv6 | "The ipv6-address-and-prefix type represents an IPv6 | |||
| address and an associated IPv6 prefix. | address and an associated IPv6 prefix. | |||
| The prefix length is given by the number following the | The prefix length is given by the number following the | |||
| slash character and must be less than or equal to 128. | slash character and must be less than or equal to 128. | |||
| A prefix length value of n corresponds to an IP address | A prefix length value of n corresponds to an IP address | |||
| mask that has n contiguous 1-bits from the most | mask that has n contiguous 1-bits from the most | |||
| significant bit (MSB) and all other bits set to 0. | significant bit (MSB) and all other bits set to 0. | |||
| The canonical format requires that the IPv6 address is | The canonical format requires that the IPv6 address is | |||
| represented as defined in Section 4 of RFC 5952."; | represented as defined in Section 4 of RFC 5952."; | |||
| reference | reference | |||
| "RFC 5952: A Recommendation for IPv6 Address Text | "RFC 5952: A Recommendation for IPv6 Address Text | |||
| Representation"; | Representation"; | |||
| } | } | |||
| /*** collection of domain name and URI types ***/ | /*** collection of domain name and URI types ***/ | |||
| typedef domain-name { | typedef domain-name { | |||
| type string { | type string { | |||
| length "1..253"; | length "1..253"; | |||
| pattern | pattern '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' | |||
| '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' | + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' | |||
| + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' | + '|\.'; | |||
| + '|\.'; | ||||
| } | } | |||
| description | description | |||
| "The domain-name type represents a DNS domain name. The | "The domain-name type represents a DNS domain name. The | |||
| name SHOULD be fully qualified whenever possible. This | name SHOULD be fully qualified whenever possible. This | |||
| type does not support wildcards (see RFC 4592) or | type does not support wildcards (see RFC 4592) or | |||
| classless in-addr.arpa delegations (see RFC 2317). | classless in-addr.arpa delegations (see RFC 2317). | |||
| Internet domain names are only loosely specified. Section | Internet domain names are only loosely specified. Section | |||
| 3.5 of RFC 1034 recommends a syntax (modified in Section | 3.5 of RFC 1034 recommends a syntax (modified in Section | |||
| 2.1 of RFC 1123). The pattern above is intended to allow | 2.1 of RFC 1123). The pattern above is intended to allow | |||
| for current practice in domain name use, and some possible | for current practice in domain name use and some possible | |||
| future expansion. Note that Internet host names have a | future expansion. Note that Internet host names have a | |||
| stricter syntax (described in RFC 952) than the DNS | stricter syntax (described in RFC 952) than the DNS | |||
| recommendations in RFCs 1034 and 1123. Schema nodes | recommendations in RFCs 1034 and 1123. Schema nodes | |||
| representing host names should use the host-name type | representing host names should use the host-name type | |||
| instead of the domain-type. | instead of the domain-type. | |||
| The encoding of DNS names in the DNS protocol is limited | The encoding of DNS names in the DNS protocol is limited | |||
| to 255 characters. Since the encoding consists of labels | to 255 characters. Since the encoding consists of labels | |||
| prefixed by a length bytes and there is a trailing NULL | prefixed by a length bytes and there is a trailing NULL | |||
| byte, only 253 characters can appear in the textual dotted | byte, only 253 characters can appear in the textual dotted | |||
| notation. | notation. | |||
| The description clause of schema nodes using the domain-name | The description clause of schema nodes using the domain-name | |||
| type MUST describe when and how these names are resolved to | type MUST describe when and how these names are resolved to | |||
| IP addresses. Note that the resolution of a domain-name value | IP addresses. Note that the resolution of a domain-name value | |||
| may require to query multiple DNS records (e.g., A for IPv4 | may require to query multiple DNS records (e.g., A for IPv4 | |||
| and AAAA for IPv6). The order of the resolution process and | and AAAA for IPv6). The order of the resolution process and | |||
| which DNS record takes precedence can either be defined | which DNS record takes precedence can either be defined | |||
| explicitly or may depend on the configuration of the | explicitly or depend on the configuration of the | |||
| resolver. | resolver. | |||
| Domain-name values use the US-ASCII encoding. Their canonical | Domain-name values use the US-ASCII encoding. Their canonical | |||
| format uses lowercase US-ASCII characters. Internationalized | format uses lowercase US-ASCII characters. Internationalized | |||
| domain names MUST be A-labels as per RFC 5890."; | domain names MUST be A-labels as per RFC 5890."; | |||
| reference | reference | |||
| "RFC 952: DoD Internet Host Table Specification | "RFC 952: DoD Internet Host Table Specification | |||
| RFC 1034: Domain Names - Concepts and Facilities | RFC 1034: Domain Names - Concepts and Facilities | |||
| RFC 1123: Requirements for Internet Hosts -- Application | RFC 1123: Requirements for Internet Hosts -- Application | |||
| and Support | and Support | |||
| RFC 2317: Classless IN-ADDR.ARPA delegation | RFC 2317: Classless IN-ADDR.ARPA delegation | |||
| RFC 2782: A DNS RR for specifying the location of services | RFC 2782: A DNS RR for specifying the location of services | |||
| (DNS SRV) | (DNS SRV) | |||
| RFC 4592: The Role of Wildcards in the Domain Name System | RFC 4592: The Role of Wildcards in the Domain Name System | |||
| RFC 5890: Internationalized Domain Names in Applications | RFC 5890: Internationalized Domain Names in Applications | |||
| (IDNA): Definitions and Document Framework | (IDNA): Definitions and Document Framework | |||
| RFC 9499: DNS Terminology"; | RFC 9499: DNS Terminology"; | |||
| } | } | |||
| typedef host-name { | typedef host-name { | |||
| type domain-name { | type domain-name { | |||
| length "2..max"; | length "2..max"; | |||
| pattern '[a-zA-Z0-9\-\.]+'; | pattern '[a-zA-Z0-9\-\.]+'; | |||
| } | } | |||
| description | description | |||
| "The host-name type represents (fully qualified) host names. | "The host-name type represents (fully qualified) host names. | |||
| Host names must be at least two characters long (see RFC 952) | Host names must be at least two characters long (see RFC 952), | |||
| and they are restricted to labels consisting of letters, digits | and they are restricted to labels consisting of letters, | |||
| and hyphens separated by dots (see RFC1123 and RFC 952)."; | digits, and hyphens separated by dots (see RFCs 1123 and | |||
| 952)."; | ||||
| reference | reference | |||
| "RFC 952: DoD Internet Host Table Specification | "RFC 952: DoD Internet Host Table Specification | |||
| RFC 1123: Requirements for Internet Hosts -- Application | RFC 1123: Requirements for Internet Hosts -- Application | |||
| and Support"; | and Support"; | |||
| } | } | |||
| typedef host { | typedef host { | |||
| type union { | type union { | |||
| type ip-address; | type ip-address; | |||
| type host-name; | type host-name; | |||
| } | } | |||
| description | description | |||
| "The host type represents either an IP address or a (fully | "The host type represents either an IP address or a (fully | |||
| qualified) host name."; | qualified) host name."; | |||
| } | } | |||
| typedef uri { | typedef uri { | |||
| type string { | type string { | |||
| pattern '[a-z][a-z0-9+.-]*:.*'; | pattern '[a-z][a-z0-9+.-]*:.*'; | |||
| } | } | |||
| description | description | |||
| "The uri type represents a Uniform Resource Identifier | "The uri type represents a Uniform Resource Identifier | |||
| (URI) as defined by the rule 'URI' in RFC 3986. | (URI) as defined by the rule 'URI' in RFC 3986. | |||
| Objects using the uri type MUST be in US-ASCII encoding, | Objects using the uri type MUST be in US-ASCII encoding | |||
| and MUST be normalized as described by RFC 3986 Sections | and MUST be normalized as described in Sections 6.2.1, | |||
| 6.2.1, 6.2.2.1, and 6.2.2.2. Characters that can be | 6.2.2.1, and 6.2.2.2 of RFC 3986. Characters that can be | |||
| represented without using percent-encoding are represented | represented without using percent-encoding are represented | |||
| as characters (without percent-encoding), and all | as characters (without percent-encoding), and all | |||
| case-insensitive characters are set to lowercase except | case-insensitive characters are set to lowercase except | |||
| for hexadecimal digits within a percent-encoded triplet, | for hexadecimal digits within a percent-encoded triplet, | |||
| which are normalized to uppercase as described in | which are normalized to uppercase as described in | |||
| Section 6.2.2.1 of RFC 3986. | Section 6.2.2.1 of RFC 3986. | |||
| The purpose of this normalization is to help provide | The purpose of this normalization is to help provide | |||
| unique URIs. Note that this normalization is not | unique URIs. Note that this normalization is not | |||
| sufficient to provide uniqueness. Two URIs that are | sufficient to provide uniqueness. Two URIs that are | |||
| textually distinct after this normalization may still be | textually distinct after this normalization may still be | |||
| equivalent. | equivalent. | |||
| Objects using the uri type may restrict the schemes that | Objects using the uri type may restrict the schemes that | |||
| they permit. For example, 'data:' and 'urn:' schemes | they permit. For example, 'data:' and 'urn:' schemes | |||
| might not be appropriate. | might not be appropriate. | |||
| A zero-length URI is not a valid URI. This can be used to | A zero-length URI is not a valid URI. This can be used to | |||
| express 'URI absent' where required. | express 'URI absent' where required. | |||
| In the value set and its semantics, this type is equivalent | In the value set and its semantics, this type is equivalent | |||
| to the Uri SMIv2 textual convention defined in RFC 5017."; | to the Uri SMIv2 textual convention defined in RFC 5017."; | |||
| reference | reference | |||
| "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax | "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax | |||
| RFC 3305: Report from the Joint W3C/IETF URI Planning Interest | RFC 3305: Report from the Joint W3C/IETF URI Planning Interest | |||
| Group: Uniform Resource Identifiers (URIs), URLs, | Group: Uniform Resource Identifiers (URIs), URLs, | |||
| and Uniform Resource Names (URNs): Clarifications | and Uniform Resource Names (URNs): Clarifications | |||
| and Recommendations | and Recommendations | |||
| RFC 5017: MIB Textual Conventions for Uniform Resource | RFC 5017: MIB Textual Conventions for Uniform Resource | |||
| Identifiers (URIs)"; | Identifiers (URIs)"; | |||
| } | } | |||
| typedef email-address { | typedef email-address { | |||
| type string { | type string { | |||
| pattern '.+@.+'; | pattern '.+@.+'; | |||
| } | } | |||
| description | description | |||
| "The email-address type represents an internationalized | "The email-address type represents an internationalized | |||
| email address. | email address. | |||
| The email address format is defined by the addr-spec | The email address format is defined by the addr-spec | |||
| ABNF rule in RFC 5322 section 3.4.1. This format has | ABNF rule in Section 3.4.1 of RFC 5322. This format has | |||
| been extended by RFC 6532 to support internationalized | been extended by RFC 6532 to support internationalized | |||
| email addresses. Implementations MUST support the | email addresses. Implementations MUST support the | |||
| internationalization extensions of RFC 6532. Support | internationalization extensions of RFC 6532. Support | |||
| of the obsolete obs-local-part, obs-domain, and | of the obsolete obs-local-part, obs-domain, and | |||
| obs-qtext parts of RFC 5322 is not required. | obs-qtext parts of RFC 5322 is not required. | |||
| The domain part may use both A-labels and U-labels | The domain part may use both A-labels and U-labels | |||
| (see RFC 5890). The canonical format of the domain part | (see RFC 5890). The canonical format of the domain part | |||
| uses lowercase characters and U-labels (RFC 5890) where | uses lowercase characters and U-labels (RFC 5890) where | |||
| applicable."; | applicable."; | |||
| reference | reference | |||
| "RFC 5322: Internet Message Format | "RFC 5322: Internet Message Format | |||
| RFC 5890: Internationalized Domain Names in Applications | RFC 5890: Internationalized Domain Names in Applications | |||
| (IDNA): Definitions and Document Framework | (IDNA): Definitions and Document Framework | |||
| RFC 6531: SMTP Extension for Internationalized Email"; | RFC 6531: SMTP Extension for Internationalized Email"; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| This document reuses the URIs for "ietf-yang-types" and "ietf-inet- | This document reuses the URIs for "ietf-yang-types" and "ietf-inet- | |||
| types" in the "IETF XML Registry" [RFC3688]. | types" in the "IETF XML Registry" [RFC3688]. | |||
| This document updates the module registration in the "YANG Module | Per this document, IANA has updated the "YANG Module Names" registry | |||
| Names" registry to reference this RFC instead of [RFC6991] for "ietf- | to reference this RFC instead of [RFC6991] for the "ietf-yang-types" | |||
| yang-types" and "ietf-inet-types". Following the format in | and "ietf-inet-types" modules. Following the format in [RFC6020], | |||
| [RFC6020], the following has been registered. | these registrations have been made. | |||
| name: ietf-yang-types | Name: ietf-yang-types | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-yang-types | Namespace: urn:ietf:params:xml:ns:yang:ietf-yang-types | |||
| prefix: yang | Prefix: yang | |||
| reference: RFC XXXX | Reference: RFC 9911 | |||
| name: ietf-inet-types | Name: ietf-inet-types | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-inet-types | Namespace: urn:ietf:params:xml:ns:yang:ietf-inet-types | |||
| prefix: inet | Prefix: inet | |||
| reference: RFC XXXX | Reference: RFC 9911 | |||
| 6. Security Considerations | 6. Security Considerations | |||
| This document defines common data types using the YANG data modeling | This document defines common data types using the YANG data modeling | |||
| language. The definitions themselves have no security impact on the | language. The definitions themselves have no security impact on the | |||
| Internet, but the usage of these definitions in concrete YANG modules | Internet, but the usage of these definitions in concrete YANG modules | |||
| might have. The security considerations spelled out in the YANG | might have. The security considerations spelled out in the YANG | |||
| specification [RFC7950] apply for this document as well. | specification [RFC7950] apply for this document as well. | |||
| 7. Acknowledgments | 7. References | |||
| The following people contributed significantly to the original | ||||
| version of this document published as [RFC6020]: Andy Bierman, Martin | ||||
| Bjorklund, Balazs Lengyel, David Partain and Phil Shafer. | ||||
| Helpful comments on various versions of this document were provided | ||||
| by the following individuals: Andy Bierman, Martin Bjorklund, Benoit | ||||
| Claise, Joel M. Halpern, Ladislav Lhotka, Lars-Johan Liman, and Dan | ||||
| Romascanu. | ||||
| 8. Normative References | 7.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: | [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: | |||
| Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, | Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, | |||
| <https://www.rfc-editor.org/info/rfc3339>. | <https://www.rfc-editor.org/info/rfc3339>. | |||
| skipping to change at page 40, line 36 ¶ | skipping to change at line 1845 ¶ | |||
| [RFC9499] Hoffman, P. and K. Fujiwara, "DNS Terminology", BCP 219, | [RFC9499] Hoffman, P. and K. Fujiwara, "DNS Terminology", BCP 219, | |||
| RFC 9499, DOI 10.17487/RFC9499, March 2024, | RFC 9499, DOI 10.17487/RFC9499, March 2024, | |||
| <https://www.rfc-editor.org/info/rfc9499>. | <https://www.rfc-editor.org/info/rfc9499>. | |||
| [RFC9557] Sharma, U. and C. Bormann, "Date and Time on the Internet: | [RFC9557] Sharma, U. and C. Bormann, "Date and Time on the Internet: | |||
| Timestamps with Additional Information", RFC 9557, | Timestamps with Additional Information", RFC 9557, | |||
| DOI 10.17487/RFC9557, April 2024, | DOI 10.17487/RFC9557, April 2024, | |||
| <https://www.rfc-editor.org/info/rfc9557>. | <https://www.rfc-editor.org/info/rfc9557>. | |||
| [W3C.xpath] | [XPATH] Clark, J., Ed. and S. DeRose, Ed., "XML Path Language | |||
| Clark, J. and S. DeRose, "XML Path Language (XPath) | (XPath) Version 1.0", W3C Recommendation, 16 November | |||
| Version 1.0", W3C REC xpath, W3C Recommendation xpath, | 1999, <http://www.w3.org/TR/xpath-10>. | |||
| W3C xpath, 16 November 1999, <http://www.w3.org/TR/xpath>. | ||||
| [W3C.xmlschema11-2] | [XSD-TYPES] | |||
| "W3C XML Schema Definition Language (XSD) 1.1 Part 2: | Peterson, D., Ed., Gao, S., Ed., Malhotra, A., Ed., | |||
| Datatypes", W3C REC xmlschema11-2, W3C xmlschema11-2, | Sperberg-McQueen, C., Ed., and H. S. Thompson, Ed., "W3C | |||
| XML Schema Definition Language (XSD) 1.1 Part 2: | ||||
| Datatypes", W3C Recommendation, 5 April 2012, | ||||
| <https://www.w3.org/TR/xmlschema11-2/>. | <https://www.w3.org/TR/xmlschema11-2/>. | |||
| 9. Informative References | 7.2. Informative References | |||
| [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, | [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, | |||
| DOI 10.17487/RFC0768, August 1980, | DOI 10.17487/RFC0768, August 1980, | |||
| <https://www.rfc-editor.org/info/rfc768>. | <https://www.rfc-editor.org/info/rfc768>. | |||
| [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
| DOI 10.17487/RFC0791, September 1981, | DOI 10.17487/RFC0791, September 1981, | |||
| <https://www.rfc-editor.org/info/rfc791>. | <https://www.rfc-editor.org/info/rfc791>. | |||
| [RFC0952] Harrenstien, K., Stahl, M., and E. Feinler, "DoD Internet | [RFC0952] Harrenstien, K., Stahl, M., and E. Feinler, "DoD Internet | |||
| skipping to change at page 44, line 28 ¶ | skipping to change at line 2025 ¶ | |||
| [RFC9260] Stewart, R., Tüxen, M., and K. Nielsen, "Stream Control | [RFC9260] Stewart, R., Tüxen, M., and K. Nielsen, "Stream Control | |||
| Transmission Protocol", RFC 9260, DOI 10.17487/RFC9260, | Transmission Protocol", RFC 9260, DOI 10.17487/RFC9260, | |||
| June 2022, <https://www.rfc-editor.org/info/rfc9260>. | June 2022, <https://www.rfc-editor.org/info/rfc9260>. | |||
| [RFC9293] Eddy, W., Ed., "Transmission Control Protocol (TCP)", | [RFC9293] Eddy, W., Ed., "Transmission Control Protocol (TCP)", | |||
| STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022, | STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022, | |||
| <https://www.rfc-editor.org/info/rfc9293>. | <https://www.rfc-editor.org/info/rfc9293>. | |||
| [ISO-9834-1] | [ISO-9834-1] | |||
| ISO/IEC 9834-1:2008, "Information technology -- Open | ISO/IEC, "Information technology -- Open Systems | |||
| Systems Interconnection -- Procedures for the operation of | Interconnection -- Procedures for the operation of OSI | |||
| OSI Registration Authorities: General procedures and top | Registration Authorities: General procedures and top arcs | |||
| arcs of the ASN.1 Object Identifier tree", 2008. | of the International Object Identifier tree", ISO/ | |||
| IEC 9834-1:2008, 2008, | ||||
| <https://www.iso.org/standard/51424.html>. | ||||
| [IEEE-802-2001] | [IEEE-802-2001] | |||
| IEEE Std 802-2001, "IEEE Standard for Local and | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
| Metropolitan Area Networks: Overview and Architecture", | Networks: Overview and Architecture", IEEE Std 802-2001, | |||
| June 2001. | DOI 10.1109/IEEESTD.2002.93395, February 2002, | |||
| <https://doi.org/10.1109/IEEESTD.2002.93395>. | ||||
| [ERR4076] "RFC Errata, Erratum 4076, RFC 6991", | [Err4076] RFC Errata, Erratum ID 4076, RFC 6991, | |||
| <https://www.rfc-editor.org/errata/eid4076>. | <https://www.rfc-editor.org/errata/eid4076>. | |||
| [ERR5105] "RFC Errata, Erratum 5105, RFC 6991", | [Err5105] RFC Errata, Erratum ID 5105, RFC 6991, | |||
| <https://www.rfc-editor.org/errata/eid5105>. | <https://www.rfc-editor.org/errata/eid5105>. | |||
| Acknowledgments | ||||
| The following people contributed significantly to the original | ||||
| version of this document, which was published as [RFC6021]: Andy | ||||
| Bierman, Martin Björklund, Balazs Lengyel, David Partain, and Phil | ||||
| Shafer. | ||||
| Helpful comments on various versions of this document were provided | ||||
| by the following individuals: Andy Bierman, Martin Björklund, Benoît | ||||
| Claise, Joel M. Halpern, Ladislav Lhotka, Lars-Johan Liman, and Dan | ||||
| Romascanu. | ||||
| Author's Address | Author's Address | |||
| Jürgen Schönwälder (editor) | Jürgen Schönwälder (editor) | |||
| Constructor University | Constructor University | |||
| Email: jschoenwaelder@constructor.university | Email: jschoenwaelder@constructor.university | |||
| End of changes. 297 change blocks. | ||||
| 900 lines changed or deleted | 897 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||