blob: a5af6746b03a486ba619bf64e4d57098ac43a0f9 [file] [log] [blame]
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;
}
}
}
}
}
}