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; } } } } } }