Trying out bgp-api with apidoc explorer
[unimgr.git] / bgp-api / src / main / yang / ietf-if-l3-vlan@2017-10-30.yang
diff --git a/bgp-api/src/main/yang/ietf-if-l3-vlan@2017-10-30.yang b/bgp-api/src/main/yang/ietf-if-l3-vlan@2017-10-30.yang
new file mode 100644 (file)
index 0000000..011e1ef
--- /dev/null
@@ -0,0 +1,135 @@
+module ietf-if-l3-vlan {
+
+  yang-version 1.1;
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-if-l3-vlan";
+
+  prefix if-l3-vlan;
+
+  import ietf-interfaces {
+    prefix if;
+  }
+
+  import iana-if-type {
+    prefix ianaift;
+  }
+
+  import ieee802-dot1q-types {
+    prefix dot1q-types;
+  }
+
+  import ietf-interfaces-common {
+    prefix if-cmn;
+  }
+
+  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: Lou Berger
+               <mailto:lberger@labn.net>
+
+     WG Chair: Kent Watsen
+               <mailto:kwatsen@juniper.net>
+
+     Editor:   Robert Wilton
+               <mailto:rwilton@cisco.com>";
+
+  description
+    "This YANG module models L3 VLAN sub-interfaces";
+
+  revision 2017-10-30 {
+    description "Latest draft revision";
+
+    reference
+      "Internet-Draft draft-ietf-netmod-sub-intf-vlan-model-03";
+  }
+
+  /*
+   * Add support for the 802.1Q VLAN encapsulation syntax on layer 3
+   * terminated VLAN sub-interfaces.
+   */
+  augment "/if:interfaces/if:interface/if-cmn:encapsulation/" +
+          "if-cmn:encaps-type" {
+    when
+        "derived-from-or-self(../if:type,
+                              'ianaift:ethernetCsmacd') or
+         derived-from-or-self(../if:type,
+                              'ianaift:ieee8023adLag') or
+         derived-from-or-self(../if:type,
+                              'if-cmn:ethSubInterface')" {
+      description
+        "Applies only to Ethernet-like interfaces and
+         sub-interfaces";
+    }
+
+    description
+      "Augment the generic interface encapsulation with an
+       basic 802.1Q VLAN encapsulation for sub-interfaces.";
+
+    /*
+     * Matches a single VLAN Id, or pair of VLAN Ids to classify
+     * traffic into an L3 service.
+     */
+    case dot1q-vlan {
+      container dot1q-vlan {
+        must
+          'count(../../if-cmn:forwarding-mode) = 0 or ' +
+          'derived-from-or-self(../../if-cmn:forwarding-mode,' +
+                                '"if-cmn:layer-3-forwarding")' {
+            error-message
+              "If the interface forwarding-mode leaf is set then it
+               must be set to an identity that derives from
+               layer-3-forwarding";
+
+            description
+              "The forwarding-mode leaf on an interface can
+               optionally be used to enforce consistency of
+               configuration";
+          }
+
+
+        description
+          "Match VLAN tagged frames with specific VLAN Ids";
+        container outer-tag {
+          presence "The outermost VLAN tag exists";
+
+          description
+            "Classifies traffic using the outermost VLAN tag on the
+             frame.";
+
+          uses dot1q-types:dot1q-tag-classifier-grouping;
+        }
+
+        container second-tag {
+          must
+            '../outer-tag/tag-type = "dot1q-types:s-vlan" and ' +
+            'tag-type = "dot1q-types:c-vlan"' {
+
+            error-message
+              "When matching two tags, the outermost tag must be
+               specified and of S-VLAN type and the second outermost
+               tag must be of C-VLAN tag type";
+
+            description
+              "For IEEE 802.1Q interoperability, when matching two
+               tags, it is required that the outermost tag exists and
+               is an S-VLAN, and the second outermost tag is a
+               C-VLAN";
+          }
+
+          presence "The second outermost VLAN tag exists";
+
+          description
+            "Classifies traffic using the second outermost VLAN tag
+             on the frame.";
+
+          uses dot1q-types:dot1q-tag-classifier-grouping;
+        }
+      }
+    }
+  }
+}