Mass-convert all compontents to use -no-zone addresses
[bgpcep.git] / bgp / extensions / linkstate / src / main / yang / bgp-segment-routing.yang
1 module bgp-segment-routing {
2     yang-version 1;
3     namespace "urn:opendaylight:params:xml:ns:yang:bgp-segment-routing-ext";
4     prefix "bgp-sr";
5
6     import network-concepts { prefix netc; revision-date 2013-11-25; }
7     import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
8     import odl-uint24 { prefix uint24; }
9
10     organization "Cisco Systems, Inc.";
11     contact "Iveta Halanova <ihalanov@cisco.com>";
12
13     description
14         "This module contains the base data concepts contained
15         in draft-gredler-idr-bgp-ls-segment-routing-ext-02.
16
17         Copyright (c)2015 Cisco Systems, Inc. All rights reserved.
18
19         This program and the accompanying materials are made available
20         under the terms of the Eclipse Public License v1.0 which
21         accompanies this distribution, and is available at
22         http://www.eclipse.org/legal/epl-v10.html";
23
24     revision "2015-10-14" {
25         description
26             "Initial revision.";
27     }
28
29     typedef algorithm {
30         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.1.2";
31         type enumeration {
32             enum shortest-path-first {
33                 value 0;
34             }
35             enum strict-shortest-path-first {
36                 value 1;
37             }
38         }
39     }
40
41     typedef weight {
42         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.2";
43         type uint8;
44     }
45
46     grouping sid-label-index {
47         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.3.4";
48         choice sid-label-index {
49             case local-label-case {
50                 leaf local-label {
51                     type netc:mpls-label;
52                 }
53             }
54             case ipv6-address-case {
55                 leaf ipv6-address {
56                     type inet:ipv6-address-no-zone;
57                 }
58             }
59             case sid-case {
60                 leaf sid {
61                     type uint32;
62                 }
63             }
64         }
65     }
66
67     grouping sr-capabilities-tlv {
68         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.1.1";
69         leaf mpls-ipv4 {
70             type boolean;
71         }
72         leaf mpls-ipv6 {
73             type boolean;
74         }
75         leaf sr-ipv6 {
76             type boolean;
77         }
78         leaf range-size {
79             type uint24:uint24;
80         }
81         uses sid-label-index;
82     }
83
84     grouping sr-algorithms-tlv {
85         leaf-list algorithms {
86             type algorithm;
87         }
88     }
89
90     grouping ospf-adj-flags {
91         reference "https://tools.ietf.org/html/draft-ietf-ospf-segment-routing-extensions-08#section-7.1";
92         leaf backup {
93             type boolean;
94         }
95         leaf set {
96             type boolean;
97         }
98     }
99
100     grouping adj-flags {
101         choice flags {
102             case ospf-adj-flags-case {
103                 container ospf-adj-flags {
104                     uses ospf-adj-flags;
105                 }
106             }
107             case isis-adj-flags-case {
108                 reference "https://tools.ietf.org/html/draft-ietf-isis-segment-routing-extensions-06#section-2.2.1";
109                 container isis-adj-flags {
110                     uses ospf-adj-flags;
111                     leaf address-family {
112                         type boolean;
113                     }
114                 }
115             }
116         }
117     }
118
119     grouping adj-sid-tlv {
120         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.2.1";
121         uses adj-flags;
122         uses epe-adj-sid-tlv;
123     }
124
125     grouping epe-adj-sid-tlv {
126         leaf weight {
127             type weight;
128         }
129         uses sid-label-index;
130     }
131
132     grouping lan-adj-sid-tlv {
133         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.2.2";
134         uses adj-flags;
135         leaf weight {
136             type weight;
137         }
138         leaf iso-system-id {
139             type netc:iso-system-identifier;
140         }
141         leaf neighbor-id {
142             type inet:ipv4-address-no-zone;
143         }
144         uses sid-label-index;
145     }
146
147     grouping prefix-flags {
148         leaf no-php {
149             type boolean;
150         }
151         leaf explicit-null {
152             type boolean;
153         }
154     }
155
156     grouping prefix-sid-tlv {
157         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.3.1";
158         choice flags {
159             case isis-prefix-flags-case {
160                 container isis-prefix-flags {
161                     reference "https://tools.ietf.org/html/draft-ietf-ospf-segment-routing-extensions-08#section-5";
162                     uses prefix-flags;
163                     leaf readvertisement {
164                         type boolean;
165                     }
166                     leaf node-sid {
167                         type boolean;
168                     }
169                 }
170             }
171             case ospf-prefix-flags-case {
172                 container ospf-prefix-flags {
173                     reference "https://tools.ietf.org/html/draft-ietf-ospf-segment-routing-extensions-05#section-5";
174                     uses prefix-flags;
175                     leaf mapping-server {
176                         type boolean;
177                     }
178                 }
179             }
180         }
181         leaf algorithm {
182             type algorithm;
183         }
184         uses sid-label-index;
185     }
186
187     grouping ipv6-prefix-sid-tlv {
188         reference "https://tools.ietf.org/html/draft-previdi-isis-ipv6-prefix-sid-02#page-2";
189         leaf algorithm {
190             type algorithm;
191         }
192     }
193
194     grouping ero-flags {
195         leaf loose {
196             type boolean;
197         }
198     }
199
200     grouping ero-ipv4-address {
201         uses ero-flags;
202         leaf address {
203             type inet:ipv4-address-no-zone;
204             mandatory true;
205         }
206     }
207
208     grouping ero-ipv6-address {
209         uses ero-flags;
210         leaf address {
211             type inet:ipv6-address-no-zone;
212             mandatory true;
213         }
214     }
215
216     grouping ero-unnumbered {
217         uses ero-flags;
218         leaf router-id {
219             type uint32;
220         }
221         leaf interface-id {
222             type uint32;
223         }
224     }
225
226     grouping binding-sub-tlvs {
227         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.3.4";
228         choice binding-sub-tlv {
229             case prefix-sid-case {
230                 container prefix-sid {
231                     uses prefix-sid-tlv;
232                 }
233             }
234             case ipv6-prefix-sid-case {
235                 container ipv6-prefix-sid {
236                     uses ipv6-prefix-sid-tlv;
237                 }
238             }
239             case sid-label-case {
240                 uses sid-label-index;
241             }
242             case ero-metric-case {
243                 leaf ero-metric {
244                     type netc:te-metric;
245                 }
246             }
247             case ipv4-ero-case {
248                 container ipv4-ero {
249                     uses ero-ipv4-address;
250                 }
251             }
252             case ipv6-ero-case {
253                 container ipv6-ero {
254                     uses ero-ipv6-address;
255                 }
256             }
257             case unnumbered-interface-id-ero-case {
258                 container unnumbered-interface-id-ero {
259                     uses ero-unnumbered;
260                 }
261             }
262             case ipv4-ero-backup-case {
263                 container ipv4-ero-backup {
264                     uses ero-ipv4-address;
265                 }
266             }
267             case ipv6-ero-backup-case {
268                 container ipv6-ero-backup {
269                     uses ero-ipv6-address;
270                 }
271             }
272             case unnumbered-interface-id-backup-ero-case {
273                 container unnumbered-interface-id-backup-ero {
274                     uses ero-unnumbered;
275                 }
276             }
277         }
278     }
279
280     grouping isis-binding-flags {
281         reference "https://tools.ietf.org/html/draft-ietf-isis-segment-routing-extensions-06#section-2.4";
282         leaf address-family {
283             type boolean;
284         }
285         leaf mirror-context {
286             type boolean;
287         }
288         leaf spread-tlv {
289             type boolean;
290         }
291         leaf leaked-from-level-2 {
292             type boolean;
293         }
294         leaf attached-flag {
295             type boolean;
296         }
297     }
298
299     grouping ospf-binding-flags {
300         reference "https://tools.ietf.org/html/draft-ietf-ospf-segment-routing-extensions-08#section-6";
301         leaf mirroring {
302             type boolean;
303         }
304     }
305
306     grouping binding-sid-tlv {
307         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.3.3";
308         leaf weight {
309             type weight;
310         }
311         choice flags {
312             case isis-binding-flags-case {
313                 uses isis-binding-flags;
314             }
315             case ospf-binding-flags-case {
316                 uses ospf-binding-flags;
317             }
318         }
319         list binding-sub-tlvs {
320             uses binding-sub-tlvs;
321         }
322     }
323
324     grouping range-sub-tlvs {
325         choice range-sub-tlv {
326             case binding-sid-tlv-case {
327                 uses binding-sid-tlv;
328             }
329             case prefix-sid-tlv-case {
330                 container prefix-sid-tlv {
331                     uses prefix-sid-tlv;
332                 }
333             }
334             case ipv6-prefix-sid-tlv-case {
335                 container ipv6-prefix-sid-tlv {
336                     uses ipv6-prefix-sid-tlv;
337                 }
338             }
339             case sid-label-tlv-case {
340                 uses sid-label-index;
341             }
342         }
343     }
344
345     grouping range-tlv {
346         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.3.2";
347         leaf inter-area {
348             type boolean;
349         }
350         leaf range-size {
351             type uint16;
352         }
353         list sub-tlvs {
354             uses range-sub-tlvs;
355         }
356     }
357 }