Added
Link Here
|
1 |
--- src/actions/attribute.proto.orig 2023-03-01 15:23:34.000000000 +0100 |
2 |
+++ src/actions/attribute.proto 2023-03-12 18:51:08.820424000 +0100 |
3 |
@@ -22,13 +22,19 @@ |
4 |
syntax = "proto3"; |
5 |
|
6 |
+package apipb; |
7 |
+option go_package = "github.com/osrg/gobgp/v3/api;apipb"; |
8 |
+ |
9 |
import "google/protobuf/any.proto"; |
10 |
import "gobgp.proto"; |
11 |
|
12 |
-package gobgpapi; |
13 |
|
14 |
message OriginAttribute { uint32 origin = 1; } |
15 |
|
16 |
message AsSegment { |
17 |
- uint32 type = 1; |
18 |
+ enum Type { |
19 |
+ UNKNOWN = 0; AS_SET = 1; AS_SEQUENCE = 2; |
20 |
+ AS_CONFED_SEQUENCE = 3; AS_CONFED_SET = 4; |
21 |
+ } |
22 |
+ Type type = 1; |
23 |
repeated uint32 numbers = 2; |
24 |
} |
25 |
@@ -45,6 +51,6 @@ |
26 |
|
27 |
message AggregatorAttribute { |
28 |
- uint32 as = 2; |
29 |
- string address = 3; |
30 |
+ uint32 asn = 1; |
31 |
+ string address = 2; |
32 |
} |
33 |
|
34 |
@@ -77,5 +83,5 @@ |
35 |
message EncapsulationNLRI { string address = 1; } |
36 |
|
37 |
-message RouteDistinguisherTwoOctetAS { |
38 |
+message RouteDistinguisherTwoOctetASN { |
39 |
uint32 admin = 1; |
40 |
uint32 assigned = 2; |
41 |
@@ -87,5 +93,5 @@ |
42 |
} |
43 |
|
44 |
-message RouteDistinguisherFourOctetAS { |
45 |
+message RouteDistinguisherFourOctetASN { |
46 |
uint32 admin = 1; |
47 |
uint32 assigned = 2; |
48 |
@@ -101,7 +107,7 @@ |
49 |
message EVPNEthernetAutoDiscoveryRoute { |
50 |
// One of: |
51 |
- // - RouteDistinguisherTwoOctetAS |
52 |
- // - RouteDistinguisherIPAddressAS |
53 |
- // - RouteDistinguisherFourOctetAS |
54 |
+ // - RouteDistinguisherTwoOctetASN |
55 |
+ // - RouteDistinguisherIPAddress |
56 |
+ // - RouteDistinguisherFourOctetASN |
57 |
google.protobuf.Any rd = 1; |
58 |
EthernetSegmentIdentifier esi = 2; |
59 |
@@ -114,7 +120,7 @@ |
60 |
message EVPNMACIPAdvertisementRoute { |
61 |
// One of: |
62 |
- // - RouteDistinguisherTwoOctetAS |
63 |
- // - RouteDistinguisherIPAddressAS |
64 |
- // - RouteDistinguisherFourOctetAS |
65 |
+ // - RouteDistinguisherTwoOctetASN |
66 |
+ // - RouteDistinguisherIPAddress |
67 |
+ // - RouteDistinguisherFourOctetASN |
68 |
google.protobuf.Any rd = 1; |
69 |
EthernetSegmentIdentifier esi = 2; |
70 |
@@ -129,7 +135,7 @@ |
71 |
message EVPNInclusiveMulticastEthernetTagRoute { |
72 |
// One of: |
73 |
- // - RouteDistinguisherTwoOctetAS |
74 |
- // - RouteDistinguisherIPAddressAS |
75 |
- // - RouteDistinguisherFourOctetAS |
76 |
+ // - RouteDistinguisherTwoOctetASN |
77 |
+ // - RouteDistinguisherIPAddress |
78 |
+ // - RouteDistinguisherFourOctetASN |
79 |
google.protobuf.Any rd = 1; |
80 |
uint32 ethernet_tag = 2; |
81 |
@@ -141,7 +147,7 @@ |
82 |
message EVPNEthernetSegmentRoute { |
83 |
// One of: |
84 |
- // - RouteDistinguisherTwoOctetAS |
85 |
- // - RouteDistinguisherIPAddressAS |
86 |
- // - RouteDistinguisherFourOctetAS |
87 |
+ // - RouteDistinguisherTwoOctetASN |
88 |
+ // - RouteDistinguisherIPAddress |
89 |
+ // - RouteDistinguisherFourOctetASN |
90 |
google.protobuf.Any rd = 1; |
91 |
EthernetSegmentIdentifier esi = 2; |
92 |
@@ -153,7 +159,7 @@ |
93 |
message EVPNIPPrefixRoute { |
94 |
// One of: |
95 |
- // - RouteDistinguisherTwoOctetAS |
96 |
- // - RouteDistinguisherIPAddressAS |
97 |
- // - RouteDistinguisherFourOctetAS |
98 |
+ // - RouteDistinguisherTwoOctetASN |
99 |
+ // - RouteDistinguisherIPAddress |
100 |
+ // - RouteDistinguisherFourOctetASN |
101 |
google.protobuf.Any rd = 1; |
102 |
EthernetSegmentIdentifier esi = 2; |
103 |
@@ -169,7 +175,7 @@ |
104 |
message EVPNIPMSIRoute { |
105 |
// One of: |
106 |
- // - RouteDistinguisherTwoOctetAS |
107 |
- // - RouteDistinguisherIPAddressAS |
108 |
- // - RouteDistinguisherFourOctetAS |
109 |
+ // - RouteDistinguisherTwoOctetASN |
110 |
+ // - RouteDistinguisherIPAddress |
111 |
+ // - RouteDistinguisherFourOctetASN |
112 |
google.protobuf.Any rd = 1; |
113 |
uint32 ethernet_tag = 2; |
114 |
@@ -214,5 +220,5 @@ |
115 |
// - AFI=1, SAFI=132 |
116 |
message RouteTargetMembershipNLRI { |
117 |
- uint32 as = 1; |
118 |
+ uint32 asn = 1; |
119 |
// One of: |
120 |
// - TwoOctetAsSpecificExtended |
121 |
@@ -287,4 +293,6 @@ |
122 |
bool pseudonode = 4; |
123 |
string igp_router_id = 5; |
124 |
+ string bgp_router_id = 6; |
125 |
+ uint32 bgp_confederation_member = 7; |
126 |
} |
127 |
|
128 |
@@ -298,7 +306,17 @@ |
129 |
} |
130 |
|
131 |
+enum LsOspfRouteType { |
132 |
+ LS_OSPF_ROUTE_TYPE_UNKNOWN = 0; |
133 |
+ LS_OSPF_ROUTE_TYPE_INTRA_AREA = 1; |
134 |
+ LS_OSPF_ROUTE_TYPE_INTER_AREA = 2; |
135 |
+ LS_OSPF_ROUTE_TYPE_EXTERNAL1 = 3; |
136 |
+ LS_OSPF_ROUTE_TYPE_EXTERNAL2 = 4; |
137 |
+ LS_OSPF_ROUTE_TYPE_NSSA1 = 5; |
138 |
+ LS_OSPF_ROUTE_TYPE_NSSA2 = 6; |
139 |
+} |
140 |
+ |
141 |
message LsPrefixDescriptor { |
142 |
repeated string ip_reachability = 1; |
143 |
- string ospf_route_type = 2; |
144 |
+ LsOspfRouteType ospf_route_type = 2; |
145 |
} |
146 |
|
147 |
@@ -351,6 +369,49 @@ |
148 |
} |
149 |
|
150 |
+message MUPInterworkSegmentDiscoveryRoute { |
151 |
+ // One of: |
152 |
+ // - RouteDistinguisherTwoOctetASN |
153 |
+ // - RouteDistinguisherIPAddress |
154 |
+ // - RouteDistinguisherFourOctetASN |
155 |
+ google.protobuf.Any rd = 1; |
156 |
+ string prefix = 2; |
157 |
+} |
158 |
+ |
159 |
+message MUPDirectSegmentDiscoveryRoute { |
160 |
+ // One of: |
161 |
+ // - RouteDistinguisherTwoOctetASN |
162 |
+ // - RouteDistinguisherIPAddress |
163 |
+ // - RouteDistinguisherFourOctetASN |
164 |
+ google.protobuf.Any rd = 1; |
165 |
+ string address = 2; |
166 |
+} |
167 |
+ |
168 |
+message MUPType1SessionTransformedRoute { |
169 |
+ // One of: |
170 |
+ // - RouteDistinguisherTwoOctetASN |
171 |
+ // - RouteDistinguisherIPAddress |
172 |
+ // - RouteDistinguisherFourOctetASN |
173 |
+ google.protobuf.Any rd = 1; |
174 |
+ uint32 prefix_length = 2 [deprecated = true]; |
175 |
+ string prefix = 3; |
176 |
+ uint32 teid = 4; |
177 |
+ uint32 qfi = 5; |
178 |
+ uint32 endpoint_address_length = 6; |
179 |
+ string endpoint_address = 7; |
180 |
+} |
181 |
+ |
182 |
+message MUPType2SessionTransformedRoute { |
183 |
+ // One of: |
184 |
+ // - RouteDistinguisherTwoOctetASN |
185 |
+ // - RouteDistinguisherIPAddress |
186 |
+ // - RouteDistinguisherFourOctetASN |
187 |
+ google.protobuf.Any rd = 1; |
188 |
+ uint32 endpoint_address_length = 2; |
189 |
+ string endpoint_address = 3; |
190 |
+ uint32 teid = 4; |
191 |
+} |
192 |
+ |
193 |
message MpReachNLRIAttribute { |
194 |
- gobgpapi.Family family = 1; |
195 |
+ apipb.Family family = 1; |
196 |
repeated string next_hops = 2; |
197 |
// Each NLRI must be one of: |
198 |
@@ -371,9 +432,13 @@ |
199 |
// - LsAddrPrefix |
200 |
// - SR Policy NLRI |
201 |
+ // - MUPInterworkSegmentDiscoveryRoute |
202 |
+ // - MUPDirectSegmentDiscoveryRoute |
203 |
+ // - MUPType1SessionTransformedRoute |
204 |
+ // - MUPType2SessionTransformedRoute |
205 |
repeated google.protobuf.Any nlris = 3; |
206 |
} |
207 |
|
208 |
message MpUnreachNLRIAttribute { |
209 |
- gobgpapi.Family family = 1; |
210 |
+ apipb.Family family = 1; |
211 |
// The same as NLRI field of MpReachNLRIAttribute |
212 |
repeated google.protobuf.Any nlris = 3; |
213 |
@@ -383,5 +448,5 @@ |
214 |
bool is_transitive = 1; |
215 |
uint32 sub_type = 2; |
216 |
- uint32 as = 3; |
217 |
+ uint32 asn = 3; |
218 |
uint32 local_admin = 4; |
219 |
} |
220 |
@@ -397,8 +462,13 @@ |
221 |
bool is_transitive = 1; |
222 |
uint32 sub_type = 2; |
223 |
- uint32 as = 3; |
224 |
+ uint32 asn = 3; |
225 |
uint32 local_admin = 4; |
226 |
} |
227 |
|
228 |
+message LinkBandwidthExtended { |
229 |
+ uint32 asn = 1; |
230 |
+ float bandwidth = 2; |
231 |
+} |
232 |
+ |
233 |
message ValidationExtended { uint32 state = 1; } |
234 |
|
235 |
@@ -429,5 +499,5 @@ |
236 |
|
237 |
message TrafficRateExtended { |
238 |
- uint32 as = 1; |
239 |
+ uint32 asn = 1; |
240 |
float rate = 2; |
241 |
} |
242 |
@@ -439,5 +509,5 @@ |
243 |
|
244 |
message RedirectTwoOctetAsSpecificExtended { |
245 |
- uint32 as = 1; |
246 |
+ uint32 asn = 1; |
247 |
uint32 local_admin = 2; |
248 |
} |
249 |
@@ -449,5 +519,5 @@ |
250 |
|
251 |
message RedirectFourOctetAsSpecificExtended { |
252 |
- uint32 as = 1; |
253 |
+ uint32 asn = 1; |
254 |
uint32 local_admin = 2; |
255 |
} |
256 |
@@ -455,4 +525,10 @@ |
257 |
message TrafficRemarkExtended { uint32 dscp = 1; } |
258 |
|
259 |
+message MUPExtended { |
260 |
+ uint32 sub_type = 1; |
261 |
+ uint32 segment_id2 = 2; |
262 |
+ uint32 segment_id4 = 3; |
263 |
+} |
264 |
+ |
265 |
message UnknownExtended { |
266 |
uint32 type = 1; |
267 |
@@ -475,4 +551,5 @@ |
268 |
// - RedirectFourOctetAsSpecificExtended |
269 |
// - TrafficRemarkExtended |
270 |
+ // - MUPExtended |
271 |
// - UnknownExtended |
272 |
repeated google.protobuf.Any communities = 1; |
273 |
@@ -482,5 +559,5 @@ |
274 |
|
275 |
message As4AggregatorAttribute { |
276 |
- uint32 as = 2; |
277 |
+ uint32 asn = 2; |
278 |
string address = 3; |
279 |
} |
280 |
@@ -559,7 +636,11 @@ |
281 |
ENDT_WITH_USP_USD = 38; |
282 |
ENDT_WITH_PSP_USP_USD = 39; |
283 |
+ ENDM_GTP6D = 69; // 0x0045 |
284 |
+ ENDM_GTP6DI = 70; // 0x0046 |
285 |
+ ENDM_GTP6E = 71; // 0x0047 |
286 |
+ ENDM_GTP4E = 72; // 0x0048 |
287 |
} |
288 |
|
289 |
-message SRv6EndPpointBehavior { |
290 |
+message SRv6EndPointBehavior { |
291 |
SRv6Behavior behavior = 1; |
292 |
uint32 block_len = 2; |
293 |
@@ -574,5 +655,5 @@ |
294 |
bool b_flag = 3; |
295 |
bytes sid = 4; |
296 |
- SRv6EndPpointBehavior endpoint_behavior_structure = 5; |
297 |
+ SRv6EndPointBehavior endpoint_behavior_structure = 5; |
298 |
} |
299 |
|
300 |
@@ -603,5 +684,6 @@ |
301 |
message SegmentTypeB { |
302 |
SegmentFlags flags = 1; |
303 |
- uint32 label = 2; |
304 |
+ bytes sid = 2; |
305 |
+ SRv6EndPointBehavior endpoint_behavior_structure = 3; |
306 |
} |
307 |
|
308 |
@@ -749,8 +831,28 @@ |
309 |
} |
310 |
|
311 |
+message LsBgpPeerSegmentSIDFlags { |
312 |
+ bool value = 1; |
313 |
+ bool local = 2; |
314 |
+ bool backup = 3; |
315 |
+ bool persistent = 4; |
316 |
+} |
317 |
+ |
318 |
+message LsBgpPeerSegmentSID { |
319 |
+ LsBgpPeerSegmentSIDFlags flags = 1; |
320 |
+ uint32 weight = 2; |
321 |
+ uint32 sid = 3; |
322 |
+} |
323 |
+ |
324 |
+message LsAttributeBgpPeerSegment { |
325 |
+ LsBgpPeerSegmentSID bgp_peer_node_sid = 1; |
326 |
+ LsBgpPeerSegmentSID bgp_peer_adjacency_sid = 2; |
327 |
+ LsBgpPeerSegmentSID bgp_peer_set_sid = 3; |
328 |
+} |
329 |
+ |
330 |
message LsAttribute { |
331 |
LsAttributeNode node = 1; |
332 |
LsAttributeLink link = 2; |
333 |
LsAttributePrefix prefix = 3; |
334 |
+ LsAttributeBgpPeerSegment bgp_peer_segment = 4; |
335 |
} |
336 |
|
337 |
@@ -761,8 +863,8 @@ |
338 |
} |
339 |
|
340 |
-// https://tools.ietf.org/html/draft-dawra-bess-srv6-services-02#section-2.1.1 |
341 |
+// https://www.rfc-editor.org/rfc/rfc9252.html#section-3.2.1 |
342 |
message SRv6StructureSubSubTLV { |
343 |
- uint32 local_block_length = 1; |
344 |
- uint32 local_node_length = 2; |
345 |
+ uint32 locator_block_length = 1; |
346 |
+ uint32 locator_node_length = 2; |
347 |
uint32 function_length = 3; |
348 |
uint32 argument_length = 4; |
349 |
@@ -788,5 +890,5 @@ |
350 |
} |
351 |
|
352 |
-// https://tools.ietf.org/html/draft-dawra-bess-srv6-services-02#section-2 |
353 |
+// https://www.rfc-editor.org/rfc/rfc9252.html#section-2 |
354 |
message SRv6L3ServiceTLV { |
355 |
// SRv6TLV is one of: |
356 |
@@ -795,4 +897,11 @@ |
357 |
} |
358 |
|
359 |
+// https://www.rfc-editor.org/rfc/rfc9252.html#section-2 |
360 |
+message SRv6L2ServiceTLV { |
361 |
+ // SRv6TLV is one of: |
362 |
+ // - SRv6InformationSubTLV |
363 |
+ map<uint32, SRv6TLV> sub_tlvs = 1; |
364 |
+} |
365 |
+ |
366 |
// https://tools.ietf.org/html/rfc8669 |
367 |
message PrefixSID { |
368 |
@@ -801,5 +910,5 @@ |
369 |
// - OriginatorSRGBTLV Type 3 (not yet implemented) |
370 |
// - SRv6L3ServiceTLV Type 5 |
371 |
- // - SRv6L2ServiceTLV Type 6 (not yet implemented) |
372 |
+ // - SRv6L2ServiceTLV Type 6 |
373 |
repeated google.protobuf.Any tlvs = 1; |
374 |
} |