2 namespace "urn:opendaylight:l3vpn";
5 import yang-ext {prefix ext; revision-date "2013-07-09";}
6 import l3vpn { prefix l3vpn; revision-date "2014-08-15"; }
7 import ietf-yang-types { prefix "yang"; }
9 revision "2013-09-11" {
10 description "L3 VPN Service module";
13 grouping adjacency-list{
16 leaf nextHopIp { type string; }
17 leaf ip_address {type string;}
18 leaf label { type uint32; config "false"; } /* optional */
19 leaf mac_address {type string;} /* optional */
23 grouping vpn-route-list{
24 leaf-list route-entry-id{
29 augment "/l3vpn:vpn-interfaces/l3vpn:vpn-interface" {
30 ext:augment-identifier "adjacencies";
34 augment "/l3vpn:vpn-interfaces/l3vpn:vpn-interface" {
35 ext:augment-identifier "opState";
36 leaf stateUp {type boolean; config false;}
39 /* Operational DS containers for reverse lookups*/
40 container prefix-to-interface {
44 leaf vpn-id {type uint32;}
47 leaf ip_address {type string;}
51 leaf vpn-interface-name {
58 container vpn-to-extraroute {
64 "The vrf-id command configures a route distinguisher (RD)
65 for the IPv4 or IPv6 address family of a VPN instance or
66 vpn instance name for internal vpn case.";
71 leaf prefix {type string;}
79 /* Data models to adhere to restart requirements */
80 container vpn-instance-to-vpn-id {
82 key vpn-instance-name;
83 leaf vpn-instance-name {
91 "The vrf-id command configures a route distinguisher (RD)
92 for the IPv4 or IPv6 address family of a VPN instance or
93 vpn instance name for internal vpn case.";
99 container vpn-instance-op-data {
101 list vpn-instance-op-data-entry {
103 leaf vpn-id { type uint32;}
106 "The vrf-id command configures a route distinguisher (RD)
107 for the IPv4 or IPv6 address family of a VPN instance or
108 vpn instance name for internal vpn case.";
112 leaf vpn-interface-count { type uint32; }
114 list vpn-to-dpn-list {
119 list vpn-interfaces {
121 leaf interface-name {
140 "Task not applicable";
145 "Task is in pending state";
150 "Task has been completed";
154 "This value the status of any task.
155 The possible values are NA, PENDING or DONE.
160 container subnet-op-data {
161 list subnet-op-data-entry {
165 description "UUID representing the subnet ";
169 description "DpnId for the DPN used as nexthop for this subnet";
173 description "VPN Instance name";
180 description "Subnet in cidr notation";
182 leaf route-adv-state {
184 description "The status of the subnet route advertisement. Route advertisement could be in a NA, PENDING or DONE state.";
194 list vpn-interfaces {
196 leaf interface-name {
205 container port-op-data {
206 list port-op-data-entry {
210 description "UUID in string format representing the port ";
214 description "Back reference to obtain the subnet for a port ";
222 container rd-to-elan-op{
223 list rd-to-elan-op-entry{
243 grouping dpn-in-vpn-event {
244 leaf dpn-id { type uint64; }
245 leaf vpn-name { type string; }
246 leaf rd { type string; }
249 notification add-dpn-event {
250 container add-event-data {
251 uses dpn-in-vpn-event;
255 notification remove-dpn-event {
256 container remove-event-data {
257 uses dpn-in-vpn-event;
262 /* container to maintain mapping between neutron router and DPN(s) on which vpn-interfaces for router are present */
263 container neutron-router-dpns {
264 list router-dpn-list {
266 leaf router-id { type string;}
267 list dpn-vpninterfaces-list {
269 leaf dpn-id { type uint64;}
270 list router-interfaces {
272 leaf interface { type string; }
279 container router-interfaces {
280 list router-interface {
282 leaf interface-name { type string; }
283 leaf router-name { type string; }