mirror of
				https://github.com/Telecominfraproject/oopt-gnpy.git
				synced 2025-10-31 01:57:54 +00:00 
			
		
		
		
	chore: import external ietf modules
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com> Change-Id: I02ed156105736ab538e4d5708d38b497f9479658
This commit is contained in:
		
							
								
								
									
										2241
									
								
								gnpy/yang/ext/ietf-layer0-types.yang
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2241
									
								
								gnpy/yang/ext/ietf-layer0-types.yang
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2247
									
								
								gnpy/yang/ext/ietf-layer0-types@2024-03-04.yang
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2247
									
								
								gnpy/yang/ext/ietf-layer0-types@2024-03-04.yang
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										294
									
								
								gnpy/yang/ext/ietf-network-topology@2018-02-26.yang
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										294
									
								
								gnpy/yang/ext/ietf-network-topology@2018-02-26.yang
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,294 @@ | |||||||
|  | module ietf-network-topology { | ||||||
|  |   yang-version 1.1; | ||||||
|  |   namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology"; | ||||||
|  |   prefix nt; | ||||||
|  |  | ||||||
|  |   import ietf-inet-types { | ||||||
|  |     prefix inet; | ||||||
|  |     reference | ||||||
|  |       "RFC 6991: Common YANG Data Types"; | ||||||
|  |   } | ||||||
|  |   import ietf-network { | ||||||
|  |     prefix nw; | ||||||
|  |     reference | ||||||
|  |       "RFC 8345: A YANG Data Model for Network Topologies"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   organization | ||||||
|  |     "IETF I2RS (Interface to the Routing System) Working Group"; | ||||||
|  |  | ||||||
|  |   contact | ||||||
|  |     "WG Web:    <https://datatracker.ietf.org/wg/i2rs/> | ||||||
|  |      WG List:   <mailto:i2rs@ietf.org> | ||||||
|  |  | ||||||
|  |      Editor:    Alexander Clemm | ||||||
|  |                 <mailto:ludwig@clemm.org> | ||||||
|  |  | ||||||
|  |      Editor:    Jan Medved | ||||||
|  |                 <mailto:jmedved@cisco.com> | ||||||
|  |  | ||||||
|  |      Editor:    Robert Varga | ||||||
|  |                 <mailto:robert.varga@pantheon.tech> | ||||||
|  |  | ||||||
|  |      Editor:    Nitin Bahadur | ||||||
|  |                 <mailto:nitin_bahadur@yahoo.com> | ||||||
|  |  | ||||||
|  |      Editor:    Hariharan Ananthakrishnan | ||||||
|  |                 <mailto:hari@packetdesign.com> | ||||||
|  |  | ||||||
|  |      Editor:    Xufeng Liu | ||||||
|  |                 <mailto:xufeng.liu.ietf@gmail.com>"; | ||||||
|  |  | ||||||
|  |   description | ||||||
|  |     "This module defines a common base model for a network topology, | ||||||
|  |      augmenting the base network data model with links to connect | ||||||
|  |      nodes, as well as termination points to terminate links | ||||||
|  |      on nodes. | ||||||
|  |  | ||||||
|  |      Copyright (c) 2018 IETF Trust and the persons identified as | ||||||
|  |      authors of the code.  All rights reserved. | ||||||
|  |  | ||||||
|  |      Redistribution and use in source and binary forms, with or | ||||||
|  |      without modification, is permitted pursuant to, and subject | ||||||
|  |      to the license terms contained in, the Simplified BSD License | ||||||
|  |      set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||||
|  |      Relating to IETF Documents | ||||||
|  |      (https://trustee.ietf.org/license-info). | ||||||
|  |  | ||||||
|  |      This version of this YANG module is part of RFC 8345; | ||||||
|  |      see the RFC itself for full legal notices."; | ||||||
|  |  | ||||||
|  |   revision 2018-02-26 { | ||||||
|  |     description | ||||||
|  |       "Initial revision."; | ||||||
|  |     reference | ||||||
|  |       "RFC 8345: A YANG Data Model for Network Topologies"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef link-id { | ||||||
|  |     type inet:uri; | ||||||
|  |     description | ||||||
|  |       "An identifier for a link in a topology.  The precise | ||||||
|  |        structure of the link-id will be up to the implementation. | ||||||
|  |        The identifier SHOULD be chosen such that the same link in a | ||||||
|  |        real network topology will always be identified through the | ||||||
|  |        same identifier, even if the data model is instantiated in | ||||||
|  |        separate datastores.  An implementation MAY choose to capture | ||||||
|  |        semantics in the identifier -- for example, to indicate the | ||||||
|  |        type of link and/or the type of topology of which the link is | ||||||
|  |        a part."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef tp-id { | ||||||
|  |     type inet:uri; | ||||||
|  |     description | ||||||
|  |       "An identifier for termination points on a node.  The precise | ||||||
|  |        structure of the tp-id will be up to the implementation. | ||||||
|  |        The identifier SHOULD be chosen such that the same termination | ||||||
|  |        point in a real network topology will always be identified | ||||||
|  |        through the same identifier, even if the data model is | ||||||
|  |        instantiated in separate datastores.  An implementation MAY | ||||||
|  |        choose to capture semantics in the identifier -- for example, | ||||||
|  |        to indicate the type of termination point and/or the type of | ||||||
|  |        node that contains the termination point."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   grouping link-ref { | ||||||
|  |     description | ||||||
|  |       "This grouping can be used to reference a link in a specific | ||||||
|  |        network.  Although it is not used in this module, it is | ||||||
|  |        defined here for the convenience of augmenting modules."; | ||||||
|  |     leaf link-ref { | ||||||
|  |       type leafref { | ||||||
|  |         path "/nw:networks/nw:network[nw:network-id=current()/../"+ | ||||||
|  |           "network-ref]/nt:link/nt:link-id"; | ||||||
|  |         require-instance false; | ||||||
|  |       } | ||||||
|  |       description | ||||||
|  |         "A type for an absolute reference to a link instance. | ||||||
|  |          (This type should not be used for relative references. | ||||||
|  |          In such a case, a relative path should be used instead.)"; | ||||||
|  |     } | ||||||
|  |     uses nw:network-ref; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   grouping tp-ref { | ||||||
|  |     description | ||||||
|  |       "This grouping can be used to reference a termination point | ||||||
|  |        in a specific node.  Although it is not used in this module, | ||||||
|  |        it is defined here for the convenience of augmenting | ||||||
|  |        modules."; | ||||||
|  |     leaf tp-ref { | ||||||
|  |       type leafref { | ||||||
|  |         path "/nw:networks/nw:network[nw:network-id=current()/../"+ | ||||||
|  |           "network-ref]/nw:node[nw:node-id=current()/../"+ | ||||||
|  |           "node-ref]/nt:termination-point/nt:tp-id"; | ||||||
|  |         require-instance false; | ||||||
|  |       } | ||||||
|  |       description | ||||||
|  |         "A type for an absolute reference to a termination point. | ||||||
|  |          (This type should not be used for relative references. | ||||||
|  |          In such a case, a relative path should be used instead.)"; | ||||||
|  |     } | ||||||
|  |     uses nw:node-ref; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   augment "/nw:networks/nw:network" { | ||||||
|  |     description | ||||||
|  |       "Add links to the network data model."; | ||||||
|  |     list link { | ||||||
|  |       key "link-id"; | ||||||
|  |       description | ||||||
|  |         "A network link connects a local (source) node and | ||||||
|  |          a remote (destination) node via a set of the respective | ||||||
|  |          node's termination points.  It is possible to have several | ||||||
|  |          links between the same source and destination nodes. | ||||||
|  |          Likewise, a link could potentially be re-homed between | ||||||
|  |          termination points.  Therefore, in order to ensure that we | ||||||
|  |          would always know to distinguish between links, every link | ||||||
|  |          is identified by a dedicated link identifier.  Note that a | ||||||
|  |          link models a point-to-point link, not a multipoint link."; | ||||||
|  |       leaf link-id { | ||||||
|  |         type link-id; | ||||||
|  |         description | ||||||
|  |           "The identifier of a link in the topology. | ||||||
|  |            A link is specific to a topology to which it belongs."; | ||||||
|  |       } | ||||||
|  |       container source { | ||||||
|  |         description | ||||||
|  |           "This container holds the logical source of a particular | ||||||
|  |            link."; | ||||||
|  |         leaf source-node { | ||||||
|  |           type leafref { | ||||||
|  |             path "../../../nw:node/nw:node-id"; | ||||||
|  |             require-instance false; | ||||||
|  |           } | ||||||
|  |           description | ||||||
|  |             "Source node identifier.  Must be in the same topology."; | ||||||
|  |         } | ||||||
|  |         leaf source-tp { | ||||||
|  |           type leafref { | ||||||
|  |             path "../../../nw:node[nw:node-id=current()/../"+ | ||||||
|  |               "source-node]/termination-point/tp-id"; | ||||||
|  |             require-instance false; | ||||||
|  |           } | ||||||
|  |           description | ||||||
|  |             "This termination point is located within the source node | ||||||
|  |              and terminates the link."; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       container destination { | ||||||
|  |         description | ||||||
|  |           "This container holds the logical destination of a | ||||||
|  |            particular link."; | ||||||
|  |         leaf dest-node { | ||||||
|  |           type leafref { | ||||||
|  |             path "../../../nw:node/nw:node-id"; | ||||||
|  |           require-instance false; | ||||||
|  |           } | ||||||
|  |           description | ||||||
|  |             "Destination node identifier.  Must be in the same | ||||||
|  |              network."; | ||||||
|  |         } | ||||||
|  |         leaf dest-tp { | ||||||
|  |           type leafref { | ||||||
|  |             path "../../../nw:node[nw:node-id=current()/../"+ | ||||||
|  |               "dest-node]/termination-point/tp-id"; | ||||||
|  |             require-instance false; | ||||||
|  |           } | ||||||
|  |           description | ||||||
|  |             "This termination point is located within the | ||||||
|  |              destination node and terminates the link."; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       list supporting-link { | ||||||
|  |         key "network-ref link-ref"; | ||||||
|  |         description | ||||||
|  |           "Identifies the link or links on which this link depends."; | ||||||
|  |         leaf network-ref { | ||||||
|  |           type leafref { | ||||||
|  |             path "../../../nw:supporting-network/nw:network-ref"; | ||||||
|  |           require-instance false; | ||||||
|  |           } | ||||||
|  |           description | ||||||
|  |             "This leaf identifies in which underlay topology | ||||||
|  |              the supporting link is present."; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         leaf link-ref { | ||||||
|  |           type leafref { | ||||||
|  |             path "/nw:networks/nw:network[nw:network-id=current()/"+ | ||||||
|  |               "../network-ref]/link/link-id"; | ||||||
|  |             require-instance false; | ||||||
|  |           } | ||||||
|  |           description | ||||||
|  |             "This leaf identifies a link that is a part | ||||||
|  |              of this link's underlay.  Reference loops in which | ||||||
|  |              a link identifies itself as its underlay, either | ||||||
|  |              directly or transitively, are not allowed."; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   augment "/nw:networks/nw:network/nw:node" { | ||||||
|  |     description | ||||||
|  |       "Augments termination points that terminate links. | ||||||
|  |        Termination points can ultimately be mapped to interfaces."; | ||||||
|  |     list termination-point { | ||||||
|  |       key "tp-id"; | ||||||
|  |       description | ||||||
|  |         "A termination point can terminate a link. | ||||||
|  |          Depending on the type of topology, a termination point | ||||||
|  |          could, for example, refer to a port or an interface."; | ||||||
|  |       leaf tp-id { | ||||||
|  |         type tp-id; | ||||||
|  |         description | ||||||
|  |           "Termination point identifier."; | ||||||
|  |       } | ||||||
|  |       list supporting-termination-point { | ||||||
|  |         key "network-ref node-ref tp-ref"; | ||||||
|  |         description | ||||||
|  |           "This list identifies any termination points on which a | ||||||
|  |            given termination point depends or onto which it maps. | ||||||
|  |            Those termination points will themselves be contained | ||||||
|  |            in a supporting node.  This dependency information can be | ||||||
|  |            inferred from the dependencies between links.  Therefore, | ||||||
|  |            this item is not separately configurable.  Hence, no | ||||||
|  |            corresponding constraint needs to be articulated. | ||||||
|  |            The corresponding information is simply provided by the | ||||||
|  |            implementing system."; | ||||||
|  |  | ||||||
|  |         leaf network-ref { | ||||||
|  |           type leafref { | ||||||
|  |             path "../../../nw:supporting-node/nw:network-ref"; | ||||||
|  |           require-instance false; | ||||||
|  |           } | ||||||
|  |           description | ||||||
|  |             "This leaf identifies in which topology the | ||||||
|  |              supporting termination point is present."; | ||||||
|  |         } | ||||||
|  |         leaf node-ref { | ||||||
|  |           type leafref { | ||||||
|  |             path "../../../nw:supporting-node/nw:node-ref"; | ||||||
|  |           require-instance false; | ||||||
|  |           } | ||||||
|  |           description | ||||||
|  |             "This leaf identifies in which node the supporting | ||||||
|  |              termination point is present."; | ||||||
|  |         } | ||||||
|  |         leaf tp-ref { | ||||||
|  |           type leafref { | ||||||
|  |             path "/nw:networks/nw:network[nw:network-id=current()/"+ | ||||||
|  |               "../network-ref]/nw:node[nw:node-id=current()/../"+ | ||||||
|  |               "node-ref]/termination-point/tp-id"; | ||||||
|  |             require-instance false; | ||||||
|  |           } | ||||||
|  |           description | ||||||
|  |             "Reference to the underlay node (the underlay node must | ||||||
|  |              be in a different topology)."; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										192
									
								
								gnpy/yang/ext/ietf-network@2018-02-26.yang
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								gnpy/yang/ext/ietf-network@2018-02-26.yang
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,192 @@ | |||||||
|  | module ietf-network { | ||||||
|  |   yang-version 1.1; | ||||||
|  |   namespace "urn:ietf:params:xml:ns:yang:ietf-network"; | ||||||
|  |   prefix nw; | ||||||
|  |  | ||||||
|  |   import ietf-inet-types { | ||||||
|  |     prefix inet; | ||||||
|  |     reference | ||||||
|  |       "RFC 6991: Common YANG Data Types"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   organization | ||||||
|  |     "IETF I2RS (Interface to the Routing System) Working Group"; | ||||||
|  |  | ||||||
|  |   contact | ||||||
|  |     "WG Web:    <https://datatracker.ietf.org/wg/i2rs/> | ||||||
|  |      WG List:   <mailto:i2rs@ietf.org> | ||||||
|  |  | ||||||
|  |      Editor:    Alexander Clemm | ||||||
|  |                 <mailto:ludwig@clemm.org> | ||||||
|  |  | ||||||
|  |      Editor:    Jan Medved | ||||||
|  |                 <mailto:jmedved@cisco.com> | ||||||
|  |  | ||||||
|  |      Editor:    Robert Varga | ||||||
|  |                 <mailto:robert.varga@pantheon.tech> | ||||||
|  |  | ||||||
|  |      Editor:    Nitin Bahadur | ||||||
|  |                 <mailto:nitin_bahadur@yahoo.com> | ||||||
|  |  | ||||||
|  |      Editor:    Hariharan Ananthakrishnan | ||||||
|  |                 <mailto:hari@packetdesign.com> | ||||||
|  |  | ||||||
|  |      Editor:    Xufeng Liu | ||||||
|  |                 <mailto:xufeng.liu.ietf@gmail.com>"; | ||||||
|  |   description | ||||||
|  |     "This module defines a common base data model for a collection | ||||||
|  |      of nodes in a network.  Node definitions are further used | ||||||
|  |      in network topologies and inventories. | ||||||
|  |  | ||||||
|  |      Copyright (c) 2018 IETF Trust and the persons identified as | ||||||
|  |      authors of the code.  All rights reserved. | ||||||
|  |  | ||||||
|  |      Redistribution and use in source and binary forms, with or | ||||||
|  |      without modification, is permitted pursuant to, and subject | ||||||
|  |      to the license terms contained in, the Simplified BSD License | ||||||
|  |      set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||||
|  |      Relating to IETF Documents | ||||||
|  |      (https://trustee.ietf.org/license-info). | ||||||
|  |  | ||||||
|  |      This version of this YANG module is part of RFC 8345; | ||||||
|  |      see the RFC itself for full legal notices."; | ||||||
|  |  | ||||||
|  |   revision 2018-02-26 { | ||||||
|  |     description | ||||||
|  |       "Initial revision."; | ||||||
|  |     reference | ||||||
|  |       "RFC 8345: A YANG Data Model for Network Topologies"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef node-id { | ||||||
|  |     type inet:uri; | ||||||
|  |     description | ||||||
|  |       "Identifier for a node.  The precise structure of the node-id | ||||||
|  |        will be up to the implementation.  For example, some | ||||||
|  |        implementations MAY pick a URI that includes the network-id | ||||||
|  |        as part of the path.  The identifier SHOULD be chosen | ||||||
|  |        such that the same node in a real network topology will | ||||||
|  |        always be identified through the same identifier, even if | ||||||
|  |        the data model is instantiated in separate datastores.  An | ||||||
|  |        implementation MAY choose to capture semantics in the | ||||||
|  |        identifier -- for example, to indicate the type of node."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef network-id { | ||||||
|  |     type inet:uri; | ||||||
|  |     description | ||||||
|  |       "Identifier for a network.  The precise structure of the | ||||||
|  |        network-id will be up to the implementation.  The identifier | ||||||
|  |        SHOULD be chosen such that the same network will always be | ||||||
|  |        identified through the same identifier, even if the data model | ||||||
|  |        is instantiated in separate datastores.  An implementation MAY | ||||||
|  |        choose to capture semantics in the identifier -- for example, | ||||||
|  |        to indicate the type of network."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   grouping network-ref { | ||||||
|  |     description | ||||||
|  |       "Contains the information necessary to reference a network -- | ||||||
|  |        for example, an underlay network."; | ||||||
|  |     leaf network-ref { | ||||||
|  |       type leafref { | ||||||
|  |         path "/nw:networks/nw:network/nw:network-id"; | ||||||
|  |       require-instance false; | ||||||
|  |       } | ||||||
|  |       description | ||||||
|  |         "Used to reference a network -- for example, an underlay | ||||||
|  |          network."; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   grouping node-ref { | ||||||
|  |     description | ||||||
|  |       "Contains the information necessary to reference a node."; | ||||||
|  |     leaf node-ref { | ||||||
|  |       type leafref { | ||||||
|  |         path "/nw:networks/nw:network[nw:network-id=current()/../"+ | ||||||
|  |           "network-ref]/nw:node/nw:node-id"; | ||||||
|  |         require-instance false; | ||||||
|  |       } | ||||||
|  |       description | ||||||
|  |         "Used to reference a node. | ||||||
|  |          Nodes are identified relative to the network that | ||||||
|  |          contains them."; | ||||||
|  |     } | ||||||
|  |     uses network-ref; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   container networks { | ||||||
|  |     description | ||||||
|  |       "Serves as a top-level container for a list of networks."; | ||||||
|  |     list network { | ||||||
|  |       key "network-id"; | ||||||
|  |       description | ||||||
|  |         "Describes a network. | ||||||
|  |          A network typically contains an inventory of nodes, | ||||||
|  |          topological information (augmented through the | ||||||
|  |          network-topology data model), and layering information."; | ||||||
|  |       leaf network-id { | ||||||
|  |         type network-id; | ||||||
|  |         description | ||||||
|  |           "Identifies a network."; | ||||||
|  |       } | ||||||
|  |       container network-types { | ||||||
|  |         description | ||||||
|  |           "Serves as an augmentation target. | ||||||
|  |            The network type is indicated through corresponding | ||||||
|  |            presence containers augmented into this container."; | ||||||
|  |       } | ||||||
|  |       list supporting-network { | ||||||
|  |         key "network-ref"; | ||||||
|  |         description | ||||||
|  |           "An underlay network, used to represent layered network | ||||||
|  |            topologies."; | ||||||
|  |         leaf network-ref { | ||||||
|  |           type leafref { | ||||||
|  |             path "/nw:networks/nw:network/nw:network-id"; | ||||||
|  |           require-instance false; | ||||||
|  |           } | ||||||
|  |           description | ||||||
|  |             "References the underlay network."; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       list node { | ||||||
|  |         key "node-id"; | ||||||
|  |         description | ||||||
|  |           "The inventory of nodes of this network."; | ||||||
|  |         leaf node-id { | ||||||
|  |           type node-id; | ||||||
|  |           description | ||||||
|  |             "Uniquely identifies a node within the containing | ||||||
|  |              network."; | ||||||
|  |         } | ||||||
|  |         list supporting-node { | ||||||
|  |           key "network-ref node-ref"; | ||||||
|  |           description | ||||||
|  |             "Represents another node that is in an underlay network | ||||||
|  |              and that supports this node.  Used to represent layering | ||||||
|  |              structure."; | ||||||
|  |           leaf network-ref { | ||||||
|  |             type leafref { | ||||||
|  |               path "../../../nw:supporting-network/nw:network-ref"; | ||||||
|  |             require-instance false; | ||||||
|  |             } | ||||||
|  |             description | ||||||
|  |               "References the underlay network of which the | ||||||
|  |                underlay node is a part."; | ||||||
|  |           } | ||||||
|  |           leaf node-ref { | ||||||
|  |             type leafref { | ||||||
|  |               path "/nw:networks/nw:network/nw:node/nw:node-id"; | ||||||
|  |             require-instance false; | ||||||
|  |             } | ||||||
|  |             description | ||||||
|  |               "References the underlay node itself."; | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										1776
									
								
								gnpy/yang/ext/ietf-optical-impairment-topology@2024-05-21.yang
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1776
									
								
								gnpy/yang/ext/ietf-optical-impairment-topology@2024-05-21.yang
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										771
									
								
								gnpy/yang/ext/ietf-routing-types@2017-12-04.yang
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										771
									
								
								gnpy/yang/ext/ietf-routing-types@2017-12-04.yang
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,771 @@ | |||||||
|  | module ietf-routing-types { | ||||||
|  |   namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types"; | ||||||
|  |   prefix rt-types; | ||||||
|  |  | ||||||
|  |   import ietf-yang-types { | ||||||
|  |     prefix yang; | ||||||
|  |   } | ||||||
|  |   import ietf-inet-types { | ||||||
|  |     prefix inet; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   organization | ||||||
|  |     "IETF RTGWG - Routing Area Working Group"; | ||||||
|  |   contact | ||||||
|  |     "WG Web:   <https://datatracker.ietf.org/wg/rtgwg/> | ||||||
|  |      WG List:  <mailto:rtgwg@ietf.org> | ||||||
|  |  | ||||||
|  |      Editors:  Xufeng Liu | ||||||
|  |                <mailto:Xufeng_Liu@jabail.com> | ||||||
|  |                Yingzhen Qu | ||||||
|  |                <mailto:yingzhen.qu@huawei.com> | ||||||
|  |                Acee Lindem | ||||||
|  |                <mailto:acee@cisco.com> | ||||||
|  |                Christian Hopps | ||||||
|  |                <mailto:chopps@chopps.org> | ||||||
|  |                Lou Berger | ||||||
|  |                <mailto:lberger@labn.com>"; | ||||||
|  |  | ||||||
|  |   description | ||||||
|  |     "This module contains a collection of YANG data types | ||||||
|  |      considered generally useful for routing protocols. | ||||||
|  |  | ||||||
|  |      Copyright (c) 2017 IETF Trust and the persons | ||||||
|  |      identified as authors of the code.  All rights reserved. | ||||||
|  |  | ||||||
|  |      Redistribution and use in source and binary forms, with or | ||||||
|  |      without modification, is permitted pursuant to, and subject | ||||||
|  |      to the license terms contained in, the Simplified BSD License | ||||||
|  |      set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||||
|  |      Relating to IETF Documents | ||||||
|  |      (https://trustee.ietf.org/license-info). | ||||||
|  |  | ||||||
|  |      This version of this YANG module is part of RFC 8294; see | ||||||
|  |      the RFC itself for full legal notices."; | ||||||
|  |    revision 2017-12-04 { | ||||||
|  |      description "Initial revision."; | ||||||
|  |      reference | ||||||
|  |        "RFC 8294: Common YANG Data Types for the Routing Area. | ||||||
|  |         Section 3."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** Identities related to MPLS/GMPLS ***/ | ||||||
|  |  | ||||||
|  |   identity mpls-label-special-purpose-value { | ||||||
|  |     description | ||||||
|  |       "Base identity for deriving identities describing | ||||||
|  |        special-purpose Multiprotocol Label Switching (MPLS) label | ||||||
|  |        values."; | ||||||
|  |     reference | ||||||
|  |       "RFC 7274: Allocating and Retiring Special-Purpose MPLS | ||||||
|  |        Labels."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   identity ipv4-explicit-null-label { | ||||||
|  |     base mpls-label-special-purpose-value; | ||||||
|  |     description | ||||||
|  |       "This identity represents the IPv4 Explicit NULL Label."; | ||||||
|  |     reference | ||||||
|  |       "RFC 3032: MPLS Label Stack Encoding.  Section 2.1."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   identity router-alert-label { | ||||||
|  |     base mpls-label-special-purpose-value; | ||||||
|  |     description | ||||||
|  |       "This identity represents the Router Alert Label."; | ||||||
|  |     reference | ||||||
|  |       "RFC 3032: MPLS Label Stack Encoding.  Section 2.1."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   identity ipv6-explicit-null-label { | ||||||
|  |     base mpls-label-special-purpose-value; | ||||||
|  |     description | ||||||
|  |       "This identity represents the IPv6 Explicit NULL Label."; | ||||||
|  |     reference | ||||||
|  |       "RFC 3032: MPLS Label Stack Encoding.  Section 2.1."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   identity implicit-null-label { | ||||||
|  |     base mpls-label-special-purpose-value; | ||||||
|  |     description | ||||||
|  |       "This identity represents the Implicit NULL Label."; | ||||||
|  |     reference | ||||||
|  |       "RFC 3032: MPLS Label Stack Encoding.  Section 2.1."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   identity entropy-label-indicator { | ||||||
|  |     base mpls-label-special-purpose-value; | ||||||
|  |     description | ||||||
|  |       "This identity represents the Entropy Label Indicator."; | ||||||
|  |     reference | ||||||
|  |       "RFC 6790: The Use of Entropy Labels in MPLS Forwarding. | ||||||
|  |        Sections 3 and 10.1."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   identity gal-label { | ||||||
|  |     base mpls-label-special-purpose-value; | ||||||
|  |     description | ||||||
|  |       "This identity represents the Generic Associated Channel | ||||||
|  |        (G-ACh) Label (GAL)."; | ||||||
|  |     reference | ||||||
|  |       "RFC 5586: MPLS Generic Associated Channel. | ||||||
|  |        Sections 4 and 10."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   identity oam-alert-label { | ||||||
|  |     base mpls-label-special-purpose-value; | ||||||
|  |     description | ||||||
|  |       "This identity represents the OAM Alert Label."; | ||||||
|  |     reference | ||||||
|  |       "RFC 3429: Assignment of the 'OAM Alert Label' for | ||||||
|  |        Multiprotocol Label Switching Architecture (MPLS) | ||||||
|  |        Operation and Maintenance (OAM) Functions. | ||||||
|  |        Sections 3 and 6."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   identity extension-label { | ||||||
|  |     base mpls-label-special-purpose-value; | ||||||
|  |     description | ||||||
|  |       "This identity represents the Extension Label."; | ||||||
|  |     reference | ||||||
|  |       "RFC 7274: Allocating and Retiring Special-Purpose MPLS | ||||||
|  |        Labels.  Sections 3.1 and 5."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** Collection of types related to routing ***/ | ||||||
|  |  | ||||||
|  |   typedef router-id { | ||||||
|  |     type yang:dotted-quad; | ||||||
|  |     description | ||||||
|  |       "A 32-bit number in the dotted-quad format assigned to each | ||||||
|  |        router.  This number uniquely identifies the router within | ||||||
|  |        an Autonomous System."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** Collection of types related to VPNs ***/ | ||||||
|  |  | ||||||
|  |   typedef route-target { | ||||||
|  |     type string { | ||||||
|  |       pattern | ||||||
|  |         '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||||
|  |       +     '6[0-4][0-9]{3}|' | ||||||
|  |       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' | ||||||
|  |       +     '42949672[0-8][0-9]|' | ||||||
|  |       +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' | ||||||
|  |       +     '42949[0-5][0-9]{4}|' | ||||||
|  |       +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' | ||||||
|  |       +     '42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||||
|  |       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' | ||||||
|  |       + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' | ||||||
|  |       +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|' | ||||||
|  |       +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' | ||||||
|  |       +     '655[0-2][0-9]|' | ||||||
|  |       +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' | ||||||
|  |       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||||
|  |       + '(2:(429496729[0-5]|42949672[0-8][0-9]|' | ||||||
|  |       +     '4294967[01][0-9]{2}|' | ||||||
|  |       +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' | ||||||
|  |       +     '4294[0-8][0-9]{5}|' | ||||||
|  |       +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||||
|  |       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' | ||||||
|  |       +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||||
|  |       +     '6[0-4][0-9]{3}|' | ||||||
|  |       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||||
|  |       + '(6(:[a-fA-F0-9]{2}){6})|' | ||||||
|  |       + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' | ||||||
|  |       +     '[0-9a-fA-F]{1,12})'; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     description | ||||||
|  |       "A Route Target is an 8-octet BGP extended community | ||||||
|  |        initially identifying a set of sites in a BGP VPN | ||||||
|  |        (RFC 4364).  However, it has since taken on a more general | ||||||
|  |        role in BGP route filtering.  A Route Target consists of two | ||||||
|  |        or three fields: a 2-octet Type field, an administrator | ||||||
|  |        field, and, optionally, an assigned number field. | ||||||
|  |  | ||||||
|  |        According to the data formats for types 0, 1, 2, and 6 as | ||||||
|  |        defined in RFC 4360, RFC 5668, and RFC 7432, the encoding | ||||||
|  |        pattern is defined as: | ||||||
|  |  | ||||||
|  |        0:2-octet-asn:4-octet-number | ||||||
|  |        1:4-octet-ipv4addr:2-octet-number | ||||||
|  |        2:4-octet-asn:2-octet-number | ||||||
|  |        6:6-octet-mac-address | ||||||
|  |  | ||||||
|  |        Additionally, a generic pattern is defined for future | ||||||
|  |        Route Target types: | ||||||
|  |  | ||||||
|  |        2-octet-other-hex-number:6-octet-hex-number | ||||||
|  |  | ||||||
|  |        Some valid examples are 0:100:100, 1:1.1.1.1:100, | ||||||
|  |        2:1234567890:203, and 6:26:00:08:92:78:00."; | ||||||
|  |     reference | ||||||
|  |       "RFC 4360: BGP Extended Communities Attribute. | ||||||
|  |        RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). | ||||||
|  |        RFC 5668: 4-Octet AS Specific BGP Extended Community. | ||||||
|  |        RFC 7432: BGP MPLS-Based Ethernet VPN."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef ipv6-route-target { | ||||||
|  |     type string { | ||||||
|  |       pattern | ||||||
|  |           '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' | ||||||
|  |           + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' | ||||||
|  |           + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' | ||||||
|  |           + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' | ||||||
|  |           + ':' | ||||||
|  |           + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||||
|  |           + '6[0-4][0-9]{3}|' | ||||||
|  |           + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; | ||||||
|  |       pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | ||||||
|  |           + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' | ||||||
|  |           + ':' | ||||||
|  |           + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||||
|  |           + '6[0-4][0-9]{3}|' | ||||||
|  |           + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "An IPv6 Route Target is a 20-octet BGP IPv6 Address | ||||||
|  |        Specific Extended Community serving the same function | ||||||
|  |        as a standard 8-octet Route Target, except that it only | ||||||
|  |        allows an IPv6 address as the global administrator. | ||||||
|  |        The format is <ipv6-address:2-octet-number>. | ||||||
|  |  | ||||||
|  |        Two valid examples are 2001:db8::1:6544 and | ||||||
|  |        2001:db8::5eb1:791:6b37:17958."; | ||||||
|  |     reference | ||||||
|  |       "RFC 5701: IPv6 Address Specific BGP Extended Community | ||||||
|  |        Attribute."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef route-target-type { | ||||||
|  |     type enumeration { | ||||||
|  |       enum import { | ||||||
|  |         value 0; | ||||||
|  |         description | ||||||
|  |           "The Route Target applies to route import."; | ||||||
|  |       } | ||||||
|  |       enum export { | ||||||
|  |         value 1; | ||||||
|  |         description | ||||||
|  |           "The Route Target applies to route export."; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       enum both { | ||||||
|  |         value 2; | ||||||
|  |         description | ||||||
|  |           "The Route Target applies to both route import and | ||||||
|  |            route export."; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "Indicates the role a Route Target takes in route filtering."; | ||||||
|  |     reference | ||||||
|  |       "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef route-distinguisher { | ||||||
|  |     type string { | ||||||
|  |       pattern | ||||||
|  |         '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||||
|  |       +     '6[0-4][0-9]{3}|' | ||||||
|  |       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' | ||||||
|  |       +     '42949672[0-8][0-9]|' | ||||||
|  |       +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' | ||||||
|  |       +     '42949[0-5][0-9]{4}|' | ||||||
|  |       +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' | ||||||
|  |       +     '42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||||
|  |       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' | ||||||
|  |       + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' | ||||||
|  |       +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|' | ||||||
|  |       +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' | ||||||
|  |       +     '655[0-2][0-9]|' | ||||||
|  |       +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' | ||||||
|  |       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||||
|  |       + '(2:(429496729[0-5]|42949672[0-8][0-9]|' | ||||||
|  |       +     '4294967[01][0-9]{2}|' | ||||||
|  |       +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' | ||||||
|  |       +     '4294[0-8][0-9]{5}|' | ||||||
|  |       +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||||
|  |       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' | ||||||
|  |       +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||||
|  |       +     '6[0-4][0-9]{3}|' | ||||||
|  |       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||||
|  |       + '(6(:[a-fA-F0-9]{2}){6})|' | ||||||
|  |       + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' | ||||||
|  |       +     '[0-9a-fA-F]{1,12})'; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     description | ||||||
|  |       "A Route Distinguisher is an 8-octet value used to | ||||||
|  |        distinguish routes from different BGP VPNs (RFC 4364). | ||||||
|  |        A Route Distinguisher will have the same format as a | ||||||
|  |        Route Target as per RFC 4360 and will consist of | ||||||
|  |        two or three fields: a 2-octet Type field, an administrator | ||||||
|  |        field, and, optionally, an assigned number field. | ||||||
|  |  | ||||||
|  |        According to the data formats for types 0, 1, 2, and 6 as | ||||||
|  |        defined in RFC 4360, RFC 5668, and RFC 7432, the encoding | ||||||
|  |        pattern is defined as: | ||||||
|  |  | ||||||
|  |        0:2-octet-asn:4-octet-number | ||||||
|  |        1:4-octet-ipv4addr:2-octet-number | ||||||
|  |        2:4-octet-asn:2-octet-number | ||||||
|  |        6:6-octet-mac-address | ||||||
|  |  | ||||||
|  |        Additionally, a generic pattern is defined for future | ||||||
|  |        route discriminator types: | ||||||
|  |  | ||||||
|  |        2-octet-other-hex-number:6-octet-hex-number | ||||||
|  |  | ||||||
|  |        Some valid examples are 0:100:100, 1:1.1.1.1:100, | ||||||
|  |        2:1234567890:203, and 6:26:00:08:92:78:00."; | ||||||
|  |     reference | ||||||
|  |       "RFC 4360: BGP Extended Communities Attribute. | ||||||
|  |        RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). | ||||||
|  |        RFC 5668: 4-Octet AS Specific BGP Extended Community. | ||||||
|  |        RFC 7432: BGP MPLS-Based Ethernet VPN."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef route-origin { | ||||||
|  |     type string { | ||||||
|  |       pattern | ||||||
|  |         '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||||
|  |       +     '6[0-4][0-9]{3}|' | ||||||
|  |       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' | ||||||
|  |       +     '42949672[0-8][0-9]|' | ||||||
|  |       +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' | ||||||
|  |       +     '42949[0-5][0-9]{4}|' | ||||||
|  |       +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' | ||||||
|  |       +     '42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||||
|  |       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' | ||||||
|  |       + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' | ||||||
|  |       +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|' | ||||||
|  |       +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' | ||||||
|  |       +     '655[0-2][0-9]|' | ||||||
|  |       +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' | ||||||
|  |       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||||
|  |       + '(2:(429496729[0-5]|42949672[0-8][0-9]|' | ||||||
|  |       +     '4294967[01][0-9]{2}|' | ||||||
|  |       +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' | ||||||
|  |       +     '4294[0-8][0-9]{5}|' | ||||||
|  |       +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' | ||||||
|  |       +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' | ||||||
|  |       +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||||
|  |       +     '6[0-4][0-9]{3}|' | ||||||
|  |       +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' | ||||||
|  |       + '(6(:[a-fA-F0-9]{2}){6})|' | ||||||
|  |       + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' | ||||||
|  |       +    '[0-9a-fA-F]{1,12})'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "A Route Origin is an 8-octet BGP extended community | ||||||
|  |        identifying the set of sites where the BGP route | ||||||
|  |        originated (RFC 4364).  A Route Origin will have the same | ||||||
|  |        format as a Route Target as per RFC 4360 and will consist | ||||||
|  |        of two or three fields: a 2-octet Type field, an | ||||||
|  |        administrator field, and, optionally, an assigned number | ||||||
|  |        field. | ||||||
|  |  | ||||||
|  |        According to the data formats for types 0, 1, 2, and 6 as | ||||||
|  |        defined in RFC 4360, RFC 5668, and RFC 7432, the encoding | ||||||
|  |        pattern is defined as: | ||||||
|  |  | ||||||
|  |        0:2-octet-asn:4-octet-number | ||||||
|  |        1:4-octet-ipv4addr:2-octet-number | ||||||
|  |        2:4-octet-asn:2-octet-number | ||||||
|  |        6:6-octet-mac-address | ||||||
|  |        Additionally, a generic pattern is defined for future | ||||||
|  |        Route Origin types: | ||||||
|  |  | ||||||
|  |        2-octet-other-hex-number:6-octet-hex-number | ||||||
|  |  | ||||||
|  |        Some valid examples are 0:100:100, 1:1.1.1.1:100, | ||||||
|  |        2:1234567890:203, and 6:26:00:08:92:78:00."; | ||||||
|  |     reference | ||||||
|  |       "RFC 4360: BGP Extended Communities Attribute. | ||||||
|  |        RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). | ||||||
|  |        RFC 5668: 4-Octet AS Specific BGP Extended Community. | ||||||
|  |        RFC 7432: BGP MPLS-Based Ethernet VPN."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef ipv6-route-origin { | ||||||
|  |     type string { | ||||||
|  |       pattern | ||||||
|  |           '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' | ||||||
|  |           + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' | ||||||
|  |           + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' | ||||||
|  |           + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' | ||||||
|  |           + ':' | ||||||
|  |           + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||||
|  |           + '6[0-4][0-9]{3}|' | ||||||
|  |           + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; | ||||||
|  |       pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' | ||||||
|  |           + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' | ||||||
|  |           + ':' | ||||||
|  |           + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' | ||||||
|  |           + '6[0-4][0-9]{3}|' | ||||||
|  |           + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "An IPv6 Route Origin is a 20-octet BGP IPv6 Address | ||||||
|  |        Specific Extended Community serving the same function | ||||||
|  |        as a standard 8-octet route, except that it only allows | ||||||
|  |        an IPv6 address as the global administrator.  The format | ||||||
|  |        is <ipv6-address:2-octet-number>. | ||||||
|  |  | ||||||
|  |        Two valid examples are 2001:db8::1:6544 and | ||||||
|  |        2001:db8::5eb1:791:6b37:17958."; | ||||||
|  |     reference | ||||||
|  |       "RFC 5701: IPv6 Address Specific BGP Extended Community | ||||||
|  |        Attribute."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** Collection of types common to multicast ***/ | ||||||
|  |  | ||||||
|  |   typedef ipv4-multicast-group-address { | ||||||
|  |     type inet:ipv4-address { | ||||||
|  |       pattern '(2((2[4-9])|(3[0-9]))\.).*'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "This type represents an IPv4 multicast group address, | ||||||
|  |        which is in the range of 224.0.0.0 to 239.255.255.255."; | ||||||
|  |     reference | ||||||
|  |       "RFC 1112: Host Extensions for IP Multicasting."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef ipv6-multicast-group-address { | ||||||
|  |     type inet:ipv6-address { | ||||||
|  |       pattern '(([fF]{2}[0-9a-fA-F]{2}):).*'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "This type represents an IPv6 multicast group address, | ||||||
|  |        which is in the range of ff00::/8."; | ||||||
|  |     reference | ||||||
|  |       "RFC 4291: IP Version 6 Addressing Architecture.  Section 2.7. | ||||||
|  |        RFC 7346: IPv6 Multicast Address Scopes."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef ip-multicast-group-address { | ||||||
|  |     type union { | ||||||
|  |       type ipv4-multicast-group-address; | ||||||
|  |       type ipv6-multicast-group-address; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "This type represents a version-neutral IP multicast group | ||||||
|  |        address.  The format of the textual representation implies | ||||||
|  |        the IP version."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef ipv4-multicast-source-address { | ||||||
|  |     type union { | ||||||
|  |       type enumeration { | ||||||
|  |         enum * { | ||||||
|  |           description | ||||||
|  |             "Any source address."; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       type inet:ipv4-address; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "Multicast source IPv4 address type."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef ipv6-multicast-source-address { | ||||||
|  |     type union { | ||||||
|  |       type enumeration { | ||||||
|  |         enum * { | ||||||
|  |           description | ||||||
|  |             "Any source address."; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       type inet:ipv6-address; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "Multicast source IPv6 address type."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** Collection of types common to protocols ***/ | ||||||
|  |  | ||||||
|  |   typedef bandwidth-ieee-float32 { | ||||||
|  |     type string { | ||||||
|  |       pattern | ||||||
|  |         '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' | ||||||
|  |       + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' | ||||||
|  |       + '1[01][0-9]|0?[0-9]?[0-9])?)'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "Bandwidth in IEEE 754 floating-point 32-bit binary format: | ||||||
|  |        (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), | ||||||
|  |        where Exponent uses 8 bits and Fraction uses 23 bits. | ||||||
|  |        The units are octets per second. | ||||||
|  |        The encoding format is the external hexadecimal-significant | ||||||
|  |        character sequences specified in IEEE 754 and ISO/IEC C99. | ||||||
|  |        The format is restricted to be normalized, non-negative, and | ||||||
|  |        non-fraction: 0x1.hhhhhhp{+}d, 0X1.HHHHHHP{+}D, or 0x0p0, | ||||||
|  |        where 'h' and 'H' are hexadecimal digits and 'd' and 'D' are | ||||||
|  |        integers in the range of [0..127]. | ||||||
|  |        When six hexadecimal digits are used for 'hhhhhh' or | ||||||
|  |        'HHHHHH', the least significant digit must be an even | ||||||
|  |        number.  'x' and 'X' indicate hexadecimal; 'p' and 'P' | ||||||
|  |        indicate a power of two.  Some examples are 0x0p0, 0x1p10, | ||||||
|  |        and 0x1.abcde2p+20."; | ||||||
|  |     reference | ||||||
|  |       "IEEE Std 754-2008: IEEE Standard for Floating-Point | ||||||
|  |        Arithmetic. | ||||||
|  |        ISO/IEC C99: Information technology - Programming | ||||||
|  |        Languages - C."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef link-access-type { | ||||||
|  |     type enumeration { | ||||||
|  |       enum broadcast { | ||||||
|  |         description | ||||||
|  |           "Specify broadcast multi-access network."; | ||||||
|  |       } | ||||||
|  |       enum non-broadcast-multiaccess { | ||||||
|  |         description | ||||||
|  |           "Specify Non-Broadcast Multi-Access (NBMA) network."; | ||||||
|  |       } | ||||||
|  |       enum point-to-multipoint { | ||||||
|  |         description | ||||||
|  |           "Specify point-to-multipoint network."; | ||||||
|  |       } | ||||||
|  |       enum point-to-point { | ||||||
|  |         description | ||||||
|  |           "Specify point-to-point network."; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "Link access type."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef timer-multiplier { | ||||||
|  |     type uint8; | ||||||
|  |     description | ||||||
|  |       "The number of timer value intervals that should be | ||||||
|  |        interpreted as a failure."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef timer-value-seconds16 { | ||||||
|  |     type union { | ||||||
|  |       type uint16 { | ||||||
|  |         range "1..65535"; | ||||||
|  |       } | ||||||
|  |       type enumeration { | ||||||
|  |         enum infinity { | ||||||
|  |           description | ||||||
|  |             "The timer is set to infinity."; | ||||||
|  |         } | ||||||
|  |         enum not-set { | ||||||
|  |           description | ||||||
|  |             "The timer is not set."; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     units "seconds"; | ||||||
|  |     description | ||||||
|  |       "Timer value type, in seconds (16-bit range)."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef timer-value-seconds32 { | ||||||
|  |     type union { | ||||||
|  |       type uint32 { | ||||||
|  |         range "1..4294967295"; | ||||||
|  |       } | ||||||
|  |       type enumeration { | ||||||
|  |         enum infinity { | ||||||
|  |           description | ||||||
|  |             "The timer is set to infinity."; | ||||||
|  |         } | ||||||
|  |         enum not-set { | ||||||
|  |           description | ||||||
|  |             "The timer is not set."; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     units "seconds"; | ||||||
|  |     description | ||||||
|  |       "Timer value type, in seconds (32-bit range)."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef timer-value-milliseconds { | ||||||
|  |     type union { | ||||||
|  |       type uint32 { | ||||||
|  |         range "1..4294967295"; | ||||||
|  |       } | ||||||
|  |       type enumeration { | ||||||
|  |         enum infinity { | ||||||
|  |           description | ||||||
|  |             "The timer is set to infinity."; | ||||||
|  |         } | ||||||
|  |         enum not-set { | ||||||
|  |           description | ||||||
|  |             "The timer is not set."; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     units "milliseconds"; | ||||||
|  |     description | ||||||
|  |       "Timer value type, in milliseconds."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef percentage { | ||||||
|  |     type uint8 { | ||||||
|  |       range "0..100"; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "Integer indicating a percentage value."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef timeticks64 { | ||||||
|  |     type uint64; | ||||||
|  |     description | ||||||
|  |       "This type is based on the timeticks type defined in | ||||||
|  |        RFC 6991, but with 64-bit width.  It represents the time, | ||||||
|  |        modulo 2^64, in hundredths of a second between two epochs."; | ||||||
|  |     reference | ||||||
|  |       "RFC 6991: Common YANG Data Types."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef uint24 { | ||||||
|  |     type uint32 { | ||||||
|  |       range "0..16777215"; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "24-bit unsigned integer."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** Collection of types related to MPLS/GMPLS ***/ | ||||||
|  |  | ||||||
|  |   typedef generalized-label { | ||||||
|  |     type binary; | ||||||
|  |     description | ||||||
|  |       "Generalized Label.  Nodes sending and receiving the | ||||||
|  |        Generalized Label are aware of the link-specific | ||||||
|  |        label context and type."; | ||||||
|  |     reference | ||||||
|  |       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) | ||||||
|  |        Signaling Functional Description.  Section 3.2."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef mpls-label-special-purpose { | ||||||
|  |     type identityref { | ||||||
|  |       base mpls-label-special-purpose-value; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "This type represents the special-purpose MPLS label values."; | ||||||
|  |     reference | ||||||
|  |       "RFC 3032: MPLS Label Stack Encoding. | ||||||
|  |        RFC 7274: Allocating and Retiring Special-Purpose MPLS | ||||||
|  |        Labels."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef mpls-label-general-use { | ||||||
|  |     type uint32 { | ||||||
|  |       range "16..1048575"; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "The 20-bit label value in an MPLS label stack as specified | ||||||
|  |        in RFC 3032.  This label value does not include the | ||||||
|  |        encodings of Traffic Class and TTL (Time to Live). | ||||||
|  |        The label range specified by this type is for general use, | ||||||
|  |        with special-purpose MPLS label values excluded."; | ||||||
|  |     reference | ||||||
|  |       "RFC 3032: MPLS Label Stack Encoding."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef mpls-label { | ||||||
|  |     type union { | ||||||
|  |       type mpls-label-special-purpose; | ||||||
|  |       type mpls-label-general-use; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "The 20-bit label value in an MPLS label stack as specified | ||||||
|  |        in RFC 3032.  This label value does not include the | ||||||
|  |        encodings of Traffic Class and TTL."; | ||||||
|  |     reference | ||||||
|  |       "RFC 3032: MPLS Label Stack Encoding."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** Groupings **/ | ||||||
|  |  | ||||||
|  |   grouping mpls-label-stack { | ||||||
|  |     description | ||||||
|  |       "This grouping specifies an MPLS label stack.  The label | ||||||
|  |        stack is encoded as a list of label stack entries.  The | ||||||
|  |        list key is an identifier that indicates the relative | ||||||
|  |        ordering of each entry, with the lowest-value identifier | ||||||
|  |        corresponding to the top of the label stack."; | ||||||
|  |     container mpls-label-stack { | ||||||
|  |       description | ||||||
|  |         "Container for a list of MPLS label stack entries."; | ||||||
|  |       list entry { | ||||||
|  |         key "id"; | ||||||
|  |         description | ||||||
|  |           "List of MPLS label stack entries."; | ||||||
|  |         leaf id { | ||||||
|  |           type uint8; | ||||||
|  |           description | ||||||
|  |             "Identifies the entry in a sequence of MPLS label | ||||||
|  |              stack entries.  An entry with a smaller identifier | ||||||
|  |              value precedes an entry with a larger identifier | ||||||
|  |              value in the label stack.  The value of this ID has | ||||||
|  |              no semantic meaning other than relative ordering | ||||||
|  |              and referencing the entry."; | ||||||
|  |         } | ||||||
|  |         leaf label { | ||||||
|  |           type rt-types:mpls-label; | ||||||
|  |           description | ||||||
|  |             "Label value."; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         leaf ttl { | ||||||
|  |           type uint8; | ||||||
|  |           description | ||||||
|  |             "Time to Live (TTL)."; | ||||||
|  |           reference | ||||||
|  |             "RFC 3032: MPLS Label Stack Encoding."; | ||||||
|  |         } | ||||||
|  |         leaf traffic-class { | ||||||
|  |           type uint8 { | ||||||
|  |             range "0..7"; | ||||||
|  |           } | ||||||
|  |           description | ||||||
|  |             "Traffic Class (TC)."; | ||||||
|  |           reference | ||||||
|  |             "RFC 5462: Multiprotocol Label Switching (MPLS) Label | ||||||
|  |              Stack Entry: 'EXP' Field Renamed to 'Traffic Class' | ||||||
|  |              Field."; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   grouping vpn-route-targets { | ||||||
|  |     description | ||||||
|  |       "A grouping that specifies Route Target import-export rules | ||||||
|  |        used in BGP-enabled VPNs."; | ||||||
|  |     reference | ||||||
|  |       "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). | ||||||
|  |        RFC 4664: Framework for Layer 2 Virtual Private Networks | ||||||
|  |        (L2VPNs)."; | ||||||
|  |     list vpn-target { | ||||||
|  |       key "route-target"; | ||||||
|  |       description | ||||||
|  |         "List of Route Targets."; | ||||||
|  |       leaf route-target { | ||||||
|  |         type rt-types:route-target; | ||||||
|  |         description | ||||||
|  |           "Route Target value."; | ||||||
|  |       } | ||||||
|  |       leaf route-target-type { | ||||||
|  |         type rt-types:route-target-type; | ||||||
|  |         mandatory true; | ||||||
|  |         description | ||||||
|  |           "Import/export type of the Route Target."; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										1952
									
								
								gnpy/yang/ext/ietf-te-topology@2020-08-06.yang
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1952
									
								
								gnpy/yang/ext/ietf-te-topology@2020-08-06.yang
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3458
									
								
								gnpy/yang/ext/ietf-te-types@2022-10-21.yang
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3458
									
								
								gnpy/yang/ext/ietf-te-types@2022-10-21.yang
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										474
									
								
								gnpy/yang/ext/ietf-yang-types@2013-07-15.yang
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										474
									
								
								gnpy/yang/ext/ietf-yang-types@2013-07-15.yang
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,474 @@ | |||||||
|  | module ietf-yang-types { | ||||||
|  |  | ||||||
|  |   namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types"; | ||||||
|  |   prefix "yang"; | ||||||
|  |  | ||||||
|  |   organization | ||||||
|  |    "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | ||||||
|  |  | ||||||
|  |   contact | ||||||
|  |    "WG Web:   <http://tools.ietf.org/wg/netmod/> | ||||||
|  |     WG List:  <mailto:netmod@ietf.org> | ||||||
|  |  | ||||||
|  |     WG Chair: David Kessens | ||||||
|  |               <mailto:david.kessens@nsn.com> | ||||||
|  |  | ||||||
|  |     WG Chair: Juergen Schoenwaelder | ||||||
|  |               <mailto:j.schoenwaelder@jacobs-university.de> | ||||||
|  |  | ||||||
|  |     Editor:   Juergen Schoenwaelder | ||||||
|  |               <mailto:j.schoenwaelder@jacobs-university.de>"; | ||||||
|  |  | ||||||
|  |   description | ||||||
|  |    "This module contains a collection of generally useful derived | ||||||
|  |     YANG data types. | ||||||
|  |  | ||||||
|  |     Copyright (c) 2013 IETF Trust and the persons identified as | ||||||
|  |     authors of the code.  All rights reserved. | ||||||
|  |  | ||||||
|  |     Redistribution and use in source and binary forms, with or | ||||||
|  |     without modification, is permitted pursuant to, and subject | ||||||
|  |     to the license terms contained in, the Simplified BSD License | ||||||
|  |     set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||||
|  |     Relating to IETF Documents | ||||||
|  |     (http://trustee.ietf.org/license-info). | ||||||
|  |  | ||||||
|  |     This version of this YANG module is part of RFC 6991; see | ||||||
|  |     the RFC itself for full legal notices."; | ||||||
|  |  | ||||||
|  |   revision 2013-07-15 { | ||||||
|  |     description | ||||||
|  |      "This revision adds the following new data types: | ||||||
|  |       - yang-identifier | ||||||
|  |       - hex-string | ||||||
|  |       - uuid | ||||||
|  |       - dotted-quad"; | ||||||
|  |     reference | ||||||
|  |      "RFC 6991: Common YANG Data Types"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   revision 2010-09-24 { | ||||||
|  |     description | ||||||
|  |      "Initial revision."; | ||||||
|  |     reference | ||||||
|  |      "RFC 6021: Common YANG Data Types"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** collection of counter and gauge types ***/ | ||||||
|  |  | ||||||
|  |   typedef counter32 { | ||||||
|  |     type uint32; | ||||||
|  |     description | ||||||
|  |      "The counter32 type represents a non-negative integer | ||||||
|  |       that monotonically increases until it reaches a | ||||||
|  |       maximum value of 2^32-1 (4294967295 decimal), when it | ||||||
|  |       wraps around and starts increasing again from zero. | ||||||
|  |  | ||||||
|  |       Counters have no defined 'initial' value, and thus, a | ||||||
|  |       single value of a counter has (in general) no information | ||||||
|  |       content.  Discontinuities in the monotonically increasing | ||||||
|  |       value normally occur at re-initialization of the | ||||||
|  |       management system, and at other times as specified in the | ||||||
|  |       description of a schema node using this type.  If such | ||||||
|  |       other times can occur, for example, the creation of | ||||||
|  |       a schema node of type counter32 at times other than | ||||||
|  |       re-initialization, then a corresponding schema node | ||||||
|  |       should be defined, with an appropriate type, to indicate | ||||||
|  |       the last discontinuity. | ||||||
|  |  | ||||||
|  |       The counter32 type should not be used for configuration | ||||||
|  |       schema nodes.  A default statement SHOULD NOT be used in | ||||||
|  |       combination with the type counter32. | ||||||
|  |  | ||||||
|  |       In the value set and its semantics, this type is equivalent | ||||||
|  |       to the Counter32 type of the SMIv2."; | ||||||
|  |     reference | ||||||
|  |      "RFC 2578: Structure of Management Information Version 2 | ||||||
|  |                 (SMIv2)"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef zero-based-counter32 { | ||||||
|  |     type yang:counter32; | ||||||
|  |     default "0"; | ||||||
|  |     description | ||||||
|  |      "The zero-based-counter32 type represents a counter32 | ||||||
|  |       that has the defined 'initial' value zero. | ||||||
|  |  | ||||||
|  |       A schema node of this type will be set to zero (0) on creation | ||||||
|  |       and will thereafter increase monotonically until it reaches | ||||||
|  |       a maximum value of 2^32-1 (4294967295 decimal), when it | ||||||
|  |       wraps around and starts increasing again from zero. | ||||||
|  |  | ||||||
|  |       Provided that an application discovers a new schema node | ||||||
|  |       of this type within the minimum time to wrap, it can use the | ||||||
|  |       'initial' value as a delta.  It is important for a management | ||||||
|  |       station to be aware of this minimum time and the actual time | ||||||
|  |       between polls, and to discard data if the actual time is too | ||||||
|  |       long or there is no defined minimum time. | ||||||
|  |  | ||||||
|  |       In the value set and its semantics, this type is equivalent | ||||||
|  |       to the ZeroBasedCounter32 textual convention of the SMIv2."; | ||||||
|  |     reference | ||||||
|  |       "RFC 4502: Remote Network Monitoring Management Information | ||||||
|  |                  Base Version 2"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef counter64 { | ||||||
|  |     type uint64; | ||||||
|  |     description | ||||||
|  |      "The counter64 type represents a non-negative integer | ||||||
|  |       that monotonically increases until it reaches a | ||||||
|  |       maximum value of 2^64-1 (18446744073709551615 decimal), | ||||||
|  |       when it wraps around and starts increasing again from zero. | ||||||
|  |  | ||||||
|  |       Counters have no defined 'initial' value, and thus, a | ||||||
|  |       single value of a counter has (in general) no information | ||||||
|  |       content.  Discontinuities in the monotonically increasing | ||||||
|  |       value normally occur at re-initialization of the | ||||||
|  |       management system, and at other times as specified in the | ||||||
|  |       description of a schema node using this type.  If such | ||||||
|  |       other times can occur, for example, the creation of | ||||||
|  |       a schema node of type counter64 at times other than | ||||||
|  |       re-initialization, then a corresponding schema node | ||||||
|  |       should be defined, with an appropriate type, to indicate | ||||||
|  |       the last discontinuity. | ||||||
|  |  | ||||||
|  |       The counter64 type should not be used for configuration | ||||||
|  |       schema nodes.  A default statement SHOULD NOT be used in | ||||||
|  |       combination with the type counter64. | ||||||
|  |  | ||||||
|  |       In the value set and its semantics, this type is equivalent | ||||||
|  |       to the Counter64 type of the SMIv2."; | ||||||
|  |     reference | ||||||
|  |      "RFC 2578: Structure of Management Information Version 2 | ||||||
|  |                 (SMIv2)"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef zero-based-counter64 { | ||||||
|  |     type yang:counter64; | ||||||
|  |     default "0"; | ||||||
|  |     description | ||||||
|  |      "The zero-based-counter64 type represents a counter64 that | ||||||
|  |       has the defined 'initial' value zero. | ||||||
|  |  | ||||||
|  |       A schema node of this type will be set to zero (0) on creation | ||||||
|  |       and will thereafter increase monotonically until it reaches | ||||||
|  |       a maximum value of 2^64-1 (18446744073709551615 decimal), | ||||||
|  |       when it wraps around and starts increasing again from zero. | ||||||
|  |  | ||||||
|  |       Provided that an application discovers a new schema node | ||||||
|  |       of this type within the minimum time to wrap, it can use the | ||||||
|  |       'initial' value as a delta.  It is important for a management | ||||||
|  |       station to be aware of this minimum time and the actual time | ||||||
|  |       between polls, and to discard data if the actual time is too | ||||||
|  |       long or there is no defined minimum time. | ||||||
|  |  | ||||||
|  |       In the value set and its semantics, this type is equivalent | ||||||
|  |       to the ZeroBasedCounter64 textual convention of the SMIv2."; | ||||||
|  |     reference | ||||||
|  |      "RFC 2856: Textual Conventions for Additional High Capacity | ||||||
|  |                 Data Types"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef gauge32 { | ||||||
|  |     type uint32; | ||||||
|  |     description | ||||||
|  |      "The gauge32 type represents a non-negative integer, which | ||||||
|  |       may increase or decrease, but shall never exceed a maximum | ||||||
|  |       value, nor fall below a minimum value.  The maximum value | ||||||
|  |       cannot be greater than 2^32-1 (4294967295 decimal), and | ||||||
|  |       the minimum value cannot be smaller than 0.  The value of | ||||||
|  |       a gauge32 has its maximum value whenever the information | ||||||
|  |       being modeled is greater than or equal to its maximum | ||||||
|  |       value, and has its minimum value whenever the information | ||||||
|  |       being modeled is smaller than or equal to its minimum value. | ||||||
|  |       If the information being modeled subsequently decreases | ||||||
|  |       below (increases above) the maximum (minimum) value, the | ||||||
|  |       gauge32 also decreases (increases). | ||||||
|  |  | ||||||
|  |       In the value set and its semantics, this type is equivalent | ||||||
|  |       to the Gauge32 type of the SMIv2."; | ||||||
|  |     reference | ||||||
|  |      "RFC 2578: Structure of Management Information Version 2 | ||||||
|  |                 (SMIv2)"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef gauge64 { | ||||||
|  |     type uint64; | ||||||
|  |     description | ||||||
|  |      "The gauge64 type represents a non-negative integer, which | ||||||
|  |       may increase or decrease, but shall never exceed a maximum | ||||||
|  |       value, nor fall below a minimum value.  The maximum value | ||||||
|  |       cannot be greater than 2^64-1 (18446744073709551615), and | ||||||
|  |       the minimum value cannot be smaller than 0.  The value of | ||||||
|  |       a gauge64 has its maximum value whenever the information | ||||||
|  |       being modeled is greater than or equal to its maximum | ||||||
|  |       value, and has its minimum value whenever the information | ||||||
|  |       being modeled is smaller than or equal to its minimum value. | ||||||
|  |       If the information being modeled subsequently decreases | ||||||
|  |       below (increases above) the maximum (minimum) value, the | ||||||
|  |       gauge64 also decreases (increases). | ||||||
|  |  | ||||||
|  |       In the value set and its semantics, this type is equivalent | ||||||
|  |       to the CounterBasedGauge64 SMIv2 textual convention defined | ||||||
|  |       in RFC 2856"; | ||||||
|  |     reference | ||||||
|  |      "RFC 2856: Textual Conventions for Additional High Capacity | ||||||
|  |                 Data Types"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** collection of identifier-related types ***/ | ||||||
|  |  | ||||||
|  |   typedef object-identifier { | ||||||
|  |     type string { | ||||||
|  |       pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))' | ||||||
|  |             + '(\.(0|([1-9]\d*)))*'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |      "The object-identifier type represents administratively | ||||||
|  |       assigned names in a registration-hierarchical-name tree. | ||||||
|  |  | ||||||
|  |       Values of this type are denoted as a sequence of numerical | ||||||
|  |       non-negative sub-identifier values.  Each sub-identifier | ||||||
|  |       value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers | ||||||
|  |       are separated by single dots and without any intermediate | ||||||
|  |       whitespace. | ||||||
|  |  | ||||||
|  |       The ASN.1 standard restricts the value space of the first | ||||||
|  |       sub-identifier to 0, 1, or 2.  Furthermore, the value space | ||||||
|  |       of the second sub-identifier is restricted to the range | ||||||
|  |       0 to 39 if the first sub-identifier is 0 or 1.  Finally, | ||||||
|  |       the ASN.1 standard requires that an object identifier | ||||||
|  |       has always at least two sub-identifiers.  The pattern | ||||||
|  |       captures these restrictions. | ||||||
|  |  | ||||||
|  |       Although the number of sub-identifiers is not limited, | ||||||
|  |       module designers should realize that there may be | ||||||
|  |       implementations that stick with the SMIv2 limit of 128 | ||||||
|  |       sub-identifiers. | ||||||
|  |  | ||||||
|  |       This type is a superset of the SMIv2 OBJECT IDENTIFIER type | ||||||
|  |       since it is not restricted to 128 sub-identifiers.  Hence, | ||||||
|  |       this type SHOULD NOT be used to represent the SMIv2 OBJECT | ||||||
|  |       IDENTIFIER type; the object-identifier-128 type SHOULD be | ||||||
|  |       used instead."; | ||||||
|  |     reference | ||||||
|  |      "ISO9834-1: Information technology -- Open Systems | ||||||
|  |       Interconnection -- Procedures for the operation of OSI | ||||||
|  |       Registration Authorities: General procedures and top | ||||||
|  |       arcs of the ASN.1 Object Identifier tree"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef object-identifier-128 { | ||||||
|  |     type object-identifier { | ||||||
|  |       pattern '\d*(\.\d*){1,127}'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |      "This type represents object-identifiers restricted to 128 | ||||||
|  |       sub-identifiers. | ||||||
|  |  | ||||||
|  |       In the value set and its semantics, this type is equivalent | ||||||
|  |       to the OBJECT IDENTIFIER type of the SMIv2."; | ||||||
|  |     reference | ||||||
|  |      "RFC 2578: Structure of Management Information Version 2 | ||||||
|  |                 (SMIv2)"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef yang-identifier { | ||||||
|  |     type string { | ||||||
|  |       length "1..max"; | ||||||
|  |       pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; | ||||||
|  |       pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "A YANG identifier string as defined by the 'identifier' | ||||||
|  |        rule in Section 12 of RFC 6020.  An identifier must | ||||||
|  |        start with an alphabetic character or an underscore | ||||||
|  |        followed by an arbitrary sequence of alphabetic or | ||||||
|  |        numeric characters, underscores, hyphens, or dots. | ||||||
|  |  | ||||||
|  |        A YANG identifier MUST NOT start with any possible | ||||||
|  |        combination of the lowercase or uppercase character | ||||||
|  |        sequence 'xml'."; | ||||||
|  |     reference | ||||||
|  |       "RFC 6020: YANG - A Data Modeling Language for the Network | ||||||
|  |                  Configuration Protocol (NETCONF)"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** collection of types related to date and time***/ | ||||||
|  |  | ||||||
|  |   typedef date-and-time { | ||||||
|  |     type string { | ||||||
|  |       pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?' | ||||||
|  |             + '(Z|[\+\-]\d{2}:\d{2})'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |      "The date-and-time type is a profile of the ISO 8601 | ||||||
|  |       standard for representation of dates and times using the | ||||||
|  |       Gregorian calendar.  The profile is defined by the | ||||||
|  |       date-time production in Section 5.6 of RFC 3339. | ||||||
|  |  | ||||||
|  |       The date-and-time type is compatible with the dateTime XML | ||||||
|  |       schema type with the following notable exceptions: | ||||||
|  |  | ||||||
|  |       (a) The date-and-time type does not allow negative years. | ||||||
|  |  | ||||||
|  |       (b) The date-and-time time-offset -00:00 indicates an unknown | ||||||
|  |           time zone (see RFC 3339) while -00:00 and +00:00 and Z | ||||||
|  |           all represent the same time zone in dateTime. | ||||||
|  |  | ||||||
|  |       (c) The canonical format (see below) of data-and-time values | ||||||
|  |           differs from the canonical format used by the dateTime XML | ||||||
|  |           schema type, which requires all times to be in UTC using | ||||||
|  |           the time-offset 'Z'. | ||||||
|  |  | ||||||
|  |       This type is not equivalent to the DateAndTime textual | ||||||
|  |       convention of the SMIv2 since RFC 3339 uses a different | ||||||
|  |       separator between full-date and full-time and provides | ||||||
|  |       higher resolution of time-secfrac. | ||||||
|  |  | ||||||
|  |       The canonical format for date-and-time values with a known time | ||||||
|  |       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 offset to UTC time will cause date-and-time values | ||||||
|  |       to change accordingly.  Such changes might happen periodically | ||||||
|  |       in case a server follows automatically daylight saving time | ||||||
|  |       (DST) time zone offset changes.  The canonical format for | ||||||
|  |       date-and-time values with an unknown time zone (usually | ||||||
|  |       referring to the notion of local time) uses the time-offset | ||||||
|  |       -00:00."; | ||||||
|  |     reference | ||||||
|  |      "RFC 3339: Date and Time on the Internet: Timestamps | ||||||
|  |       RFC 2579: Textual Conventions for SMIv2 | ||||||
|  |       XSD-TYPES: XML Schema Part 2: Datatypes Second Edition"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef timeticks { | ||||||
|  |     type uint32; | ||||||
|  |     description | ||||||
|  |      "The timeticks type represents a non-negative integer that | ||||||
|  |       represents the time, modulo 2^32 (4294967296 decimal), in | ||||||
|  |       hundredths of a second between two epochs.  When a schema | ||||||
|  |       node is defined that uses this type, the description of | ||||||
|  |       the schema node identifies both of the reference epochs. | ||||||
|  |  | ||||||
|  |       In the value set and its semantics, this type is equivalent | ||||||
|  |       to the TimeTicks type of the SMIv2."; | ||||||
|  |     reference | ||||||
|  |      "RFC 2578: Structure of Management Information Version 2 | ||||||
|  |                 (SMIv2)"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef timestamp { | ||||||
|  |     type yang:timeticks; | ||||||
|  |     description | ||||||
|  |      "The timestamp type represents the value of an associated | ||||||
|  |       timeticks schema node at which a specific occurrence | ||||||
|  |       happened.  The specific occurrence must be defined in the | ||||||
|  |       description of any schema node defined using this type.  When | ||||||
|  |       the specific occurrence occurred prior to the last time the | ||||||
|  |       associated timeticks attribute was zero, then the timestamp | ||||||
|  |       value is zero.  Note that this requires all timestamp values | ||||||
|  |       to be reset to zero when the value of the associated timeticks | ||||||
|  |       attribute reaches 497+ days and wraps around to zero. | ||||||
|  |  | ||||||
|  |       The associated timeticks schema node must be specified | ||||||
|  |       in the description of any schema node using this type. | ||||||
|  |  | ||||||
|  |       In the value set and its semantics, this type is equivalent | ||||||
|  |       to the TimeStamp textual convention of the SMIv2."; | ||||||
|  |     reference | ||||||
|  |      "RFC 2579: Textual Conventions for SMIv2"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** collection of generic address types ***/ | ||||||
|  |  | ||||||
|  |   typedef phys-address { | ||||||
|  |     type string { | ||||||
|  |       pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     description | ||||||
|  |      "Represents media- or physical-level addresses represented | ||||||
|  |       as a sequence octets, each octet represented by two hexadecimal | ||||||
|  |       numbers.  Octets are separated by colons.  The canonical | ||||||
|  |       representation uses lowercase characters. | ||||||
|  |  | ||||||
|  |       In the value set and its semantics, this type is equivalent | ||||||
|  |       to the PhysAddress textual convention of the SMIv2."; | ||||||
|  |     reference | ||||||
|  |      "RFC 2579: Textual Conventions for SMIv2"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef mac-address { | ||||||
|  |     type string { | ||||||
|  |       pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |      "The mac-address type represents an IEEE 802 MAC address. | ||||||
|  |       The canonical representation uses lowercase characters. | ||||||
|  |  | ||||||
|  |       In the value set and its semantics, this type is equivalent | ||||||
|  |       to the MacAddress textual convention of the SMIv2."; | ||||||
|  |     reference | ||||||
|  |      "IEEE 802: IEEE Standard for Local and Metropolitan Area | ||||||
|  |                 Networks: Overview and Architecture | ||||||
|  |       RFC 2579: Textual Conventions for SMIv2"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** collection of XML-specific types ***/ | ||||||
|  |  | ||||||
|  |   typedef xpath1.0 { | ||||||
|  |     type string; | ||||||
|  |     description | ||||||
|  |      "This type represents an XPATH 1.0 expression. | ||||||
|  |  | ||||||
|  |       When a schema node is defined that uses this type, the | ||||||
|  |       description of the schema node MUST specify the XPath | ||||||
|  |       context in which the XPath expression is evaluated."; | ||||||
|  |     reference | ||||||
|  |      "XPATH: XML Path Language (XPath) Version 1.0"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /*** collection of string types ***/ | ||||||
|  |  | ||||||
|  |   typedef hex-string { | ||||||
|  |     type string { | ||||||
|  |       pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |      "A hexadecimal string with octets represented as hex digits | ||||||
|  |       separated by colons.  The canonical representation uses | ||||||
|  |       lowercase characters."; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef uuid { | ||||||
|  |     type string { | ||||||
|  |       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}'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |      "A Universally Unique IDentifier in the string representation | ||||||
|  |       defined in RFC 4122.  The canonical representation uses | ||||||
|  |       lowercase characters. | ||||||
|  |  | ||||||
|  |       The following is an example of a UUID in string representation: | ||||||
|  |       f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | ||||||
|  |       "; | ||||||
|  |     reference | ||||||
|  |      "RFC 4122: A Universally Unique IDentifier (UUID) URN | ||||||
|  |                 Namespace"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   typedef dotted-quad { | ||||||
|  |     type string { | ||||||
|  |       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])'; | ||||||
|  |     } | ||||||
|  |     description | ||||||
|  |       "An unsigned 32-bit number expressed in the dotted-quad | ||||||
|  |        notation, i.e., four octets written as decimal numbers | ||||||
|  |        and separated with the '.' (full stop) character."; | ||||||
|  |   } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user
	 EstherLerouzic
					EstherLerouzic