3 namespace "urn:opendaylight:netvirt:elan";
6 import network-topology {prefix "topo"; revision-date "2013-10-21"; }
7 import hwvtep {prefix "hwvtep"; revision-date "2015-09-01"; }
8 import yang-ext {prefix ext; revision-date "2013-07-09";}
10 import ietf-interfaces {
13 import ietf-inet-types {
15 revision-date "2013-07-15";
17 import ietf-yang-types {
22 revision "2015-06-02" {
23 description "elan module";
29 container elan-instances {
31 "elan instances configuration parameters. Elan instances support both the VLAN and VNI based elans.";
34 max-elements "unbounded";
36 key "elan-instance-name";
38 "Specifies the name of the elan instance. It is a string of 1 to 31
39 case-sensitive characters.";
40 leaf elan-instance-name {
42 description "The name of the elan-instance.";
46 description "ELAN unique identifier which is unique across all the tenants.
47 This will be created internally and if provided, the value will be discarded.";
50 description "Optional. Network segment type. It's mandatory when there are external
51 devices participating in the ELAN";
53 base segment-type-base;
56 leaf segmentation-id {
58 description "Optional. Isolated segment on the physical network. For example,
59 if segment-type is vlan, this ID is a vlan identifier. If segment-type
60 is vxlan, this ID is a vni";
62 leaf physical-network-name {
64 description "Optional. The name of the physical network attached to the ELAN.";
67 description "indicates whether this is an external network";
75 description "MAC Table entry ageing time in seconds.
76 A value of 0 will indicate that the MAC will never expire.";
80 "A textual description of elan instance, the elan instance description
81 helps users memorize the elan instance.";
88 description "List of provider network(s) associated with this ELAN.";
89 key segmentation-index;
90 leaf segmentation-index {
91 description "A hidden counter to act as a key, because segmentation id
95 leaf physical-network-name {
96 description "Optional. The name of the physical network attached to the ELAN.";
100 description "Optional. Network segment type. It's mandatory when there are external
101 devices participating in the ELAN";
103 base segment-type-base;
106 leaf segmentation-id {
107 description "Optional. Isolated segment on the physical network. For example,
108 if segment-type is vlan, this ID is a vlan identifier. If segment-type
109 is vxlan, this ID is a vni";
114 description "Optional. The external tep ips of the nodes where this elan is present";
117 type inet:ip-address;
127 * Binding Interfaces to a elan Instance.
129 container elan-interfaces {
131 "elan is enabled on interfaces.";
133 list elan-interface {
135 max-elements "unbounded";
139 path "/if:interfaces/if:interface/if:name";
142 leaf elan-instance-name {
147 list static-mac-entries {
150 type yang:phys-address;
153 type inet:ip-address;
159 "A textual description of elan port, the elan port description
160 helps users memorize the elan port.";
169 /* operational data stores */
170 container elan-state {
173 "operational state of elans.";
177 description "The list of interfaces on the device.";
178 max-elements "unbounded";
183 "The name of the elan-instance.";
185 leaf-list elan-interfaces{
187 path "/if:interfaces/if:interface/if:name";
189 description "Interfaces connected to this elan instance.";
194 grouping forwarding-entries {
195 description "Details of the MAC entries";
199 description "Details of a MAC address";
200 max-elements "unbounded";
204 type yang:phys-address;
209 path "/if:interfaces/if:interface/if:name";
213 leaf controllerLearnedForwardingEntryTimestamp {
217 leaf isStaticAddress {
222 type inet:ip-address;
225 leaf src-tor-nodeid {
228 "The src tor node id";
233 augment "/topo:network-topology/topo:topology/topo:node/hwvtep:local-ucast-macs" {
234 description "Augmentation for physical switch nodes managed by hwvtep";
235 ext:augment-identifier "srcnode-augmentation";
236 leaf src-tor-nodeid {
239 "The src tor node id";
243 container elan-forwarding-tables {
246 "MAC tables for each elan instance";
249 max-elements "unbounded";
251 key "elan-instance-name";
253 "Specifies the name of the elan instance. It is a string of 1 to 31
254 case-sensitive characters.";
256 leaf elan-instance-name {
259 "The name of the elan-instance.";
262 uses forwarding-entries;
266 container elan-interface-forwarding-entries {
269 list elan-interface-mac {
270 key "elan-interface";
271 description "All the MAC addresses learned on a particular elan interface";
272 max-elements "unbounded";
274 leaf elan-interface {
276 path "/if:interfaces/if:interface/if:name";
280 uses forwarding-entries;
284 container elan-dpn-interfaces {
287 list elan-dpn-interfaces-list {
288 key "elan-instance-name";
289 description "All the dpns of this elan and all the ports of the corresponding dpns";
290 max-elements "unbounded";
293 leaf elan-instance-name {
295 description "The name of the elan-instance.";
298 list dpn-interfaces {
300 description "A DPN in which the elan spans across";
301 max-elements "unbounded";
308 leaf-list interfaces {
310 path "/if:interfaces/if:interface/if:name";
317 container elan-tag-name-map {
329 "The name of the elan-instance.";
334 augment "/elan:elan-instances/elan:elan-instance" {
335 ext:augment-identifier "evpn-augmentation";
345 identity segment-type-base {
346 description "Base entity for all network segment types";
349 identity segment-type-flat {
350 description "Flat network segment type";
351 base segment-type-base;
354 identity segment-type-vlan {
355 description "VLAN network segment type";
356 base segment-type-base;
359 identity segment-type-vxlan {
360 description "VxLAN network segment type";
361 base segment-type-base;
364 identity segment-type-gre {
365 description "GRE network segment type";
366 base segment-type-base;