408 lines
9.7 KiB
YANG
408 lines
9.7 KiB
YANG
module openconfig-vlan {
|
|
|
|
yang-version "1";
|
|
|
|
// namespace
|
|
namespace "http://openconfig.net/yang/vlan";
|
|
|
|
prefix "oc-vlan";
|
|
|
|
// import some basic types
|
|
import openconfig-vlan-types { prefix oc-vlan-types; }
|
|
import openconfig-interfaces { prefix oc-if; }
|
|
import openconfig-if-ethernet { prefix oc-eth; }
|
|
import openconfig-if-aggregate { prefix oc-lag; }
|
|
import iana-if-type { prefix ift; }
|
|
import openconfig-extensions { prefix oc-ext; }
|
|
|
|
// meta
|
|
organization "OpenConfig working group";
|
|
|
|
contact
|
|
"OpenConfig working group
|
|
netopenconfig@googlegroups.com";
|
|
|
|
description
|
|
"This module defines configuration and state variables for VLANs,
|
|
in addition to VLAN parameters associated with interfaces";
|
|
|
|
oc-ext:openconfig-version "1.0.2";
|
|
|
|
revision "2016-05-26" {
|
|
description
|
|
"OpenConfig public release";
|
|
reference "1.0.2";
|
|
}
|
|
|
|
|
|
|
|
// grouping statements
|
|
|
|
grouping vlan-config {
|
|
description "VLAN configuration container.";
|
|
|
|
leaf vlan-id {
|
|
type oc-vlan-types:vlan-id;
|
|
description "Interface VLAN id.";
|
|
}
|
|
|
|
leaf name {
|
|
type string;
|
|
description "Interface VLAN name.";
|
|
}
|
|
|
|
leaf status {
|
|
type enumeration {
|
|
enum ACTIVE {
|
|
description "VLAN is active";
|
|
}
|
|
enum SUSPENDED {
|
|
description "VLAN is inactive / suspended";
|
|
}
|
|
}
|
|
default ACTIVE;
|
|
description "Admin state of the VLAN";
|
|
}
|
|
|
|
leaf tpid {
|
|
type identityref {
|
|
base oc-vlan-types:TPID_TYPES;
|
|
}
|
|
default oc-vlan-types:TPID_0x8100;
|
|
description
|
|
"Optionally set the tag protocol identifier field (TPID) that
|
|
is accepted on the VLAN";
|
|
}
|
|
|
|
}
|
|
|
|
grouping vlan-state {
|
|
description "State variables for VLANs";
|
|
|
|
}
|
|
|
|
grouping vlan-members-state {
|
|
description
|
|
"List of interfaces / subinterfaces belonging to the VLAN.";
|
|
|
|
container members {
|
|
description
|
|
"Enclosing container for list of member interfaces";
|
|
|
|
list member {
|
|
config false;
|
|
description
|
|
"List of references to interfaces / subinterfaces
|
|
associated with the VLAN.";
|
|
|
|
uses oc-if:interface-ref-state;
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping vlan-ethernet-config {
|
|
description
|
|
"VLAN related configuration that is part of the physical
|
|
Ethernet interface.";
|
|
|
|
leaf interface-mode {
|
|
type oc-vlan-types:vlan-mode-type;
|
|
description
|
|
"Set the interface to access or trunk mode for
|
|
VLANs";
|
|
}
|
|
|
|
leaf native-vlan {
|
|
when "interface-mode = 'TRUNK'" {
|
|
description
|
|
"Native VLAN is valid for trunk mode interfaces";
|
|
}
|
|
type union {
|
|
type oc-vlan-types:vlan-id;
|
|
type oc-vlan-types:qinq-id;
|
|
}
|
|
description
|
|
"Set the native VLAN id for untagged frames arriving on
|
|
a trunk interface. This configuration is only valid on
|
|
a trunk interface.";
|
|
}
|
|
|
|
leaf access-vlan {
|
|
when "interface-mode = 'ACCESS'" {
|
|
description
|
|
"Access VLAN assigned to the interfaces";
|
|
}
|
|
type union {
|
|
type oc-vlan-types:vlan-id;
|
|
type oc-vlan-types:qinq-id;
|
|
}
|
|
description
|
|
"Assign the access vlan to the access port.";
|
|
}
|
|
|
|
leaf-list trunk-vlans {
|
|
when "interface-mode = 'TRUNK'" {
|
|
description
|
|
"Allowed VLANs may be specified for trunk mode
|
|
interfaces.";
|
|
}
|
|
type union {
|
|
type oc-vlan-types:vlan-id;
|
|
type oc-vlan-types:vlan-range;
|
|
type oc-vlan-types:qinq-id;
|
|
type oc-vlan-types:qinq-id-range;
|
|
}
|
|
description
|
|
"Specify VLANs, or ranges thereof, that the interface may
|
|
carry when in trunk mode. If not specified, all VLANs are
|
|
allowed on the interface. Ranges are specified in the form
|
|
x..y, where x<y - ranges are assumed to be inclusive (such
|
|
that the VLAN range is x <= range <= y.";
|
|
}
|
|
}
|
|
|
|
grouping vlan-ethernet-state {
|
|
description
|
|
"VLAN related operational state that is part of Ethernet
|
|
interface state data";
|
|
|
|
//TODO: placeholder for operational state related to VLANs
|
|
//on the physical interface
|
|
}
|
|
|
|
grouping vlan-ethernet-top {
|
|
description
|
|
"Top-level grouping for VLAN data associated with an
|
|
Ethernet interface";
|
|
|
|
container switched-vlan {
|
|
description
|
|
"Enclosing container for VLAN interface-specific
|
|
data on Ethernet interfaces. These are for standard
|
|
L2, switched-style VLANs.";
|
|
|
|
container config {
|
|
description "Configuration parameters for VLANs";
|
|
|
|
uses vlan-ethernet-config;
|
|
}
|
|
|
|
container state {
|
|
|
|
config false;
|
|
description "State variables for VLANs";
|
|
|
|
uses vlan-ethernet-config;
|
|
uses vlan-ethernet-state;
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping vlan-logical-config {
|
|
description
|
|
"VLAN related configuration that is part of subinterface
|
|
(logical interface) configuration. These are generally
|
|
L3 VLANs with an id that is local.";
|
|
|
|
|
|
leaf vlan-id {
|
|
type union {
|
|
type oc-vlan-types:vlan-id;
|
|
type oc-vlan-types:qinq-id;
|
|
}
|
|
description
|
|
"VLAN id for the subinterface -- specified inline for the
|
|
case of a local VLAN. The id is scoped to the
|
|
subinterface, and could be repeated on different
|
|
subinterfaces.";
|
|
}
|
|
}
|
|
|
|
grouping vlan-logical-state {
|
|
description
|
|
"VLAN related operational state that is part of logical
|
|
interface state data";
|
|
|
|
//TODO: placeholder to add VLAN-specific state variables on
|
|
//the subinterface
|
|
}
|
|
|
|
grouping vlan-top {
|
|
description "Top-level grouping for VLAN configuration";
|
|
|
|
container vlans {
|
|
description "Container for VLAN configuration and state
|
|
variables";
|
|
|
|
list vlan {
|
|
key "vlan-id";
|
|
|
|
description "Configured VLANs keyed by id";
|
|
|
|
leaf vlan-id {
|
|
type leafref {
|
|
path "../config/vlan-id";
|
|
}
|
|
description "references the configured vlan-id";
|
|
}
|
|
|
|
container config {
|
|
description "Configuration parameters for VLANs";
|
|
|
|
uses vlan-config;
|
|
}
|
|
|
|
container state {
|
|
|
|
config false;
|
|
description "State variables for VLANs";
|
|
|
|
uses vlan-config;
|
|
uses vlan-state;
|
|
}
|
|
uses vlan-members-state;
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping vlan-logical-top {
|
|
description
|
|
"Top-level grouping for VLAN data associated with a
|
|
logical interface or subinterface";
|
|
|
|
container vlan {
|
|
description
|
|
"Enclosing container for VLAN interface-specific
|
|
data on subinterfaces";
|
|
|
|
container config {
|
|
description "Configuration parameters for VLANs";
|
|
|
|
uses vlan-logical-config;
|
|
}
|
|
|
|
container state {
|
|
|
|
config false;
|
|
description "State variables for VLANs";
|
|
|
|
uses vlan-logical-config;
|
|
uses vlan-logical-state;
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping vlan-routed-config {
|
|
description
|
|
"Configuration data for routed vlans (SVI, IRB, etc.)";
|
|
|
|
leaf vlan {
|
|
type union {
|
|
// TODO: in YANG 1.1, unions support leafref types which
|
|
// should be used here to reference a configured VLAN by
|
|
// id or name
|
|
type uint16;
|
|
type string;
|
|
}
|
|
description
|
|
"References the VLAN for which this IP interface
|
|
provides routing services -- similar to a switch virtual
|
|
interface (SVI), or integrated routing and bridging interface
|
|
(IRB) in some implementations.";
|
|
}
|
|
|
|
}
|
|
|
|
grouping vlan-routed-state {
|
|
description
|
|
"Operational state data for routed vlan interfaces.";
|
|
}
|
|
|
|
grouping vlan-routed-top {
|
|
description
|
|
"Top-level grouping for routed vlan logical interfaces";
|
|
|
|
container routed-vlan {
|
|
description
|
|
"Top-level container for routed vlan interfaces. These
|
|
logical interfaces are also known as SVI (switched virtual
|
|
interface), IRB (integrated routing and bridging), RVI
|
|
(routed VLAN interface)";
|
|
|
|
container config {
|
|
description
|
|
"Configuration data for routed vlan interfaces";
|
|
|
|
uses vlan-routed-config;
|
|
}
|
|
|
|
container state {
|
|
|
|
config false;
|
|
|
|
description
|
|
"Operational state data ";
|
|
|
|
uses vlan-routed-config;
|
|
uses vlan-routed-state;
|
|
}
|
|
}
|
|
}
|
|
|
|
// data definition statements
|
|
|
|
uses vlan-top;
|
|
|
|
// augment statements
|
|
|
|
augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" +
|
|
"oc-if:subinterface" {
|
|
//TODO: augmentation path will need to be updated for
|
|
//full device model
|
|
description "Adds VLAN settings to individual subinterfaces";
|
|
|
|
uses vlan-logical-top;
|
|
}
|
|
|
|
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet" {
|
|
//TODO: augmentation path will need to be updated for
|
|
//full device model
|
|
when "oc-if:type = 'ift:ethernetCsmacd'" {
|
|
description "Active when the interface is Ethernet";
|
|
}
|
|
description "Adds VLAN settings to individual Ethernet
|
|
interfaces";
|
|
|
|
uses vlan-ethernet-top;
|
|
}
|
|
|
|
augment "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation" {
|
|
//TODO: augmentation path will need to be updated for
|
|
//full device model
|
|
when "oc-if:type = 'ift:ieee8023adLag'" {
|
|
description "Active when the interface is a LAG";
|
|
}
|
|
description "Adds VLAN settings to a LAG interface";
|
|
|
|
uses vlan-ethernet-top;
|
|
}
|
|
|
|
augment "/oc-if:interfaces/oc-if:interface" {
|
|
when "oc-if:type = 'ift:l3ipvlan'" {
|
|
description
|
|
"Active when the interface is a logical interface providing
|
|
L3 routing for VLANs";
|
|
}
|
|
description
|
|
"Adds configuration and state for routed VLAN interfaces";
|
|
|
|
uses vlan-routed-top;
|
|
}
|
|
|
|
|
|
// rpc statements
|
|
|
|
// notification statements
|
|
|
|
}
|