aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/yang/openconfig/openconfig-network-instance-types.yang
diff options
context:
space:
mode:
authorHongjun Ni <hongjun.ni@intel.com>2018-12-21 04:48:35 +0000
committerGerrit Code Review <gerrit@fd.io>2018-12-21 04:48:35 +0000
commit8791f3211bd61d213e4ea4a0af66a14bb2e3a239 (patch)
tree846a89e6ca81d639d024e5509654766d3581b7ea /src/plugins/yang/openconfig/openconfig-network-instance-types.yang
parentde7bb8f2b0cdd2dfeba0586213bd415c9bb3fd18 (diff)
parent639509ad42f8bd6baf9b6f5b668a9bbfb05108d4 (diff)
Merge "Add Openconfig YANG modules."
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-network-instance-types.yang')
-rw-r--r--src/plugins/yang/openconfig/openconfig-network-instance-types.yang261
1 files changed, 261 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-network-instance-types.yang b/src/plugins/yang/openconfig/openconfig-network-instance-types.yang
new file mode 100644
index 0000000..67ab357
--- /dev/null
+++ b/src/plugins/yang/openconfig/openconfig-network-instance-types.yang
@@ -0,0 +1,261 @@
+module openconfig-network-instance-types {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/network-instance-types";
+
+ prefix "oc-ni-types";
+
+ import openconfig-extensions { prefix "oc-ext"; }
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "Types associated with a network instance";
+
+ oc-ext:openconfig-version "0.8.1";
+
+ revision "2017-08-24" {
+ description
+ "Minor formatting fixes";
+ reference "0.8.1";
+ }
+
+ revision "2017-02-28" {
+ description
+ "Add OSPFv2 to network instance";
+ reference "0.8.0";
+ }
+
+ revision "2017-01-26" {
+ description
+ "Add policy forwarding to network instance";
+ reference "0.7.0";
+ }
+
+ revision "2017-01-13" {
+ description
+ "Add AFT to the network instance";
+ reference "0.6.0";
+ }
+
+ revision "2016-12-15" {
+ description
+ "Add segment routing to network instance";
+ reference "0.5.0";
+ }
+
+ revision "2016-11-10" {
+ description
+ "Update model to include IS-IS.";
+ reference "0.4.1";
+ }
+
+ revision "2016-10-12" {
+ description
+ "Update table connections";
+ reference "0.4.0";
+ }
+
+ revision "2016-09-28" {
+ description
+ "Change L2 instance to submodule; add MAC table";
+ reference "0.3.0";
+ }
+
+ revision "2016-08-11" {
+ description
+ "Resolve repeated container names in routing protocols";
+ reference "0.2.3";
+ }
+
+ revision "2016-07-08" {
+ description
+ "Updated with refactored routing protocol models";
+ reference "0.2.1";
+ }
+
+ revision "2016-03-29" {
+ description
+ "Initial revision";
+ reference "0.2.0";
+ }
+
+ revision "2015-10-18" {
+ description
+ "Initial revision";
+ reference "0.1.0";
+ }
+
+ // identity statements
+ identity NETWORK_INSTANCE_TYPE {
+ description
+ "A base identity which can be extended to indicate different
+ types of network instance supported by a device.";
+ }
+
+ identity DEFAULT_INSTANCE {
+ base NETWORK_INSTANCE_TYPE;
+ description
+ "A special routing instance which acts as the 'default' or
+ 'global' routing instance for a network device.";
+ }
+
+ identity L3VRF {
+ base NETWORK_INSTANCE_TYPE;
+ description
+ "A private Layer 3 only routing instance which is formed of
+ one or more RIBs";
+ }
+
+ identity L2VSI {
+ base NETWORK_INSTANCE_TYPE;
+ description
+ "A private Layer 2 only switch instance which is formed of
+ one or more L2 forwarding tables";
+ }
+
+ identity L2P2P {
+ base NETWORK_INSTANCE_TYPE;
+ description
+ "A private Layer 2 only forwarding instance which acts as
+ a point to point connection between two endpoints";
+ }
+
+ identity L2L3 {
+ base NETWORK_INSTANCE_TYPE;
+ description
+ "A private Layer 2 and Layer 2 forwarding instance";
+ }
+
+ identity ENDPOINT_TYPE {
+ description
+ "Specification of the type of endpoint that is being associated
+ with a network instance";
+ }
+
+ identity LOCAL {
+ base ENDPOINT_TYPE;
+ description
+ "A local interface which is being associated with the endpoint";
+ }
+
+ identity REMOTE {
+ base ENDPOINT_TYPE;
+ description
+ "A remote interface which is being associated with the
+ endpoint";
+ }
+
+ identity LABEL_ALLOCATION_MODE {
+ description
+ "Base identity to be used to express types of label allocation
+ strategies to be used within a network instance";
+ }
+
+ identity PER_PREFIX {
+ base LABEL_ALLOCATION_MODE;
+ description
+ "A label is to be allocated per prefix entry in the RIB for the
+ network instance";
+ }
+
+ identity PER_NEXTHOP {
+ base LABEL_ALLOCATION_MODE;
+ description
+ "A label is to be allocated per nexthop entry in the RIB for
+ the network instance";
+ }
+
+ identity INSTANCE_LABEL {
+ base LABEL_ALLOCATION_MODE;
+ description
+ "A single label is to be used for the instance";
+ }
+
+ identity ENCAPSULATION {
+ description
+ "On the wire encapsulations that can be used when
+ differentiating network instances";
+ }
+
+ identity MPLS {
+ base ENCAPSULATION;
+ description
+ "Use MPLS labels to distinguish network instances on the wire";
+ }
+
+ identity VXLAN {
+ base ENCAPSULATION;
+ description
+ "Use VXLAN (RFC7348) VNIs to distinguish network instances on
+ the wire";
+ }
+
+ identity SIGNALLING_PROTOCOL {
+ description
+ "The signalling protocol that should be used to diseminate
+ entries within a forwarding instance";
+ }
+
+ identity LDP {
+ base SIGNALLING_PROTOCOL;
+ description
+ "Use LDP-based setup for signalling. Where the instance is
+ a point-to-point service this refers to RFC4447 ('Martini')
+ setup. Where the service is an L2VSI, or L2L3 instance it
+ refers to RFC4762 LDP-signalled VPLS instances";
+ }
+
+ identity BGP_VPLS {
+ base SIGNALLING_PROTOCOL;
+ description
+ "Use BGP-based signalling and autodiscovery for VPLS instances
+ as per RFC4761";
+ }
+
+ identity BGP_EVPN {
+ base SIGNALLING_PROTOCOL;
+ description
+ "Use BGP-based Ethernet VPN (RFC7432) based signalling for
+ the network instance";
+ }
+
+ // rjs note:
+ // this should move to openconfig-types when merged
+ typedef route-distinguisher {
+ type union {
+ // type 0: <2-byte administrator>:<4-byte assigned number>
+ type string {
+ pattern '^(65[0-5][0-3][0-5]|[1-5][1-5][0-9][0-9][0-9]|'
+ + '[1-9]?[1-9]?[0-9][0-9]|[1-9]):'
+ + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-5]|'
+ + '[0-3][0-9]{9}|[1-9][0-9]{1,8}|[1-9])$';
+ }
+ // type 1: <ip-address>:<2-byte assigned number>
+ 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]):'
+ + '(65[0-5][0-3][0-5]|[1-5][1-5][0-9][0-9][0-9]|'
+ + '[1-9]?[1-9]?[0-9][0-9]|[1-9])$';
+ }
+ // type 2: <4-byte as-number>:<2-byte assigned number>
+ type string {
+ pattern
+ '^(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-5]|'
+ + '[0-3][0-9]{9}|[1-9][0-9]{1,8}|[1-9]):'
+ + '(65[0-5][0-3][0-5]|[1-5]{2}[0-9]{3}|'
+ + '[1-9]{0,2}[0-9][0-9]|[1-9])$';
+ }
+ }
+ description "A route distinguisher value";
+ reference "RFC4364";
+ }
+}