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;
122 * Binding Interfaces to a elan Instance.
124 container elan-interfaces {
126 "elan is enabled on interfaces.";
128 list elan-interface {
130 max-elements "unbounded";
134 path "/if:interfaces/if:interface/if:name";
137 leaf elan-instance-name {
142 list static-mac-entries {
145 type yang:phys-address;
148 type inet:ip-address;
154 "A textual description of elan port, the elan port description
155 helps users memorize the elan port.";
164 /* operational data stores */
165 container elan-state {
168 "operational state of elans.";
172 description "The list of interfaces on the device.";
173 max-elements "unbounded";
178 "The name of the elan-instance.";
180 leaf-list elan-interfaces{
182 path "/if:interfaces/if:interface/if:name";
184 description "Interfaces connected to this elan instance.";
189 grouping forwarding-entries {
190 description "Details of the MAC entries";
194 description "Details of a MAC address";
195 max-elements "unbounded";
199 type yang:phys-address;
204 path "/if:interfaces/if:interface/if:name";
208 leaf controllerLearnedForwardingEntryTimestamp {
212 leaf isStaticAddress {
217 type inet:ip-address;
222 container elan-forwarding-tables {
225 "MAC tables for each elan instance";
228 max-elements "unbounded";
230 key "elan-instance-name";
232 "Specifies the name of the elan instance. It is a string of 1 to 31
233 case-sensitive characters.";
235 leaf elan-instance-name {
238 "The name of the elan-instance.";
241 uses forwarding-entries;
245 container elan-interface-forwarding-entries {
248 list elan-interface-mac {
249 key "elan-interface";
250 description "All the MAC addresses learned on a particular elan interface";
251 max-elements "unbounded";
253 leaf elan-interface {
255 path "/if:interfaces/if:interface/if:name";
259 uses forwarding-entries;
263 container elan-dpn-interfaces {
266 list elan-dpn-interfaces-list {
267 key "elan-instance-name";
268 description "All the dpns of this elan and all the ports of the corresponding dpns";
269 max-elements "unbounded";
272 leaf elan-instance-name {
274 description "The name of the elan-instance.";
277 list dpn-interfaces {
279 description "A DPN in which the elan spans across";
280 max-elements "unbounded";
287 leaf-list interfaces {
289 path "/if:interfaces/if:interface/if:name";
296 container elan-tag-name-map {
308 "The name of the elan-instance.";
313 augment "/elan:elan-instances/elan:elan-instance" {
314 ext:augment-identifier "evpn-augmentation";
324 identity segment-type-base {
325 description "Base entity for all network segment types";
328 identity segment-type-flat {
329 description "Flat network segment type";
330 base segment-type-base;
333 identity segment-type-vlan {
334 description "VLAN network segment type";
335 base segment-type-base;
338 identity segment-type-vxlan {
339 description "VxLAN network segment type";
340 base segment-type-base;
343 identity segment-type-gre {
344 description "GRE network segment type";
345 base segment-type-base;