BUG-4827: Modify ipv4-routes list model, to include path-id as part of the key
[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     import bmp-monitor { prefix bmp-mon; revision-date 2015-05-12; }
11
12     organization "Cisco Systems, Inc.";
13     contact "Dana Kutenicsova <dkutenic@cisco.com>";
14
15     description
16             "This module contains the concept of IPv4 and IPv6 routes,
17     split from bgp-rib and bgp-multiprotocol models.
18
19             Copyright (c)2015 Cisco Systems, Inc. All rights reserved.
20
21             This program and the accompanying materials are made available
22             under the terms of the Eclipse Public License v1.0 which
23             accompanies this distribution, and is available at
24             http://www.eclipse.org/legal/epl-v10.html";
25
26     revision "2015-03-05" {
27             description
28                     "Initial revision.";
29     }
30
31     grouping ipv4-prefix {
32         leaf prefix {
33             type inet:ipv4-prefix;
34         }
35         leaf path-id {
36             type bgp-msg:path-id;
37         }
38     }
39
40     grouping ipv6-prefix {
41         leaf prefix {
42             type inet:ipv6-prefix;
43         }
44     }
45
46     grouping ipv4-prefixes {
47         container destination-ipv4 {
48             list ipv4-prefixes {
49                 uses ipv4-prefix;
50             }
51         }
52     }
53
54     grouping ipv6-prefixes {
55         container destination-ipv6 {
56             list ipv6-prefixes {
57                 uses ipv6-prefix;
58             }
59         }
60     }
61
62     grouping ipv4-routes {
63         container ipv4-routes {
64             list ipv4-route {
65                 uses ipv4-prefix;
66
67                 key "prefix path-id";
68
69                 uses bgp-rib:route;
70             }
71         }
72     }
73
74     grouping ipv6-routes {
75         container ipv6-routes {
76             list ipv6-route {
77                 uses ipv6-prefix;
78
79                 key prefix;
80
81                 uses bgp-rib:route;
82             }
83         }
84     }
85
86     augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-reach-nlri/bgp-mp:advertized-routes/bgp-mp:destination-type" {
87         case destination-ipv4-case {
88             when "../../afi = ipv4";
89             uses ipv4-prefixes;
90         }
91         case destination-ipv6-case {
92             when "../../afi = ipv6";
93             uses ipv6-prefixes;
94         }
95     }
96
97     augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-unreach-nlri/bgp-mp:withdrawn-routes/bgp-mp:destination-type" {
98         case destination-ipv4-case {
99             when "../../afi = ipv4";
100             uses ipv4-prefixes;
101         }
102         case destination-ipv6-case {
103             when "../../afi = ipv6";
104             uses ipv6-prefixes;
105         }
106     }
107
108     augment "/bgp-rib:application-rib/bgp-rib:tables/bgp-rib:routes" {
109         case ipv4-routes-case {
110             uses ipv4-routes;
111         }
112
113         case ipv6-routes-case {
114             uses ipv6-routes;
115         }
116     }
117
118     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" {
119         case ipv4-routes-case {
120             uses ipv4-routes;
121         }
122
123         case ipv6-routes-case {
124             uses ipv6-routes;
125         }
126     }
127
128     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-in/bgp-rib:tables/bgp-rib:routes" {
129         case ipv4-routes-case {
130             uses ipv4-routes;
131         }
132
133         case ipv6-routes-case {
134             uses ipv6-routes;
135         }
136     }
137
138     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:effective-rib-in/bgp-rib:tables/bgp-rib:routes" {
139         case ipv4-routes-case {
140             uses ipv4-routes;
141         }
142
143         case ipv6-routes-case {
144             uses ipv6-routes;
145         }
146     }
147
148     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-out/bgp-rib:tables/bgp-rib:routes" {
149         case ipv4-routes-case {
150             uses ipv4-routes;
151         }
152
153         case ipv6-routes-case {
154             uses ipv6-routes;
155         }
156     }
157
158     augment "/bmp-mon:bmp-monitor/bmp-mon:monitor/bmp-mon:router/bmp-mon:peer/bmp-mon:pre-policy-rib/bmp-mon:tables/bmp-mon:routes" {
159         case ipv4-routes-case {
160             uses ipv4-routes;
161         }
162
163         case ipv6-routes-case {
164             uses ipv6-routes;
165         }
166     }
167
168     augment "/bmp-mon:bmp-monitor/bmp-mon:monitor/bmp-mon:router/bmp-mon:peer/bmp-mon:post-policy-rib/bmp-mon:tables/bmp-mon:routes" {
169         case ipv4-routes-case {
170             uses ipv4-routes;
171         }
172
173         case ipv6-routes-case {
174             uses ipv6-routes;
175         }
176     }
177 }
178