3 namespace "urn:opendaylight:netvirt:elan";
6 import yang-ext {prefix ext; revision-date "2013-07-09";}
8 import ietf-interfaces {
11 import ietf-inet-types {
13 revision-date "2013-07-15";
15 import ietf-yang-types {
20 revision "2015-06-02" {
21 description "elan module";
27 container elan-instances {
29 "elan instances configuration parameters. Elan instances support both the VLAN and VNI based elans.";
32 max-elements "unbounded";
34 key "elan-instance-name";
36 "Specifies the name of the elan instance. It is a string of 1 to 31
37 case-sensitive characters.";
38 leaf elan-instance-name {
40 description "The name of the elan-instance.";
44 description "ELAN unique identifier which is unique across all the tenants.
45 This will be created internally and if provided, the value will be discarded.";
48 description "Optional. Network segment type. It's mandatory when there are external
49 devices participating in the ELAN";
51 base segment-type-base;
54 leaf segmentation-id {
56 description "Optional. Isolated segment on the physical network. For example,
57 if segment-type is vlan, this ID is a vlan identifier. If segment-type
58 is vxlan, this ID is a vni";
60 leaf physical-network-name {
62 description "Optional. The name of the physical network attached to the ELAN.";
65 description "indicates whether this is an external network";
73 description "MAC Table entry ageing time in seconds.
74 A value of 0 will indicate that the MAC will never expire.";
78 "A textual description of elan instance, the elan instance description
79 helps users memorize the elan instance.";
86 description "List of provider network(s) associated with this ELAN.";
87 key segmentation-index;
88 leaf segmentation-index {
89 description "A hidden counter to act as a key, because segmentation id
93 leaf physical-network-name {
94 description "Optional. The name of the physical network attached to the ELAN.";
98 description "Optional. Network segment type. It's mandatory when there are external
99 devices participating in the ELAN";
101 base segment-type-base;
104 leaf segmentation-id {
105 description "Optional. Isolated segment on the physical network. For example,
106 if segment-type is vlan, this ID is a vlan identifier. If segment-type
107 is vxlan, this ID is a vni";
112 description "Optional. The external tep ips of the nodes where this elan is present";
115 type inet:ip-address;
125 * Binding Interfaces to a elan Instance.
127 container elan-interfaces {
129 "elan is enabled on interfaces.";
131 list elan-interface {
133 max-elements "unbounded";
137 path "/if:interfaces/if:interface/if:name";
140 leaf elan-instance-name {
145 list static-mac-entries {
148 type yang:phys-address;
151 type inet:ip-address;
157 "A textual description of elan port, the elan port description
158 helps users memorize the elan port.";
167 /* operational data stores */
168 container elan-state {
171 "operational state of elans.";
175 description "The list of interfaces on the device.";
176 max-elements "unbounded";
181 "The name of the elan-instance.";
183 leaf-list elan-interfaces{
185 path "/if:interfaces/if:interface/if:name";
187 description "Interfaces connected to this elan instance.";
192 grouping forwarding-entries {
193 description "Details of the MAC entries";
197 description "Details of a MAC address";
198 max-elements "unbounded";
202 type yang:phys-address;
207 path "/if:interfaces/if:interface/if:name";
211 leaf controllerLearnedForwardingEntryTimestamp {
215 leaf isStaticAddress {
220 type inet:ip-address;
225 container elan-forwarding-tables {
228 "MAC tables for each elan instance";
231 max-elements "unbounded";
233 key "elan-instance-name";
235 "Specifies the name of the elan instance. It is a string of 1 to 31
236 case-sensitive characters.";
238 leaf elan-instance-name {
241 "The name of the elan-instance.";
244 uses forwarding-entries;
248 container elan-interface-forwarding-entries {
251 list elan-interface-mac {
252 key "elan-interface";
253 description "All the MAC addresses learned on a particular elan interface";
254 max-elements "unbounded";
256 leaf elan-interface {
258 path "/if:interfaces/if:interface/if:name";
262 uses forwarding-entries;
266 container elan-dpn-interfaces {
269 list elan-dpn-interfaces-list {
270 key "elan-instance-name";
271 description "All the dpns of this elan and all the ports of the corresponding dpns";
272 max-elements "unbounded";
275 leaf elan-instance-name {
277 description "The name of the elan-instance.";
280 list dpn-interfaces {
282 description "A DPN in which the elan spans across";
283 max-elements "unbounded";
290 leaf-list interfaces {
292 path "/if:interfaces/if:interface/if:name";
299 container elan-tag-name-map {
311 "The name of the elan-instance.";
316 augment "/elan:elan-instances/elan:elan-instance" {
317 ext:augment-identifier "evpn-augmentation";
327 identity segment-type-base {
328 description "Base entity for all network segment types";
331 identity segment-type-flat {
332 description "Flat network segment type";
333 base segment-type-base;
336 identity segment-type-vlan {
337 description "VLAN network segment type";
338 base segment-type-base;
341 identity segment-type-vxlan {
342 description "VxLAN network segment type";
343 base segment-type-base;
346 identity segment-type-gre {
347 description "GRE network segment type";
348 base segment-type-base;