summaryrefslogtreecommitdiffstats
path: root/src/plugins/yang/openconfig/openconfig-network-instance-l2.yang
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-network-instance-l2.yang')
-rw-r--r--src/plugins/yang/openconfig/openconfig-network-instance-l2.yang339
1 files changed, 339 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-network-instance-l2.yang b/src/plugins/yang/openconfig/openconfig-network-instance-l2.yang
new file mode 100644
index 0000000..530b8c8
--- /dev/null
+++ b/src/plugins/yang/openconfig/openconfig-network-instance-l2.yang
@@ -0,0 +1,339 @@
+submodule openconfig-network-instance-l2 {
+
+ belongs-to openconfig-network-instance {
+ prefix "oc-netinst";
+ }
+
+ // import some basic types
+ import openconfig-extensions { prefix "oc-ext"; }
+ import openconfig-interfaces { prefix "oc-if"; }
+ import ietf-yang-types { prefix "yang"; }
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module contains groupings which specifically relate to
+ Layer 2 network instance configuration and operational state
+ parameters.";
+
+ oc-ext:openconfig-version "0.11.0";
+
+ revision "2018-08-11" {
+ description
+ "Add vlan id as additional key in MAC table";
+ reference "0.11.0";
+ }
+
+ revision "2018-06-22" {
+ description
+ "Fix typo in OSPF when statement";
+ reference "0.10.2";
+ }
+
+ revision "2018-06-05" {
+ description
+ "Fix bugs in when statements";
+ reference "0.10.1";
+ }
+
+ revision "2018-02-19" {
+ description
+ "Add PIM and IGMP to network instance";
+ reference "0.10.0";
+ }
+
+ revision "2017-12-13" {
+ description
+ "Fix incorrect constraint on SR and MPLS containers";
+ reference "0.9.0";
+ }
+
+ 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-11-20" {
+ description
+ "Initial revision";
+ reference "0.1.0";
+ }
+
+ grouping l2ni-instance {
+ description
+ "Configuration and operational state parameters relating
+ to a Layer 2 network instance";
+
+ container fdb {
+ description
+ "Operational state and configuration parameters relating to
+ the forwarding database of the network instance";
+
+ container config {
+ description
+ "Configuration parameters relating to the FDB";
+ uses l2ni-fdb-mac-config;
+ }
+ container state {
+ config false;
+ description
+ "Operational state parameters relating to the FDB";
+ uses l2ni-fdb-mac-config;
+ }
+
+ uses l2ni-mac-table-top;
+ }
+ }
+
+ grouping l2ni-instance-common-config {
+ description
+ "Common configuration options which are specific to Layer 2
+ network instances";
+
+ leaf mtu {
+ type uint16;
+ description
+ "The maximum frame size which should be supported for this
+ instance for Layer 2 frames";
+ }
+
+ }
+
+ grouping l2ni-fdb-mac-config {
+ description
+ "Parameters relating to FDB behaviour relating to MAC
+ addresses";
+
+ leaf mac-learning {
+ type boolean;
+ description
+ "When this leaf is set to true, MAC learning is enabled for
+ the network instance, such that MAC addresses are learned
+ from ingress frames and added to the FDB.";
+ }
+
+ leaf mac-aging-time {
+ // Cisco supports one aging time for local and remote, but
+ // can specify this time is absolute or against inactivity.
+ // ALU SROS supports different aging times for local and remote
+ // but does not allow absolute/inactivity specification.
+ // JNPR supports only a single aging time, and no specification
+ // of whether inactivity/absolute is used.
+ // It is easy to augment new options in here for local remote
+ // and an extra leaf to allow specification of the type of aging
+ // so this is left as a single value.
+ type uint16;
+ units seconds;
+ description
+ "The number of seconds of inactivity after which the entry
+ in the local FDB is timed out.";
+ }
+
+ leaf maximum-entries {
+ type uint16;
+ description
+ "The maximum number of MAC address entries that should be
+ accepted into the FDB";
+ }
+ }
+
+ grouping l2ni-encapsulation-config {
+ description
+ "Encapsulation related configuration parameters for a L2
+ network instance";
+
+ leaf control-word {
+ type boolean;
+ description
+ "Whether the control-word should be used for the network
+ instance";
+ reference "RFC3985";
+ }
+ }
+
+ grouping l2ni-mac-table-config {
+ description
+ "Configuration data for MAC table entries";
+
+ leaf mac-address {
+ type yang:mac-address;
+ description
+ "MAC address for the dynamic or static MAC table
+ entry";
+ }
+
+ leaf vlan {
+ //TODO(aashaikh): Consider whether this should just reflect the
+ //VLAN id or be a union type to also support displaying/setting
+ //the VLAN by name (i.e., global VLAN configured in the VLAN
+ // model).
+ type leafref {
+ path "../../../../../../vlans/vlan/config/vlan-id";
+ }
+ description
+ "VLAN on which the MAC address is present. The same MAC
+ address may be seen on multiple VLANs in some cases.";
+ }
+ }
+
+ grouping l2ni-mac-table-state {
+ description
+ "Operational state data for MAC table entries";
+
+ leaf age {
+ type uint64;
+ units seconds;
+ description
+ "The time in seconds since the MAC address has been in the
+ table";
+ }
+
+ leaf entry-type {
+ type enumeration {
+ enum STATIC {
+ description
+ "Statically programmed MAC table entry";
+ }
+ enum DYNAMIC {
+ description
+ "Dynamically learned MAC table entry";
+ }
+ }
+ description
+ "Indicates whether the entry was statically configured, or
+ dynamically learned.";
+ }
+
+ }
+
+ grouping l2ni-mac-table-top {
+ description
+ "Top-level grouping for MAC table list";
+
+
+ container mac-table {
+ description
+ "Table of learned or statically configured MAC addresses and
+ corresponding VLANs in the bridge domain";
+
+ container entries {
+ description
+ "Enclosing container for list of MAC table entries";
+
+ list entry {
+ key "mac-address vlan";
+ description
+ "List of learned MAC addresses";
+
+ leaf mac-address {
+ type leafref {
+ path "../config/mac-address";
+ }
+ description
+ "Reference to mac-address list key";
+ }
+
+ leaf vlan {
+ type leafref {
+ path "../config/vlan";
+ }
+ description
+ "Reference to vlan list key";
+ }
+
+ container config {
+ description
+ "Configuration data for MAC table entries";
+
+ uses l2ni-mac-table-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for MAC table entries";
+
+ uses l2ni-mac-table-config;
+ uses l2ni-mac-table-state;
+ }
+
+ container interface {
+ description
+ "Reference to the base and/or subinterface for the
+ MAC table entry";
+
+ uses oc-if:interface-ref;
+ }
+ }
+ }
+ }
+ }
+}