Code clean up
[bgpcep.git] / bgp / extensions / labeled-unicast / src / main / yang / bgp-labeled-unicast.yang
1 module bgp-labeled-unicast {
2     yang-version 1;
3     namespace "urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast";
4     prefix "bgp-lu";
5
6     import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
7     import bgp-message { prefix bgp-msg; revision-date 2018-03-29; }
8     import bgp-multiprotocol { prefix bgp-mp; revision-date 2018-03-29; }
9     import bgp-rib { prefix bgp-rib; revision-date 2018-03-29; }
10     import bgp-types { prefix bgp-t; revision-date 2018-03-29; }
11     import bmp-monitor { prefix bmp-mon; revision-date 2018-03-29; }
12     import network-concepts { prefix netc; revision-date 2013-11-25; }
13     import bgp-inet { prefix bgp-inet; revision-date 2018-03-29; }
14
15     organization "Cisco Systems, Inc.";
16     contact "GE QU <gequ@cisco.com>"
17     + " Mingming Chen <mingmche@cisco.com>";
18
19     description
20         "This module contains the base data model of a BGP message.
21         It rolls up the definitions contained in RFC3107.
22
23         Copyright (c)2015 Cisco Systems, Inc. All rights reserved.
24
25         This program and the accompanying materials are made available
26         under the terms of the Eclipse Public License v1.0 which
27         accompanies this distribution, and is available at
28         http://www.eclipse.org/legal/epl-v10.html";
29
30     revision "2018-03-29" {
31         description "Add support for add-path for all afi/safi.";
32     }
33
34     revision "2017-12-07" {
35         description "Add support for add-path in base BGP NLRI.";
36     }
37
38     revision "2015-05-25" {
39         description
40             "Initial Version.";
41     }
42
43     identity labeled-unicast-subsequent-address-family {
44         reference "https://tools.ietf.org/html/rfc3107#section-3";
45         base bgp-t:subsequent-address-family;
46     }
47
48     typedef srgb {
49         type uint32 {
50             range "0..16777215";
51         }
52     }
53
54     grouping label {
55         reference "https://tools.ietf.org/html/rfc3032#section-2.1";
56         description
57             "The lable stack entry.";
58         leaf label-value {
59             type netc:mpls-label;
60         }
61     }
62
63     grouping labeled-unicast {
64         reference "https://tools.ietf.org/html/rfc3107#section-3";
65         list label-stack {
66             description
67                 "The Label field carries one or more labels (that corresponds to
68                  the stack of labels). Each label is encoded as 3
69                  octets, where the high-order 20 bits contain the label value,
70                  and the low order bit contains 'Bottom of Stack'.";
71             uses label;
72             ordered-by user;
73         }
74         leaf prefix {
75             type inet:ip-prefix;
76         }
77     }
78
79     grouping labeled-unicast-destination {
80         list c-labeled-unicast-destination {
81             uses labeled-unicast;
82             uses bgp-msg:path-id-grouping;
83         }
84     }
85
86     grouping labeled-unicast-routes-list {
87         list labeled-unicast-route {
88             key "route-key path-id";
89             uses labeled-unicast;
90             uses bgp-rib:route {
91                 augment "attributes/bgp-prefix-sid/bgp-prefix-sid-tlvs/bgp-prefix-sid-tlv" {
92                     case lu-label-index-tlv {
93                         uses label-index-tlv;
94                     }
95                     case lu-originator-srgb-tlv {
96                         uses originator-srgb-tlv;
97                     }
98                 }
99             }
100         }
101     }
102
103     grouping labeled-unicast-routes {
104         container labeled-unicast-routes {
105             uses labeled-unicast-routes-list;
106         }
107     }
108
109     grouping labeled-unicast-ipv6-routes {
110         container labeled-unicast-ipv6-routes {
111             uses labeled-unicast-routes-list;
112         }
113     }
114
115     augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-reach-nlri/bgp-mp:advertized-routes/bgp-mp:destination-type" {
116         case destination-labeled-unicast-case {
117             container destination-labeled-unicast {
118                 uses labeled-unicast-destination;
119             }
120         }
121         case destination-ipv6-labeled-unicast-case {
122             container destination-ipv6-labeled-unicast {
123                 uses labeled-unicast-destination;
124             }
125         }
126     }
127
128     augment "/bgp-msg:update/bgp-msg:attributes/bgp-mp:mp-unreach-nlri/bgp-mp:withdrawn-routes/bgp-mp:destination-type" {
129         case destination-labeled-unicast-case {
130             container destination-labeled-unicast {
131                 uses labeled-unicast-destination;
132             }
133         }
134         case destination-ipv6-labeled-unicast-case {
135             container destination-ipv6-labeled-unicast {
136                 uses labeled-unicast-destination;
137             }
138         }
139     }
140
141     augment "/bgp-rib:application-rib/bgp-rib:tables/bgp-rib:routes" {
142         case labeled-unicast-routes-case {
143             uses labeled-unicast-routes;
144         }
145         case labeled-unicast-ipv6-routes-case {
146             uses labeled-unicast-ipv6-routes;
147         }
148     }
149
150     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" {
151         case labeled-unicast-routes-case {
152             uses labeled-unicast-routes;
153         }
154         case labeled-unicast-ipv6-routes-case {
155             uses labeled-unicast-ipv6-routes;
156         }
157     }
158
159     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-in/bgp-rib:tables/bgp-rib:routes" {
160         case labeled-unicast-routes-case {
161             uses labeled-unicast-routes;
162         }
163         case labeled-unicast-ipv6-routes-case {
164             uses labeled-unicast-ipv6-routes;
165         }
166     }
167
168     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:effective-rib-in/bgp-rib:tables/bgp-rib:routes" {
169         case labeled-unicast-routes-case {
170             uses labeled-unicast-routes;
171         }
172         case labeled-unicast-ipv6-routes-case {
173             uses labeled-unicast-ipv6-routes;
174         }
175     }
176
177     augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:peer/bgp-rib:adj-rib-out/bgp-rib:tables/bgp-rib:routes" {
178         case labeled-unicast-routes-case {
179             uses labeled-unicast-routes;
180         }
181         case labeled-unicast-ipv6-routes-case {
182             uses labeled-unicast-ipv6-routes;
183         }
184     }
185
186     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" {
187         case labeled-unicast-routes-case {
188             uses labeled-unicast-routes;
189         }
190         case labeled-unicast-ipv6-routes-case {
191             uses labeled-unicast-ipv6-routes;
192         }
193     }
194
195     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" {
196         case labeled-unicast-routes-case {
197             uses labeled-unicast-routes;
198         }
199         case labeled-unicast-ipv6-routes-case {
200             uses labeled-unicast-ipv6-routes;
201         }
202     }
203
204     grouping label-index-tlv {
205         reference "https://tools.ietf.org/html/draft-ietf-idr-bgp-prefix-sid-02#section-4.1";
206         leaf label-index-tlv {
207             description "Value representing the index value in the SRGB space.";
208             type uint32;
209             mandatory true;
210         }
211     }
212
213     grouping originator-srgb-tlv {
214         reference "https://tools.ietf.org/html/draft-ietf-idr-bgp-prefix-sid-02#section-4.3";
215         list srgb-value {
216             description "Originator SRGB: 3 octets of base followed by 3 octets of range.";
217             leaf base {
218                 type srgb;
219                 mandatory true;
220             }
221             leaf range {
222                 type srgb;
223                 mandatory true;
224             }
225         }
226     }
227
228     augment "/bgp-msg:update/bgp-msg:attributes/bgp-msg:bgp-prefix-sid/bgp-msg:bgp-prefix-sid-tlvs/bgp-msg:bgp-prefix-sid-tlv" {
229         reference "https://tools.ietf.org/html/draft-ietf-idr-bgp-prefix-sid-02";
230         case lu-label-index-tlv {
231             uses label-index-tlv;
232         }
233         case lu-originator-srgb-tlv {
234             uses originator-srgb-tlv;
235         }
236     }
237 }