| 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.8.0"; |
| |
| 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 from which this MAC address was received"; |
| } |
| } |
| |
| 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"; |
| description |
| "List of learned MAC addresses"; |
| |
| leaf mac-address { |
| type leafref { |
| path "../config/mac-address"; |
| } |
| description |
| "Reference to mac-address 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; |
| } |
| } |
| } |
| } |
| } |
| } |