BUG-2982 : moved path-attributes container to grouping
[bgpcep.git] / bgp / inet / src / main / yang / bgp-inet.yang
1 module bgp-inet {
2         yang-version 1;
3         namespace "urn:opendaylight:params:xml:ns:yang:bgp-inet";
4         prefix "bgp-inet";
5
6     import bgp-rib { prefix bgp-rib; revision-date 2013-09-25; }
7     import bgp-multiprotocol { prefix bgp-mp; revision-date 2013-09-19; }
8     import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
9     import bgp-message { prefix bgp-msg; revision-date 2013-09-19; }
10
11     organization "Cisco Systems, Inc.";
12     contact "Dana Kutenicsova <dkutenic@cisco.com>";
13
14     description
15             "This module contains the concept of IPv4 and IPv6 routes,
16     split from bgp-rib and bgp-multiprotocol models.
17
18             Copyright (c)2015 Cisco Systems, Inc. All rights reserved.
19
20             This program and the accompanying materials are made available
21             under the terms of the Eclipse Public License v1.0 which
22             accompanies this distribution, and is available at
23             http://www.eclipse.org/legal/epl-v10.html";
24
25     revision "2015-03-05" {
26             description
27                     "Initial revision.";
28     }
29
30     grouping ipv4-prefix {
31         leaf prefix {
32             type inet:ipv4-prefix;
33         }
34     }
35
36     grouping ipv6-prefix {
37         leaf prefix {
38             type inet:ipv6-prefix;
39         }
40     }
41
42     grouping ipv4-prefixes {
43         container destination-ipv4 {
44             list ipv4-prefixes {
45                 uses ipv4-prefix;
46             }
47         }
48     }
49
50     grouping ipv6-prefixes {
51         container destination-ipv6 {
52             list ipv6-prefixes {
53                 uses ipv6-prefix;
54             }
55         }
56     }
57
58     grouping ipv4-routes {
59         container ipv4-routes {
60             list ipv4-route {
61                 uses bgp-mp:ipv4-prefix;
62
63                 key prefix;
64
65                 uses bgp-rib:route;
66             }
67         }
68     }
69
70     grouping ipv6-routes {
71         container ipv6-routes {
72             list ipv6-route {
73                 uses bgp-mp:ipv6-prefix;
74
75                 key prefix;
76
77                 uses bgp-rib:route;
78             }
79         }
80     }
81
82     augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-reach-nlri/bgp-mp:advertized-routes/bgp-mp:destination-type" {
83         case destination-ipv4-case {
84             when "../../afi = ipv4";
85             uses ipv4-prefixes;
86         }
87         case destination-ipv6-case {
88             when "../../afi = ipv6";
89             uses ipv6-prefixes;
90         }
91     }
92
93     augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-unreach-nlri/bgp-mp:withdrawn-routes/bgp-mp:destination-type" {
94         case destination-ipv4-case {
95             when "../../afi = ipv4";
96             uses ipv4-prefixes;
97         }
98         case destination-ipv6-case {
99             when "../../afi = ipv6";
100             uses ipv6-prefixes;
101         }
102     }
103
104     augment "/bgp-rib:application-rib/bgp-rib:tables/bgp-rib:routes" {
105         case ipv4-routes-case {
106             uses ipv4-routes;
107         }
108
109         case ipv6-routes-case {
110             uses ipv6-routes;
111         }
112     }
113
114     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" {
115         case ipv4-routes-case {
116             uses ipv4-routes;
117         }
118
119         case ipv6-routes-case {
120             uses ipv6-routes;
121         }
122     }
123
124     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-in/bgp-rib:tables/bgp-rib:routes" {
125         case ipv4-routes-case {
126             uses ipv4-routes;
127         }
128
129         case ipv6-routes-case {
130             uses ipv6-routes;
131         }
132     }
133
134     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:effective-rib-in/bgp-rib:tables/bgp-rib:routes" {
135         case ipv4-routes-case {
136             uses ipv4-routes;
137         }
138
139         case ipv6-routes-case {
140             uses ipv6-routes;
141         }
142     }
143
144     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-out/bgp-rib:tables/bgp-rib:routes" {
145         case ipv4-routes-case {
146             uses ipv4-routes;
147         }
148
149         case ipv6-routes-case {
150             uses ipv6-routes;
151         }
152     }
153 }
154