Lines 1-1296
Link Here
|
1 |
commit 4fbe0484edc47f10852da879125c30504b4f69ad |
|
|
2 |
Author: Paul Jakma <paul@quagga.net> |
3 |
Date: Sun Dec 5 20:28:02 2010 +0000 |
4 |
|
5 |
bgpd: Remove AS Path limit/TTL functionality |
6 |
|
7 |
* draft-ietf-idr-as-pathlimit doesn't seem to have gone anywhere, and its |
8 |
author does not think it will make progress in IDR. Remove all support |
9 |
introduced for it, but leave stubs for the commands to avoid breaking |
10 |
any configurations. |
11 |
|
12 |
Basically reverts cecab5e9725792e60a5e4b473e238a14cd85815d. |
13 |
|
14 |
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c |
15 |
index c6fd3a5..aa6fa61 100644 |
16 |
--- bgpd/bgp_attr.c |
17 |
+++ bgpd/bgp_attr.c |
18 |
@@ -359,11 +359,6 @@ attrhash_key_make (void *p) |
19 |
key += attr->nexthop.s_addr; |
20 |
key += attr->med; |
21 |
key += attr->local_pref; |
22 |
- if (attr->pathlimit.as) |
23 |
- { |
24 |
- key += attr->pathlimit.ttl; |
25 |
- key += attr->pathlimit.as; |
26 |
- } |
27 |
|
28 |
if (attr->extra) |
29 |
{ |
30 |
@@ -415,9 +410,7 @@ attrhash_cmp (const void *p1, const void *p2) |
31 |
&& attr1->aspath == attr2->aspath |
32 |
&& attr1->community == attr2->community |
33 |
&& attr1->med == attr2->med |
34 |
- && attr1->local_pref == attr2->local_pref |
35 |
- && attr1->pathlimit.ttl == attr2->pathlimit.ttl |
36 |
- && attr1->pathlimit.as == attr2->pathlimit.as) |
37 |
+ && attr1->local_pref == attr2->local_pref) |
38 |
{ |
39 |
const struct attr_extra *ae1 = attr1->extra; |
40 |
const struct attr_extra *ae2 = attr2->extra; |
41 |
@@ -704,43 +697,6 @@ bgp_attr_flush (struct attr *attr) |
42 |
} |
43 |
} |
44 |
|
45 |
-/* Parse AS_PATHLIMIT attribute in an UPDATE */ |
46 |
-static int |
47 |
-bgp_attr_aspathlimit (struct peer *peer, bgp_size_t length, |
48 |
- struct attr *attr, u_char flag, u_char *startp) |
49 |
-{ |
50 |
- bgp_size_t total; |
51 |
- |
52 |
- total = length + (CHECK_FLAG (flag, BGP_ATTR_FLAG_EXTLEN) ? 4 : 3); |
53 |
- |
54 |
- if (!CHECK_FLAG(flag, BGP_ATTR_FLAG_TRANS) |
55 |
- || !CHECK_FLAG(flag, BGP_ATTR_FLAG_OPTIONAL)) |
56 |
- { |
57 |
- zlog (peer->log, LOG_ERR, |
58 |
- "AS-Pathlimit attribute flag isn't transitive %d", flag); |
59 |
- bgp_notify_send_with_data (peer, |
60 |
- BGP_NOTIFY_UPDATE_ERR, |
61 |
- BGP_NOTIFY_UPDATE_ATTR_FLAG_ERR, |
62 |
- startp, total); |
63 |
- return -1; |
64 |
- } |
65 |
- |
66 |
- if (length != 5) |
67 |
- { |
68 |
- zlog (peer->log, LOG_ERR, |
69 |
- "AS-Pathlimit length, %u, is not 5", length); |
70 |
- bgp_notify_send_with_data (peer, |
71 |
- BGP_NOTIFY_UPDATE_ERR, |
72 |
- BGP_NOTIFY_UPDATE_ATTR_FLAG_ERR, |
73 |
- startp, total); |
74 |
- return -1; |
75 |
- } |
76 |
- |
77 |
- attr->pathlimit.ttl = stream_getc (BGP_INPUT(peer)); |
78 |
- attr->pathlimit.as = stream_getl (BGP_INPUT(peer)); |
79 |
- attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_AS_PATHLIMIT); |
80 |
- return 0; |
81 |
-} |
82 |
/* Get origin attribute of the update message. */ |
83 |
static int |
84 |
bgp_attr_origin (struct peer *peer, bgp_size_t length, |
85 |
@@ -1717,9 +1673,6 @@ bgp_attr_parse (struct peer *peer, struct attr *attr, bgp_size_t size, |
86 |
case BGP_ATTR_EXT_COMMUNITIES: |
87 |
ret = bgp_attr_ext_communities (peer, length, attr, flag); |
88 |
break; |
89 |
- case BGP_ATTR_AS_PATHLIMIT: |
90 |
- ret = bgp_attr_aspathlimit (peer, length, attr, flag, startp); |
91 |
- break; |
92 |
default: |
93 |
ret = bgp_attr_unknown (peer, attr, flag, type, length, startp); |
94 |
break; |
95 |
@@ -2274,24 +2227,6 @@ bgp_packet_attribute (struct bgp *bgp, struct peer *peer, |
96 |
stream_put_ipv4 (s, attr->extra->aggregator_addr.s_addr); |
97 |
} |
98 |
|
99 |
- /* AS-Pathlimit */ |
100 |
- if (attr->pathlimit.ttl) |
101 |
- { |
102 |
- u_int32_t as = attr->pathlimit.as; |
103 |
- |
104 |
- /* should already have been done in announce_check(), |
105 |
- * but just in case.. |
106 |
- */ |
107 |
- if (!as) |
108 |
- as = peer->local_as; |
109 |
- |
110 |
- stream_putc (s, BGP_ATTR_FLAG_OPTIONAL|BGP_ATTR_FLAG_TRANS); |
111 |
- stream_putc (s, BGP_ATTR_AS_PATHLIMIT); |
112 |
- stream_putc (s, 5); |
113 |
- stream_putc (s, attr->pathlimit.ttl); |
114 |
- stream_putl (s, as); |
115 |
- } |
116 |
- |
117 |
/* Unknown transit attribute. */ |
118 |
if (attr->extra && attr->extra->transit) |
119 |
stream_put (s, attr->extra->transit->val, attr->extra->transit->length); |
120 |
@@ -2503,16 +2438,6 @@ bgp_dump_routes_attr (struct stream *s, struct attr *attr, |
121 |
} |
122 |
#endif /* HAVE_IPV6 */ |
123 |
|
124 |
- /* AS-Pathlimit */ |
125 |
- if (attr->flag & ATTR_FLAG_BIT (BGP_ATTR_AS_PATHLIMIT)) |
126 |
- { |
127 |
- stream_putc (s, BGP_ATTR_FLAG_OPTIONAL|BGP_ATTR_FLAG_TRANS); |
128 |
- stream_putc (s, BGP_ATTR_AS_PATHLIMIT); |
129 |
- stream_putc (s, 5); |
130 |
- stream_putc (s, attr->pathlimit.ttl); |
131 |
- stream_putl (s, attr->pathlimit.as); |
132 |
- } |
133 |
- |
134 |
/* Return total size of attribute. */ |
135 |
len = stream_get_endp (s) - cp - 2; |
136 |
stream_putw_at (s, cp, len); |
137 |
diff --git a/bgpd/bgp_attr.h b/bgpd/bgp_attr.h |
138 |
index ed8753b..af9dcf5 100644 |
139 |
--- bgpd/bgp_attr.h |
140 |
+++ bgpd/bgp_attr.h |
141 |
@@ -110,12 +110,6 @@ struct attr |
142 |
u_int32_t med; |
143 |
u_int32_t local_pref; |
144 |
|
145 |
- /* AS-Pathlimit */ |
146 |
- struct { |
147 |
- u_int32_t as; |
148 |
- u_char ttl; |
149 |
- } pathlimit; |
150 |
- |
151 |
/* Path origin attribute */ |
152 |
u_char origin; |
153 |
}; |
154 |
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c |
155 |
index 1cfc451..75a59cb 100644 |
156 |
--- bgpd/bgp_route.c |
157 |
+++ bgpd/bgp_route.c |
158 |
@@ -910,19 +910,6 @@ bgp_announce_check (struct bgp_info *ri, struct peer *peer, struct prefix *p, |
159 |
} |
160 |
} |
161 |
|
162 |
- /* AS-Pathlimit check */ |
163 |
- if (ri->attr->pathlimit.ttl && peer_sort (peer) == BGP_PEER_EBGP) |
164 |
- /* Our ASN has not yet been pre-pended, that's done in packet_attribute |
165 |
- * on output. Hence the test here is for >=. |
166 |
- */ |
167 |
- if (aspath_count_hops (ri->attr->aspath) >= ri->attr->pathlimit.ttl) |
168 |
- { |
169 |
- if (BGP_DEBUG (filter, FILTER)) |
170 |
- zlog_info ("%s [Update:SEND] suppressed, AS-Pathlimit TTL %u exceeded", |
171 |
- peer->host, ri->attr->pathlimit.ttl); |
172 |
- return 0; |
173 |
- } |
174 |
- |
175 |
/* For modify attribute, copy it to temporary structure. */ |
176 |
bgp_attr_dup (attr, ri->attr); |
177 |
|
178 |
@@ -1027,39 +1014,6 @@ bgp_announce_check (struct bgp_info *ri, struct peer *peer, struct prefix *p, |
179 |
} |
180 |
#endif /* HAVE_IPV6 */ |
181 |
|
182 |
- /* AS-Pathlimit: Check ASN for private/confed */ |
183 |
- if (attr->pathlimit.ttl) |
184 |
- { |
185 |
- /* locally originated update */ |
186 |
- if (!attr->pathlimit.as) |
187 |
- attr->pathlimit.as = peer->local_as; |
188 |
- |
189 |
- /* if the AS_PATHLIMIT attribute is attached to a prefix by a |
190 |
- member of a confederation, then when the prefix is advertised outside |
191 |
- of the confederation boundary, then the AS number of the |
192 |
- confederation member inside of the AS_PATHLIMIT attribute should be |
193 |
- replaced by the confederation's AS number. */ |
194 |
- if (peer_sort (from) == BGP_PEER_CONFED |
195 |
- && peer_sort (peer) != BGP_PEER_CONFED) |
196 |
- attr->pathlimit.as = peer->local_as; |
197 |
- |
198 |
- /* Private ASN should be updated whenever announcement leaves |
199 |
- * private space. This is deliberately done after simple confed |
200 |
- * based update.. |
201 |
- */ |
202 |
- if (attr->pathlimit.as >= BGP_PRIVATE_AS_MIN |
203 |
- && attr->pathlimit.as <= BGP_PRIVATE_AS_MAX) |
204 |
- { |
205 |
- if (peer->local_as < BGP_PRIVATE_AS_MIN |
206 |
- || peer->local_as > BGP_PRIVATE_AS_MAX) |
207 |
- attr->pathlimit.as = peer->local_as; |
208 |
- /* Ours is private, try using theirs.. */ |
209 |
- else if (peer->as < BGP_PRIVATE_AS_MIN |
210 |
- || peer->local_as > BGP_PRIVATE_AS_MAX) |
211 |
- attr->pathlimit.as = peer->as; |
212 |
- } |
213 |
- } |
214 |
- |
215 |
/* If this is EBGP peer and remove-private-AS is set. */ |
216 |
if (peer_sort (peer) == BGP_PEER_EBGP |
217 |
&& peer_af_flag_check (peer, afi, safi, PEER_FLAG_REMOVE_PRIVATE_AS) |
218 |
@@ -3239,14 +3193,6 @@ bgp_static_update_rsclient (struct peer *rsclient, struct prefix *p, |
219 |
attr.med = bgp_static->igpmetric; |
220 |
attr.flag |= ATTR_FLAG_BIT (BGP_ATTR_MULTI_EXIT_DISC); |
221 |
|
222 |
- if (bgp_static->ttl) |
223 |
- { |
224 |
- attr.flag |= ATTR_FLAG_BIT (BGP_ATTR_AS_PATHLIMIT); |
225 |
- attr.flag |= ATTR_FLAG_BIT (BGP_ATTR_ATOMIC_AGGREGATE); |
226 |
- attr.pathlimit.as = 0; |
227 |
- attr.pathlimit.ttl = bgp_static->ttl; |
228 |
- } |
229 |
- |
230 |
if (bgp_static->atomic) |
231 |
attr.flag |= ATTR_FLAG_BIT (BGP_ATTR_ATOMIC_AGGREGATE); |
232 |
|
233 |
@@ -3395,14 +3341,6 @@ bgp_static_update_main (struct bgp *bgp, struct prefix *p, |
234 |
attr.med = bgp_static->igpmetric; |
235 |
attr.flag |= ATTR_FLAG_BIT (BGP_ATTR_MULTI_EXIT_DISC); |
236 |
|
237 |
- if (bgp_static->ttl) |
238 |
- { |
239 |
- attr.flag |= ATTR_FLAG_BIT (BGP_ATTR_AS_PATHLIMIT); |
240 |
- attr.flag |= ATTR_FLAG_BIT (BGP_ATTR_ATOMIC_AGGREGATE); |
241 |
- attr.pathlimit.as = 0; |
242 |
- attr.pathlimit.ttl = bgp_static->ttl; |
243 |
- } |
244 |
- |
245 |
if (bgp_static->atomic) |
246 |
attr.flag |= ATTR_FLAG_BIT (BGP_ATTR_ATOMIC_AGGREGATE); |
247 |
|
248 |
@@ -3626,44 +3564,17 @@ bgp_static_withdraw_vpnv4 (struct bgp *bgp, struct prefix *p, afi_t afi, |
249 |
bgp_unlock_node (rn); |
250 |
} |
251 |
|
252 |
-static void |
253 |
-bgp_pathlimit_update_parents (struct bgp *bgp, struct bgp_node *rn, |
254 |
- int ttl_edge) |
255 |
-{ |
256 |
- struct bgp_node *parent = rn; |
257 |
- struct bgp_static *sp; |
258 |
- |
259 |
- /* Existing static changed TTL, search parents and adjust their atomic */ |
260 |
- while ((parent = parent->parent)) |
261 |
- if ((sp = parent->info)) |
262 |
- { |
263 |
- int sp_level = (sp->atomic ? 1 : 0); |
264 |
- ttl_edge ? sp->atomic++ : sp->atomic--; |
265 |
- |
266 |
- /* did we change state of parent whether atomic is set or not? */ |
267 |
- if (sp_level != (sp->atomic ? 1 : 0)) |
268 |
- { |
269 |
- bgp_static_update (bgp, &parent->p, sp, |
270 |
- rn->table->afi, rn->table->safi); |
271 |
- } |
272 |
- } |
273 |
-} |
274 |
- |
275 |
/* Configure static BGP network. When user don't run zebra, static |
276 |
route should be installed as valid. */ |
277 |
static int |
278 |
bgp_static_set (struct vty *vty, struct bgp *bgp, const char *ip_str, |
279 |
- u_int16_t afi, u_char safi, const char *rmap, int backdoor, |
280 |
- u_char ttl) |
281 |
+ u_int16_t afi, u_char safi, const char *rmap, int backdoor) |
282 |
{ |
283 |
int ret; |
284 |
struct prefix p; |
285 |
struct bgp_static *bgp_static; |
286 |
struct bgp_node *rn; |
287 |
u_char need_update = 0; |
288 |
- u_char ttl_change = 0; |
289 |
- u_char ttl_edge = (ttl ? 1 : 0); |
290 |
- u_char new = 0; |
291 |
|
292 |
/* Convert IP prefix string to struct prefix. */ |
293 |
ret = str2prefix (ip_str, &p); |
294 |
@@ -3692,21 +3603,10 @@ bgp_static_set (struct vty *vty, struct bgp *bgp, const char *ip_str, |
295 |
bgp_static = rn->info; |
296 |
|
297 |
/* Check previous routes are installed into BGP. */ |
298 |
- if (bgp_static->valid) |
299 |
- { |
300 |
- if (bgp_static->backdoor != backdoor |
301 |
- || bgp_static->ttl != ttl) |
302 |
- need_update = 1; |
303 |
- } |
304 |
+ if (bgp_static->valid && bgp_static->backdoor != backdoor) |
305 |
+ need_update = 1; |
306 |
|
307 |
- /* need to catch TTL set/unset transitions for handling of |
308 |
- * ATOMIC_AGGREGATE |
309 |
- */ |
310 |
- if ((bgp_static->ttl ? 1 : 0) != ttl_edge) |
311 |
- ttl_change = 1; |
312 |
- |
313 |
bgp_static->backdoor = backdoor; |
314 |
- bgp_static->ttl = ttl; |
315 |
|
316 |
if (rmap) |
317 |
{ |
318 |
@@ -3733,9 +3633,6 @@ bgp_static_set (struct vty *vty, struct bgp *bgp, const char *ip_str, |
319 |
bgp_static->valid = 0; |
320 |
bgp_static->igpmetric = 0; |
321 |
bgp_static->igpnexthop.s_addr = 0; |
322 |
- bgp_static->ttl = ttl; |
323 |
- ttl_change = ttl_edge; |
324 |
- new = 1; |
325 |
|
326 |
if (rmap) |
327 |
{ |
328 |
@@ -3747,39 +3644,6 @@ bgp_static_set (struct vty *vty, struct bgp *bgp, const char *ip_str, |
329 |
rn->info = bgp_static; |
330 |
} |
331 |
|
332 |
- /* ".. sites that choose to advertise the |
333 |
- * AS_PATHLIMIT path attribute SHOULD advertise the ATOMIC_AGGREGATE on |
334 |
- * all less specific covering prefixes as well as the more specific |
335 |
- * prefixes." |
336 |
- * |
337 |
- * So: |
338 |
- * Prefix that has just had pathlimit set/unset: |
339 |
- * - Must bump ATOMIC refcount on all parents. |
340 |
- * |
341 |
- * To catch less specific prefixes: |
342 |
- * - Must search children for ones with TTL, bump atomic refcount |
343 |
- * (we dont care if we're deleting a less specific prefix..) |
344 |
- */ |
345 |
- if (ttl_change) |
346 |
- { |
347 |
- /* Existing static changed TTL, search parents and adjust their atomic */ |
348 |
- bgp_pathlimit_update_parents (bgp, rn, ttl_edge); |
349 |
- } |
350 |
- |
351 |
- if (new) |
352 |
- { |
353 |
- struct bgp_node *child; |
354 |
- struct bgp_static *sc; |
355 |
- |
356 |
- /* New static, search children and bump this statics atomic.. */ |
357 |
- child = bgp_lock_node (rn); /* route_next_until unlocks it.. */ |
358 |
- while ((child = bgp_route_next_until (child, rn))) |
359 |
- { |
360 |
- if ((sc = child->info) && sc->ttl) |
361 |
- bgp_static->atomic++; |
362 |
- } |
363 |
- } |
364 |
- |
365 |
/* If BGP scan is not enabled, we should install this route here. */ |
366 |
if (! bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK)) |
367 |
{ |
368 |
@@ -3833,9 +3697,6 @@ bgp_static_unset (struct vty *vty, struct bgp *bgp, const char *ip_str, |
369 |
|
370 |
bgp_static = rn->info; |
371 |
|
372 |
- /* decrement atomic in parents, see bgp_static_set */ |
373 |
- bgp_pathlimit_update_parents (bgp, rn, 0); |
374 |
- |
375 |
/* Update BGP RIB. */ |
376 |
if (! bgp_static->backdoor) |
377 |
bgp_static_withdraw (bgp, &p, afi, safi); |
378 |
@@ -4032,23 +3893,10 @@ DEFUN (bgp_network, |
379 |
"Specify a network to announce via BGP\n" |
380 |
"IP prefix <network>/<length>, e.g., 35.0.0.0/8\n") |
381 |
{ |
382 |
- u_char ttl = 0; |
383 |
- |
384 |
- if (argc == 2) |
385 |
- VTY_GET_INTEGER_RANGE ("Pathlimit TTL", ttl, argv[1], 1, 255); |
386 |
- |
387 |
return bgp_static_set (vty, vty->index, argv[0], |
388 |
- AFI_IP, bgp_node_safi (vty), NULL, 0, ttl); |
389 |
+ AFI_IP, bgp_node_safi (vty), NULL, 0); |
390 |
} |
391 |
|
392 |
-ALIAS (bgp_network, |
393 |
- bgp_network_ttl_cmd, |
394 |
- "network A.B.C.D/M pathlimit <0-255>", |
395 |
- "Specify a network to announce via BGP\n" |
396 |
- "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" |
397 |
- "AS-Path hopcount limit attribute\n" |
398 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
399 |
- |
400 |
DEFUN (bgp_network_route_map, |
401 |
bgp_network_route_map_cmd, |
402 |
"network A.B.C.D/M route-map WORD", |
403 |
@@ -4058,7 +3906,7 @@ DEFUN (bgp_network_route_map, |
404 |
"Name of the route map\n") |
405 |
{ |
406 |
return bgp_static_set (vty, vty->index, argv[0], |
407 |
- AFI_IP, bgp_node_safi (vty), argv[1], 0, 0); |
408 |
+ AFI_IP, bgp_node_safi (vty), argv[1], 0); |
409 |
} |
410 |
|
411 |
DEFUN (bgp_network_backdoor, |
412 |
@@ -4068,24 +3916,10 @@ DEFUN (bgp_network_backdoor, |
413 |
"IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" |
414 |
"Specify a BGP backdoor route\n") |
415 |
{ |
416 |
- u_char ttl = 0; |
417 |
- |
418 |
- if (argc == 2) |
419 |
- VTY_GET_INTEGER_RANGE ("Pathlimit TTL", ttl, argv[1], 1, 255); |
420 |
- |
421 |
return bgp_static_set (vty, vty->index, argv[0], AFI_IP, SAFI_UNICAST, |
422 |
- NULL, 1, ttl); |
423 |
+ NULL, 1); |
424 |
} |
425 |
|
426 |
-ALIAS (bgp_network_backdoor, |
427 |
- bgp_network_backdoor_ttl_cmd, |
428 |
- "network A.B.C.D/M backdoor pathlimit <0-255>", |
429 |
- "Specify a network to announce via BGP\n" |
430 |
- "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" |
431 |
- "Specify a BGP backdoor route\n" |
432 |
- "AS-Path hopcount limit attribute\n" |
433 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
434 |
- |
435 |
DEFUN (bgp_network_mask, |
436 |
bgp_network_mask_cmd, |
437 |
"network A.B.C.D mask A.B.C.D", |
438 |
@@ -4096,10 +3930,6 @@ DEFUN (bgp_network_mask, |
439 |
{ |
440 |
int ret; |
441 |
char prefix_str[BUFSIZ]; |
442 |
- u_char ttl = 0; |
443 |
- |
444 |
- if (argc == 3) |
445 |
- VTY_GET_INTEGER_RANGE ("Pathlimit TTL", ttl, argv[2], 1, 255); |
446 |
|
447 |
ret = netmask_str2prefix_str (argv[0], argv[1], prefix_str); |
448 |
if (! ret) |
449 |
@@ -4109,19 +3939,9 @@ DEFUN (bgp_network_mask, |
450 |
} |
451 |
|
452 |
return bgp_static_set (vty, vty->index, prefix_str, |
453 |
- AFI_IP, bgp_node_safi (vty), NULL, 0, ttl); |
454 |
+ AFI_IP, bgp_node_safi (vty), NULL, 0); |
455 |
} |
456 |
|
457 |
-ALIAS (bgp_network_mask, |
458 |
- bgp_network_mask_ttl_cmd, |
459 |
- "network A.B.C.D mask A.B.C.D pathlimit <0-255>", |
460 |
- "Specify a network to announce via BGP\n" |
461 |
- "Network number\n" |
462 |
- "Network mask\n" |
463 |
- "Network mask\n" |
464 |
- "AS-Path hopcount limit attribute\n" |
465 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
466 |
- |
467 |
DEFUN (bgp_network_mask_route_map, |
468 |
bgp_network_mask_route_map_cmd, |
469 |
"network A.B.C.D mask A.B.C.D route-map WORD", |
470 |
@@ -4143,7 +3963,7 @@ DEFUN (bgp_network_mask_route_map, |
471 |
} |
472 |
|
473 |
return bgp_static_set (vty, vty->index, prefix_str, |
474 |
- AFI_IP, bgp_node_safi (vty), argv[2], 0, 0); |
475 |
+ AFI_IP, bgp_node_safi (vty), argv[2], 0); |
476 |
} |
477 |
|
478 |
DEFUN (bgp_network_mask_backdoor, |
479 |
@@ -4157,11 +3977,7 @@ DEFUN (bgp_network_mask_backdoor, |
480 |
{ |
481 |
int ret; |
482 |
char prefix_str[BUFSIZ]; |
483 |
- u_char ttl = 0; |
484 |
|
485 |
- if (argc == 3) |
486 |
- VTY_GET_INTEGER_RANGE ("Pathlimit TTL", ttl, argv[2], 1, 255); |
487 |
- |
488 |
ret = netmask_str2prefix_str (argv[0], argv[1], prefix_str); |
489 |
if (! ret) |
490 |
{ |
491 |
@@ -4170,20 +3986,9 @@ DEFUN (bgp_network_mask_backdoor, |
492 |
} |
493 |
|
494 |
return bgp_static_set (vty, vty->index, prefix_str, AFI_IP, SAFI_UNICAST, |
495 |
- NULL, 1, ttl); |
496 |
+ NULL, 1); |
497 |
} |
498 |
|
499 |
-ALIAS (bgp_network_mask_backdoor, |
500 |
- bgp_network_mask_backdoor_ttl_cmd, |
501 |
- "network A.B.C.D mask A.B.C.D backdoor pathlimit <0-255>", |
502 |
- "Specify a network to announce via BGP\n" |
503 |
- "Network number\n" |
504 |
- "Network mask\n" |
505 |
- "Network mask\n" |
506 |
- "Specify a BGP backdoor route\n" |
507 |
- "AS-Path hopcount limit attribute\n" |
508 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
509 |
- |
510 |
DEFUN (bgp_network_mask_natural, |
511 |
bgp_network_mask_natural_cmd, |
512 |
"network A.B.C.D", |
513 |
@@ -4192,10 +3997,6 @@ DEFUN (bgp_network_mask_natural, |
514 |
{ |
515 |
int ret; |
516 |
char prefix_str[BUFSIZ]; |
517 |
- u_char ttl = 0; |
518 |
- |
519 |
- if (argc == 2) |
520 |
- VTY_GET_INTEGER_RANGE ("Pathlimit TTL", ttl, argv[1], 1, 255); |
521 |
|
522 |
ret = netmask_str2prefix_str (argv[0], NULL, prefix_str); |
523 |
if (! ret) |
524 |
@@ -4205,17 +4006,9 @@ DEFUN (bgp_network_mask_natural, |
525 |
} |
526 |
|
527 |
return bgp_static_set (vty, vty->index, prefix_str, |
528 |
- AFI_IP, bgp_node_safi (vty), NULL, 0, ttl); |
529 |
+ AFI_IP, bgp_node_safi (vty), NULL, 0); |
530 |
} |
531 |
|
532 |
-ALIAS (bgp_network_mask_natural, |
533 |
- bgp_network_mask_natural_ttl_cmd, |
534 |
- "network A.B.C.D pathlimit <0-255>", |
535 |
- "Specify a network to announce via BGP\n" |
536 |
- "Network number\n" |
537 |
- "AS-Path hopcount limit attribute\n" |
538 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
539 |
- |
540 |
DEFUN (bgp_network_mask_natural_route_map, |
541 |
bgp_network_mask_natural_route_map_cmd, |
542 |
"network A.B.C.D route-map WORD", |
543 |
@@ -4235,7 +4028,7 @@ DEFUN (bgp_network_mask_natural_route_map, |
544 |
} |
545 |
|
546 |
return bgp_static_set (vty, vty->index, prefix_str, |
547 |
- AFI_IP, bgp_node_safi (vty), argv[1], 0, 0); |
548 |
+ AFI_IP, bgp_node_safi (vty), argv[1], 0); |
549 |
} |
550 |
|
551 |
DEFUN (bgp_network_mask_natural_backdoor, |
552 |
@@ -4247,10 +4040,6 @@ DEFUN (bgp_network_mask_natural_backdoor, |
553 |
{ |
554 |
int ret; |
555 |
char prefix_str[BUFSIZ]; |
556 |
- u_char ttl = 0; |
557 |
- |
558 |
- if (argc == 2) |
559 |
- VTY_GET_INTEGER_RANGE ("Pathlimit TTL", ttl, argv[1], 1, 255); |
560 |
|
561 |
ret = netmask_str2prefix_str (argv[0], NULL, prefix_str); |
562 |
if (! ret) |
563 |
@@ -4260,18 +4049,9 @@ DEFUN (bgp_network_mask_natural_backdoor, |
564 |
} |
565 |
|
566 |
return bgp_static_set (vty, vty->index, prefix_str, AFI_IP, SAFI_UNICAST, |
567 |
- NULL, 1, ttl); |
568 |
+ NULL, 1); |
569 |
} |
570 |
|
571 |
-ALIAS (bgp_network_mask_natural_backdoor, |
572 |
- bgp_network_mask_natural_backdoor_ttl_cmd, |
573 |
- "network A.B.C.D backdoor pathlimit (1-255>", |
574 |
- "Specify a network to announce via BGP\n" |
575 |
- "Network number\n" |
576 |
- "Specify a BGP backdoor route\n" |
577 |
- "AS-Path hopcount limit attribute\n" |
578 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
579 |
- |
580 |
DEFUN (no_bgp_network, |
581 |
no_bgp_network_cmd, |
582 |
"no network A.B.C.D/M", |
583 |
@@ -4284,15 +4064,6 @@ DEFUN (no_bgp_network, |
584 |
} |
585 |
|
586 |
ALIAS (no_bgp_network, |
587 |
- no_bgp_network_ttl_cmd, |
588 |
- "no network A.B.C.D/M pathlimit <0-255>", |
589 |
- NO_STR |
590 |
- "Specify a network to announce via BGP\n" |
591 |
- "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" |
592 |
- "AS-Path hopcount limit attribute\n" |
593 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
594 |
- |
595 |
-ALIAS (no_bgp_network, |
596 |
no_bgp_network_route_map_cmd, |
597 |
"no network A.B.C.D/M route-map WORD", |
598 |
NO_STR |
599 |
@@ -4309,16 +4080,6 @@ ALIAS (no_bgp_network, |
600 |
"IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" |
601 |
"Specify a BGP backdoor route\n") |
602 |
|
603 |
-ALIAS (no_bgp_network, |
604 |
- no_bgp_network_backdoor_ttl_cmd, |
605 |
- "no network A.B.C.D/M backdoor pathlimit <0-255>", |
606 |
- NO_STR |
607 |
- "Specify a network to announce via BGP\n" |
608 |
- "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" |
609 |
- "Specify a BGP backdoor route\n" |
610 |
- "AS-Path hopcount limit attribute\n" |
611 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
612 |
- |
613 |
DEFUN (no_bgp_network_mask, |
614 |
no_bgp_network_mask_cmd, |
615 |
"no network A.B.C.D mask A.B.C.D", |
616 |
@@ -4342,17 +4103,6 @@ DEFUN (no_bgp_network_mask, |
617 |
bgp_node_safi (vty)); |
618 |
} |
619 |
|
620 |
-ALIAS (no_bgp_network, |
621 |
- no_bgp_network_mask_ttl_cmd, |
622 |
- "no network A.B.C.D mask A.B.C.D pathlimit <0-255>", |
623 |
- NO_STR |
624 |
- "Specify a network to announce via BGP\n" |
625 |
- "Network number\n" |
626 |
- "Network mask\n" |
627 |
- "Network mask\n" |
628 |
- "AS-Path hopcount limit attribute\n" |
629 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
630 |
- |
631 |
ALIAS (no_bgp_network_mask, |
632 |
no_bgp_network_mask_route_map_cmd, |
633 |
"no network A.B.C.D mask A.B.C.D route-map WORD", |
634 |
@@ -4374,18 +4124,6 @@ ALIAS (no_bgp_network_mask, |
635 |
"Network mask\n" |
636 |
"Specify a BGP backdoor route\n") |
637 |
|
638 |
-ALIAS (no_bgp_network_mask, |
639 |
- no_bgp_network_mask_backdoor_ttl_cmd, |
640 |
- "no network A.B.C.D mask A.B.C.D backdoor pathlimit <0-255>", |
641 |
- NO_STR |
642 |
- "Specify a network to announce via BGP\n" |
643 |
- "Network number\n" |
644 |
- "Network mask\n" |
645 |
- "Network mask\n" |
646 |
- "Specify a BGP backdoor route\n" |
647 |
- "AS-Path hopcount limit attribute\n" |
648 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
649 |
- |
650 |
DEFUN (no_bgp_network_mask_natural, |
651 |
no_bgp_network_mask_natural_cmd, |
652 |
"no network A.B.C.D", |
653 |
@@ -4424,25 +4162,6 @@ ALIAS (no_bgp_network_mask_natural, |
654 |
"Network number\n" |
655 |
"Specify a BGP backdoor route\n") |
656 |
|
657 |
-ALIAS (no_bgp_network_mask_natural, |
658 |
- no_bgp_network_mask_natural_ttl_cmd, |
659 |
- "no network A.B.C.D pathlimit <0-255>", |
660 |
- NO_STR |
661 |
- "Specify a network to announce via BGP\n" |
662 |
- "Network number\n" |
663 |
- "AS-Path hopcount limit attribute\n" |
664 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
665 |
- |
666 |
-ALIAS (no_bgp_network_mask_natural, |
667 |
- no_bgp_network_mask_natural_backdoor_ttl_cmd, |
668 |
- "no network A.B.C.D backdoor pathlimit <0-255>", |
669 |
- NO_STR |
670 |
- "Specify a network to announce via BGP\n" |
671 |
- "Network number\n" |
672 |
- "Specify a BGP backdoor route\n" |
673 |
- "AS-Path hopcount limit attribute\n" |
674 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
675 |
- |
676 |
#ifdef HAVE_IPV6 |
677 |
DEFUN (ipv6_bgp_network, |
678 |
ipv6_bgp_network_cmd, |
679 |
@@ -4450,23 +4169,10 @@ DEFUN (ipv6_bgp_network, |
680 |
"Specify a network to announce via BGP\n" |
681 |
"IPv6 prefix <network>/<length>\n") |
682 |
{ |
683 |
- u_char ttl = 0; |
684 |
- |
685 |
- if (argc == 2) |
686 |
- VTY_GET_INTEGER_RANGE ("Pathlimit TTL", ttl, argv[1], 1, 255); |
687 |
- |
688 |
return bgp_static_set (vty, vty->index, argv[0], AFI_IP6, SAFI_UNICAST, |
689 |
- NULL, 0, ttl); |
690 |
+ NULL, 0); |
691 |
} |
692 |
|
693 |
-ALIAS (ipv6_bgp_network, |
694 |
- ipv6_bgp_network_ttl_cmd, |
695 |
- "network X:X::X:X/M pathlimit <0-255>", |
696 |
- "Specify a network to announce via BGP\n" |
697 |
- "IPv6 prefix <network>/<length>\n" |
698 |
- "AS-Path hopcount limit attribute\n" |
699 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
700 |
- |
701 |
DEFUN (ipv6_bgp_network_route_map, |
702 |
ipv6_bgp_network_route_map_cmd, |
703 |
"network X:X::X:X/M route-map WORD", |
704 |
@@ -4476,7 +4182,7 @@ DEFUN (ipv6_bgp_network_route_map, |
705 |
"Name of the route map\n") |
706 |
{ |
707 |
return bgp_static_set (vty, vty->index, argv[0], AFI_IP6, |
708 |
- bgp_node_safi (vty), argv[1], 0, 0); |
709 |
+ bgp_node_safi (vty), argv[1], 0); |
710 |
} |
711 |
|
712 |
DEFUN (no_ipv6_bgp_network, |
713 |
@@ -4498,15 +4204,6 @@ ALIAS (no_ipv6_bgp_network, |
714 |
"Route-map to modify the attributes\n" |
715 |
"Name of the route map\n") |
716 |
|
717 |
-ALIAS (no_ipv6_bgp_network, |
718 |
- no_ipv6_bgp_network_ttl_cmd, |
719 |
- "no network X:X::X:X/M pathlimit <0-255>", |
720 |
- NO_STR |
721 |
- "Specify a network to announce via BGP\n" |
722 |
- "IPv6 prefix <network>/<length>\n" |
723 |
- "AS-Path hopcount limit attribute\n" |
724 |
- "AS-Pathlimit TTL, in number of AS-Path hops\n") |
725 |
- |
726 |
ALIAS (ipv6_bgp_network, |
727 |
old_ipv6_bgp_network_cmd, |
728 |
"ipv6 bgp network X:X::X:X/M", |
729 |
@@ -4524,6 +4221,127 @@ ALIAS (no_ipv6_bgp_network, |
730 |
"Specify a network to announce via BGP\n" |
731 |
"IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n") |
732 |
#endif /* HAVE_IPV6 */ |
733 |
+ |
734 |
+/* stubs for removed AS-Pathlimit commands, kept for config compatibility */ |
735 |
+ALIAS_DEPRECATED (bgp_network, |
736 |
+ bgp_network_ttl_cmd, |
737 |
+ "network A.B.C.D/M pathlimit <0-255>", |
738 |
+ "Specify a network to announce via BGP\n" |
739 |
+ "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" |
740 |
+ "AS-Path hopcount limit attribute\n" |
741 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
742 |
+ALIAS_DEPRECATED (bgp_network_backdoor, |
743 |
+ bgp_network_backdoor_ttl_cmd, |
744 |
+ "network A.B.C.D/M backdoor pathlimit <0-255>", |
745 |
+ "Specify a network to announce via BGP\n" |
746 |
+ "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" |
747 |
+ "Specify a BGP backdoor route\n" |
748 |
+ "AS-Path hopcount limit attribute\n" |
749 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
750 |
+ALIAS_DEPRECATED (bgp_network_mask, |
751 |
+ bgp_network_mask_ttl_cmd, |
752 |
+ "network A.B.C.D mask A.B.C.D pathlimit <0-255>", |
753 |
+ "Specify a network to announce via BGP\n" |
754 |
+ "Network number\n" |
755 |
+ "Network mask\n" |
756 |
+ "Network mask\n" |
757 |
+ "AS-Path hopcount limit attribute\n" |
758 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
759 |
+ALIAS_DEPRECATED (bgp_network_mask_backdoor, |
760 |
+ bgp_network_mask_backdoor_ttl_cmd, |
761 |
+ "network A.B.C.D mask A.B.C.D backdoor pathlimit <0-255>", |
762 |
+ "Specify a network to announce via BGP\n" |
763 |
+ "Network number\n" |
764 |
+ "Network mask\n" |
765 |
+ "Network mask\n" |
766 |
+ "Specify a BGP backdoor route\n" |
767 |
+ "AS-Path hopcount limit attribute\n" |
768 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
769 |
+ALIAS_DEPRECATED (bgp_network_mask_natural, |
770 |
+ bgp_network_mask_natural_ttl_cmd, |
771 |
+ "network A.B.C.D pathlimit <0-255>", |
772 |
+ "Specify a network to announce via BGP\n" |
773 |
+ "Network number\n" |
774 |
+ "AS-Path hopcount limit attribute\n" |
775 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
776 |
+ALIAS_DEPRECATED (bgp_network_mask_natural_backdoor, |
777 |
+ bgp_network_mask_natural_backdoor_ttl_cmd, |
778 |
+ "network A.B.C.D backdoor pathlimit (1-255>", |
779 |
+ "Specify a network to announce via BGP\n" |
780 |
+ "Network number\n" |
781 |
+ "Specify a BGP backdoor route\n" |
782 |
+ "AS-Path hopcount limit attribute\n" |
783 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
784 |
+ALIAS_DEPRECATED (no_bgp_network, |
785 |
+ no_bgp_network_ttl_cmd, |
786 |
+ "no network A.B.C.D/M pathlimit <0-255>", |
787 |
+ NO_STR |
788 |
+ "Specify a network to announce via BGP\n" |
789 |
+ "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" |
790 |
+ "AS-Path hopcount limit attribute\n" |
791 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
792 |
+ALIAS_DEPRECATED (no_bgp_network, |
793 |
+ no_bgp_network_backdoor_ttl_cmd, |
794 |
+ "no network A.B.C.D/M backdoor pathlimit <0-255>", |
795 |
+ NO_STR |
796 |
+ "Specify a network to announce via BGP\n" |
797 |
+ "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" |
798 |
+ "Specify a BGP backdoor route\n" |
799 |
+ "AS-Path hopcount limit attribute\n" |
800 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
801 |
+ALIAS_DEPRECATED (no_bgp_network, |
802 |
+ no_bgp_network_mask_ttl_cmd, |
803 |
+ "no network A.B.C.D mask A.B.C.D pathlimit <0-255>", |
804 |
+ NO_STR |
805 |
+ "Specify a network to announce via BGP\n" |
806 |
+ "Network number\n" |
807 |
+ "Network mask\n" |
808 |
+ "Network mask\n" |
809 |
+ "AS-Path hopcount limit attribute\n" |
810 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
811 |
+ALIAS_DEPRECATED (no_bgp_network_mask, |
812 |
+ no_bgp_network_mask_backdoor_ttl_cmd, |
813 |
+ "no network A.B.C.D mask A.B.C.D backdoor pathlimit <0-255>", |
814 |
+ NO_STR |
815 |
+ "Specify a network to announce via BGP\n" |
816 |
+ "Network number\n" |
817 |
+ "Network mask\n" |
818 |
+ "Network mask\n" |
819 |
+ "Specify a BGP backdoor route\n" |
820 |
+ "AS-Path hopcount limit attribute\n" |
821 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
822 |
+ALIAS_DEPRECATED (no_bgp_network_mask_natural, |
823 |
+ no_bgp_network_mask_natural_ttl_cmd, |
824 |
+ "no network A.B.C.D pathlimit <0-255>", |
825 |
+ NO_STR |
826 |
+ "Specify a network to announce via BGP\n" |
827 |
+ "Network number\n" |
828 |
+ "AS-Path hopcount limit attribute\n" |
829 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
830 |
+ALIAS_DEPRECATED (no_bgp_network_mask_natural, |
831 |
+ no_bgp_network_mask_natural_backdoor_ttl_cmd, |
832 |
+ "no network A.B.C.D backdoor pathlimit <0-255>", |
833 |
+ NO_STR |
834 |
+ "Specify a network to announce via BGP\n" |
835 |
+ "Network number\n" |
836 |
+ "Specify a BGP backdoor route\n" |
837 |
+ "AS-Path hopcount limit attribute\n" |
838 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
839 |
+ALIAS_DEPRECATED (ipv6_bgp_network, |
840 |
+ ipv6_bgp_network_ttl_cmd, |
841 |
+ "network X:X::X:X/M pathlimit <0-255>", |
842 |
+ "Specify a network to announce via BGP\n" |
843 |
+ "IPv6 prefix <network>/<length>\n" |
844 |
+ "AS-Path hopcount limit attribute\n" |
845 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
846 |
+ALIAS_DEPRECATED (no_ipv6_bgp_network, |
847 |
+ no_ipv6_bgp_network_ttl_cmd, |
848 |
+ "no network X:X::X:X/M pathlimit <0-255>", |
849 |
+ NO_STR |
850 |
+ "Specify a network to announce via BGP\n" |
851 |
+ "IPv6 prefix <network>/<length>\n" |
852 |
+ "AS-Path hopcount limit attribute\n" |
853 |
+ "AS-Pathlimit TTL, in number of AS-Path hops\n") |
854 |
|
855 |
/* Aggreagete address: |
856 |
|
857 |
@@ -6130,17 +5948,6 @@ route_vty_out_detail (struct vty *vty, struct bgp *bgp, struct prefix *p, |
858 |
vty_out (vty, "%s", VTY_NEWLINE); |
859 |
} |
860 |
|
861 |
- /* 7: AS Pathlimit */ |
862 |
- if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_AS_PATHLIMIT)) |
863 |
- { |
864 |
- |
865 |
- vty_out (vty, " AS-Pathlimit: %u", |
866 |
- attr->pathlimit.ttl); |
867 |
- if (attr->pathlimit.as) |
868 |
- vty_out (vty, " (%u)", attr->pathlimit.as); |
869 |
- vty_out (vty, "%s", VTY_NEWLINE); |
870 |
- } |
871 |
- |
872 |
if (binfo->extra && binfo->extra->damp_info) |
873 |
bgp_damp_info_vty (vty, binfo); |
874 |
|
875 |
@@ -11548,8 +11355,6 @@ bgp_config_write_network (struct vty *vty, struct bgp *bgp, |
876 |
{ |
877 |
if (bgp_static->backdoor) |
878 |
vty_out (vty, " backdoor"); |
879 |
- if (bgp_static->ttl) |
880 |
- vty_out (vty, " pathlimit %u", bgp_static->ttl); |
881 |
} |
882 |
|
883 |
vty_out (vty, "%s", VTY_NEWLINE); |
884 |
@@ -11638,12 +11443,6 @@ bgp_route_init (void) |
885 |
install_element (BGP_NODE, &bgp_network_backdoor_cmd); |
886 |
install_element (BGP_NODE, &bgp_network_mask_backdoor_cmd); |
887 |
install_element (BGP_NODE, &bgp_network_mask_natural_backdoor_cmd); |
888 |
- install_element (BGP_NODE, &bgp_network_ttl_cmd); |
889 |
- install_element (BGP_NODE, &bgp_network_mask_ttl_cmd); |
890 |
- install_element (BGP_NODE, &bgp_network_mask_natural_ttl_cmd); |
891 |
- install_element (BGP_NODE, &bgp_network_backdoor_ttl_cmd); |
892 |
- install_element (BGP_NODE, &bgp_network_mask_backdoor_ttl_cmd); |
893 |
- install_element (BGP_NODE, &bgp_network_mask_natural_backdoor_ttl_cmd); |
894 |
install_element (BGP_NODE, &no_bgp_network_cmd); |
895 |
install_element (BGP_NODE, &no_bgp_network_mask_cmd); |
896 |
install_element (BGP_NODE, &no_bgp_network_mask_natural_cmd); |
897 |
@@ -11653,12 +11452,6 @@ bgp_route_init (void) |
898 |
install_element (BGP_NODE, &no_bgp_network_backdoor_cmd); |
899 |
install_element (BGP_NODE, &no_bgp_network_mask_backdoor_cmd); |
900 |
install_element (BGP_NODE, &no_bgp_network_mask_natural_backdoor_cmd); |
901 |
- install_element (BGP_NODE, &no_bgp_network_ttl_cmd); |
902 |
- install_element (BGP_NODE, &no_bgp_network_mask_ttl_cmd); |
903 |
- install_element (BGP_NODE, &no_bgp_network_mask_natural_ttl_cmd); |
904 |
- install_element (BGP_NODE, &no_bgp_network_backdoor_ttl_cmd); |
905 |
- install_element (BGP_NODE, &no_bgp_network_mask_backdoor_ttl_cmd); |
906 |
- install_element (BGP_NODE, &no_bgp_network_mask_natural_backdoor_ttl_cmd); |
907 |
|
908 |
install_element (BGP_NODE, &aggregate_address_cmd); |
909 |
install_element (BGP_NODE, &aggregate_address_mask_cmd); |
910 |
@@ -11688,23 +11481,13 @@ bgp_route_init (void) |
911 |
install_element (BGP_IPV4_NODE, &bgp_network_route_map_cmd); |
912 |
install_element (BGP_IPV4_NODE, &bgp_network_mask_route_map_cmd); |
913 |
install_element (BGP_IPV4_NODE, &bgp_network_mask_natural_route_map_cmd); |
914 |
- install_element (BGP_IPV4_NODE, &bgp_network_ttl_cmd); |
915 |
- install_element (BGP_IPV4_NODE, &bgp_network_mask_ttl_cmd); |
916 |
- install_element (BGP_IPV4_NODE, &bgp_network_mask_natural_ttl_cmd); |
917 |
- install_element (BGP_IPV4_NODE, &bgp_network_backdoor_ttl_cmd); |
918 |
- install_element (BGP_IPV4_NODE, &bgp_network_mask_backdoor_ttl_cmd); |
919 |
- install_element (BGP_IPV4_NODE, &bgp_network_mask_natural_backdoor_ttl_cmd); install_element (BGP_IPV4_NODE, &no_bgp_network_cmd); |
920 |
+ install_element (BGP_IPV4_NODE, &no_bgp_network_cmd); |
921 |
install_element (BGP_IPV4_NODE, &no_bgp_network_mask_cmd); |
922 |
install_element (BGP_IPV4_NODE, &no_bgp_network_mask_natural_cmd); |
923 |
install_element (BGP_IPV4_NODE, &no_bgp_network_route_map_cmd); |
924 |
install_element (BGP_IPV4_NODE, &no_bgp_network_mask_route_map_cmd); |
925 |
install_element (BGP_IPV4_NODE, &no_bgp_network_mask_natural_route_map_cmd); |
926 |
- install_element (BGP_IPV4_NODE, &no_bgp_network_ttl_cmd); |
927 |
- install_element (BGP_IPV4_NODE, &no_bgp_network_mask_ttl_cmd); |
928 |
- install_element (BGP_IPV4_NODE, &no_bgp_network_mask_natural_ttl_cmd); |
929 |
- install_element (BGP_IPV4_NODE, &no_bgp_network_backdoor_ttl_cmd); |
930 |
- install_element (BGP_IPV4_NODE, &no_bgp_network_mask_backdoor_ttl_cmd); |
931 |
- install_element (BGP_IPV4_NODE, &no_bgp_network_mask_natural_backdoor_ttl_cmd); install_element (BGP_IPV4_NODE, &no_bgp_network_cmd); |
932 |
+ |
933 |
install_element (BGP_IPV4_NODE, &aggregate_address_cmd); |
934 |
install_element (BGP_IPV4_NODE, &aggregate_address_mask_cmd); |
935 |
install_element (BGP_IPV4_NODE, &aggregate_address_summary_only_cmd); |
936 |
@@ -11733,24 +11516,12 @@ bgp_route_init (void) |
937 |
install_element (BGP_IPV4M_NODE, &bgp_network_route_map_cmd); |
938 |
install_element (BGP_IPV4M_NODE, &bgp_network_mask_route_map_cmd); |
939 |
install_element (BGP_IPV4M_NODE, &bgp_network_mask_natural_route_map_cmd); |
940 |
- install_element (BGP_IPV4M_NODE, &bgp_network_ttl_cmd); |
941 |
- install_element (BGP_IPV4M_NODE, &bgp_network_mask_ttl_cmd); |
942 |
- install_element (BGP_IPV4M_NODE, &bgp_network_mask_natural_ttl_cmd); |
943 |
- install_element (BGP_IPV4M_NODE, &bgp_network_backdoor_ttl_cmd); |
944 |
- install_element (BGP_IPV4M_NODE, &bgp_network_mask_backdoor_ttl_cmd); |
945 |
- install_element (BGP_IPV4M_NODE, &bgp_network_mask_natural_backdoor_ttl_cmd); install_element (BGP_IPV4_NODE, &no_bgp_network_cmd); |
946 |
install_element (BGP_IPV4M_NODE, &no_bgp_network_cmd); |
947 |
install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_cmd); |
948 |
install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_natural_cmd); |
949 |
install_element (BGP_IPV4M_NODE, &no_bgp_network_route_map_cmd); |
950 |
install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_route_map_cmd); |
951 |
install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_natural_route_map_cmd); |
952 |
- install_element (BGP_IPV4M_NODE, &no_bgp_network_ttl_cmd); |
953 |
- install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_ttl_cmd); |
954 |
- install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_natural_ttl_cmd); |
955 |
- install_element (BGP_IPV4M_NODE, &no_bgp_network_backdoor_ttl_cmd); |
956 |
- install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_backdoor_ttl_cmd); |
957 |
- install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_natural_backdoor_ttl_cmd); install_element (BGP_IPV4_NODE, &no_bgp_network_cmd); |
958 |
install_element (BGP_IPV4M_NODE, &aggregate_address_cmd); |
959 |
install_element (BGP_IPV4M_NODE, &aggregate_address_mask_cmd); |
960 |
install_element (BGP_IPV4M_NODE, &aggregate_address_summary_only_cmd); |
961 |
@@ -11971,10 +11742,8 @@ bgp_route_init (void) |
962 |
/* New config IPv6 BGP commands. */ |
963 |
install_element (BGP_IPV6_NODE, &ipv6_bgp_network_cmd); |
964 |
install_element (BGP_IPV6_NODE, &ipv6_bgp_network_route_map_cmd); |
965 |
- install_element (BGP_IPV6_NODE, &ipv6_bgp_network_ttl_cmd); |
966 |
install_element (BGP_IPV6_NODE, &no_ipv6_bgp_network_cmd); |
967 |
install_element (BGP_IPV6_NODE, &no_ipv6_bgp_network_route_map_cmd); |
968 |
- install_element (BGP_IPV6_NODE, &no_ipv6_bgp_network_ttl_cmd); |
969 |
|
970 |
install_element (BGP_IPV6_NODE, &ipv6_aggregate_address_cmd); |
971 |
install_element (BGP_IPV6_NODE, &ipv6_aggregate_address_summary_only_cmd); |
972 |
@@ -12293,6 +12062,52 @@ bgp_route_init (void) |
973 |
install_element (BGP_IPV4_NODE, &bgp_damp_set3_cmd); |
974 |
install_element (BGP_IPV4_NODE, &bgp_damp_unset_cmd); |
975 |
install_element (BGP_IPV4_NODE, &bgp_damp_unset2_cmd); |
976 |
+ |
977 |
+ /* Deprecated AS-Pathlimit commands */ |
978 |
+ install_element (BGP_NODE, &bgp_network_ttl_cmd); |
979 |
+ install_element (BGP_NODE, &bgp_network_mask_ttl_cmd); |
980 |
+ install_element (BGP_NODE, &bgp_network_mask_natural_ttl_cmd); |
981 |
+ install_element (BGP_NODE, &bgp_network_backdoor_ttl_cmd); |
982 |
+ install_element (BGP_NODE, &bgp_network_mask_backdoor_ttl_cmd); |
983 |
+ install_element (BGP_NODE, &bgp_network_mask_natural_backdoor_ttl_cmd); |
984 |
+ |
985 |
+ install_element (BGP_NODE, &no_bgp_network_ttl_cmd); |
986 |
+ install_element (BGP_NODE, &no_bgp_network_mask_ttl_cmd); |
987 |
+ install_element (BGP_NODE, &no_bgp_network_mask_natural_ttl_cmd); |
988 |
+ install_element (BGP_NODE, &no_bgp_network_backdoor_ttl_cmd); |
989 |
+ install_element (BGP_NODE, &no_bgp_network_mask_backdoor_ttl_cmd); |
990 |
+ install_element (BGP_NODE, &no_bgp_network_mask_natural_backdoor_ttl_cmd); |
991 |
+ |
992 |
+ install_element (BGP_IPV4_NODE, &bgp_network_ttl_cmd); |
993 |
+ install_element (BGP_IPV4_NODE, &bgp_network_mask_ttl_cmd); |
994 |
+ install_element (BGP_IPV4_NODE, &bgp_network_mask_natural_ttl_cmd); |
995 |
+ install_element (BGP_IPV4_NODE, &bgp_network_backdoor_ttl_cmd); |
996 |
+ install_element (BGP_IPV4_NODE, &bgp_network_mask_backdoor_ttl_cmd); |
997 |
+ install_element (BGP_IPV4_NODE, &bgp_network_mask_natural_backdoor_ttl_cmd); |
998 |
+ |
999 |
+ install_element (BGP_IPV4_NODE, &no_bgp_network_ttl_cmd); |
1000 |
+ install_element (BGP_IPV4_NODE, &no_bgp_network_mask_ttl_cmd); |
1001 |
+ install_element (BGP_IPV4_NODE, &no_bgp_network_mask_natural_ttl_cmd); |
1002 |
+ install_element (BGP_IPV4_NODE, &no_bgp_network_backdoor_ttl_cmd); |
1003 |
+ install_element (BGP_IPV4_NODE, &no_bgp_network_mask_backdoor_ttl_cmd); |
1004 |
+ install_element (BGP_IPV4_NODE, &no_bgp_network_mask_natural_backdoor_ttl_cmd); |
1005 |
+ |
1006 |
+ install_element (BGP_IPV4M_NODE, &bgp_network_ttl_cmd); |
1007 |
+ install_element (BGP_IPV4M_NODE, &bgp_network_mask_ttl_cmd); |
1008 |
+ install_element (BGP_IPV4M_NODE, &bgp_network_mask_natural_ttl_cmd); |
1009 |
+ install_element (BGP_IPV4M_NODE, &bgp_network_backdoor_ttl_cmd); |
1010 |
+ install_element (BGP_IPV4M_NODE, &bgp_network_mask_backdoor_ttl_cmd); |
1011 |
+ install_element (BGP_IPV4M_NODE, &bgp_network_mask_natural_backdoor_ttl_cmd); |
1012 |
+ |
1013 |
+ install_element (BGP_IPV4M_NODE, &no_bgp_network_ttl_cmd); |
1014 |
+ install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_ttl_cmd); |
1015 |
+ install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_natural_ttl_cmd); |
1016 |
+ install_element (BGP_IPV4M_NODE, &no_bgp_network_backdoor_ttl_cmd); |
1017 |
+ install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_backdoor_ttl_cmd); |
1018 |
+ install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_natural_backdoor_ttl_cmd); |
1019 |
+ |
1020 |
+ install_element (BGP_IPV6_NODE, &ipv6_bgp_network_ttl_cmd); |
1021 |
+ install_element (BGP_IPV6_NODE, &no_ipv6_bgp_network_ttl_cmd); |
1022 |
} |
1023 |
|
1024 |
void |
1025 |
diff --git a/bgpd/bgp_route.h b/bgpd/bgp_route.h |
1026 |
index 5eed348..3e52859 100644 |
1027 |
--- bgpd/bgp_route.h |
1028 |
+++ bgpd/bgp_route.h |
1029 |
@@ -116,9 +116,6 @@ struct bgp_static |
1030 |
|
1031 |
/* MPLS label. */ |
1032 |
u_char tag[3]; |
1033 |
- |
1034 |
- /* AS-Pathlimit TTL */ |
1035 |
- u_char ttl; |
1036 |
}; |
1037 |
|
1038 |
/* Flags which indicate a route is unuseable in some form */ |
1039 |
diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c |
1040 |
index aa7dbce..81ff48d 100644 |
1041 |
--- bgpd/bgp_routemap.c |
1042 |
+++ bgpd/bgp_routemap.c |
1043 |
@@ -92,107 +92,15 @@ o Cisco route-map |
1044 |
origin : Done |
1045 |
tag : (This will not be implemented by bgpd) |
1046 |
weight : Done |
1047 |
- pathlimit : Done |
1048 |
|
1049 |
o Local extention |
1050 |
|
1051 |
set ipv6 next-hop global: Done |
1052 |
set ipv6 next-hop local : Done |
1053 |
- set pathlimit ttl : Done |
1054 |
set as-path exclude : Done |
1055 |
- match pathlimit as : Done |
1056 |
|
1057 |
*/ |
1058 |
|
1059 |
-/* Compiles either AS or TTL argument. It is amused the VTY code |
1060 |
- * has already range-checked the values to be suitable as TTL or ASN |
1061 |
- */ |
1062 |
-static void * |
1063 |
-route_pathlimit_compile (const char *arg) |
1064 |
-{ |
1065 |
- unsigned long tmp; |
1066 |
- u_int32_t *val; |
1067 |
- char *endptr = NULL; |
1068 |
- |
1069 |
- /* TTL or AS value shoud be integer. */ |
1070 |
- if (! all_digit (arg)) |
1071 |
- return NULL; |
1072 |
- |
1073 |
- tmp = strtoul (arg, &endptr, 10); |
1074 |
- if (*endptr != '\0' || tmp == ULONG_MAX || tmp > UINT32_MAX) |
1075 |
- return NULL; |
1076 |
- |
1077 |
- if (!(val = XMALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (u_int32_t)))) |
1078 |
- return NULL; |
1079 |
- |
1080 |
- *val = tmp; |
1081 |
- |
1082 |
- return val; |
1083 |
-} |
1084 |
- |
1085 |
-static void |
1086 |
-route_pathlimit_free (void *rule) |
1087 |
-{ |
1088 |
- XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); |
1089 |
-} |
1090 |
- |
1091 |
-static route_map_result_t |
1092 |
-route_match_pathlimit_as (void *rule, struct prefix *prefix, route_map_object_t type, |
1093 |
- void *object) |
1094 |
-{ |
1095 |
- struct bgp_info *info = object; |
1096 |
- struct attr *attr = info->attr; |
1097 |
- uint32_t as = *(uint32_t *)rule; |
1098 |
- |
1099 |
- if (type != RMAP_BGP) |
1100 |
- return RMAP_NOMATCH; |
1101 |
- |
1102 |
- if (!attr->pathlimit.as) |
1103 |
- return RMAP_NOMATCH; |
1104 |
- |
1105 |
- if (as == attr->pathlimit.as) |
1106 |
- return RMAP_MATCH; |
1107 |
- |
1108 |
- return RMAP_NOMATCH; |
1109 |
-} |
1110 |
- |
1111 |
-/* 'match pathlimit as' */ |
1112 |
-struct route_map_rule_cmd route_match_pathlimit_as_cmd = |
1113 |
-{ |
1114 |
- "pathlimit as", |
1115 |
- route_match_pathlimit_as, |
1116 |
- route_pathlimit_compile, |
1117 |
- route_pathlimit_free |
1118 |
-}; |
1119 |
- |
1120 |
-/* Set pathlimit TTL. */ |
1121 |
-static route_map_result_t |
1122 |
-route_set_pathlimit_ttl (void *rule, struct prefix *prefix, |
1123 |
- route_map_object_t type, void *object) |
1124 |
-{ |
1125 |
- struct bgp_info *info = object; |
1126 |
- struct attr *attr = info->attr; |
1127 |
- u_char ttl = *(uint32_t *)rule; |
1128 |
- |
1129 |
- if (type == RMAP_BGP) |
1130 |
- { |
1131 |
- attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_AS_PATHLIMIT); |
1132 |
- attr->pathlimit.ttl = ttl; |
1133 |
- attr->pathlimit.as = 0; |
1134 |
- } |
1135 |
- |
1136 |
- return RMAP_OKAY; |
1137 |
-} |
1138 |
- |
1139 |
-/* Set local preference rule structure. */ |
1140 |
-struct route_map_rule_cmd route_set_pathlimit_ttl_cmd = |
1141 |
-{ |
1142 |
- "pathlimit ttl", |
1143 |
- route_set_pathlimit_ttl, |
1144 |
- route_pathlimit_compile, |
1145 |
- route_pathlimit_free, |
1146 |
-}; |
1147 |
- |
1148 |
/* 'match peer (A.B.C.D|X:X::X:X)' */ |
1149 |
|
1150 |
/* Compares the peer specified in the 'match peer' clause with the peer |
1151 |
@@ -3743,17 +3651,17 @@ ALIAS (no_set_originator_id, |
1152 |
"BGP originator ID attribute\n" |
1153 |
"IP address of originator\n") |
1154 |
|
1155 |
-DEFUN (set_pathlimit_ttl, |
1156 |
+DEFUN_DEPRECATED (set_pathlimit_ttl, |
1157 |
set_pathlimit_ttl_cmd, |
1158 |
"set pathlimit ttl <1-255>", |
1159 |
SET_STR |
1160 |
"BGP AS-Pathlimit attribute\n" |
1161 |
"Set AS-Path Hop-count TTL\n") |
1162 |
{ |
1163 |
- return bgp_route_set_add (vty, vty->index, "pathlimit ttl", argv[0]); |
1164 |
+ return CMD_SUCCESS; |
1165 |
} |
1166 |
|
1167 |
-DEFUN (no_set_pathlimit_ttl, |
1168 |
+DEFUN_DEPRECATED (no_set_pathlimit_ttl, |
1169 |
no_set_pathlimit_ttl_cmd, |
1170 |
"no set pathlimit ttl", |
1171 |
NO_STR |
1172 |
@@ -3761,10 +3669,7 @@ DEFUN (no_set_pathlimit_ttl, |
1173 |
"BGP AS-Pathlimit attribute\n" |
1174 |
"Set AS-Path Hop-count TTL\n") |
1175 |
{ |
1176 |
- if (argc == 0) |
1177 |
- return bgp_route_set_delete (vty, vty->index, "pathlimit ttl", NULL); |
1178 |
- |
1179 |
- return bgp_route_set_delete (vty, vty->index, "pathlimit ttl", argv[0]); |
1180 |
+ return CMD_SUCCESS; |
1181 |
} |
1182 |
|
1183 |
ALIAS (no_set_pathlimit_ttl, |
1184 |
@@ -3775,17 +3680,17 @@ ALIAS (no_set_pathlimit_ttl, |
1185 |
"BGP AS-Pathlimit attribute\n" |
1186 |
"Set AS-Path Hop-count TTL\n") |
1187 |
|
1188 |
-DEFUN (match_pathlimit_as, |
1189 |
+DEFUN_DEPRECATED (match_pathlimit_as, |
1190 |
match_pathlimit_as_cmd, |
1191 |
"match pathlimit as <1-65535>", |
1192 |
MATCH_STR |
1193 |
"BGP AS-Pathlimit attribute\n" |
1194 |
"Match Pathlimit AS number\n") |
1195 |
{ |
1196 |
- return bgp_route_match_add (vty, vty->index, "pathlimit as", argv[0]); |
1197 |
+ return CMD_SUCCESS; |
1198 |
} |
1199 |
|
1200 |
-DEFUN (no_match_pathlimit_as, |
1201 |
+DEFUN_DEPRECATED (no_match_pathlimit_as, |
1202 |
no_match_pathlimit_as_cmd, |
1203 |
"no match pathlimit as", |
1204 |
NO_STR |
1205 |
@@ -3793,10 +3698,7 @@ DEFUN (no_match_pathlimit_as, |
1206 |
"BGP AS-Pathlimit attribute\n" |
1207 |
"Match Pathlimit AS number\n") |
1208 |
{ |
1209 |
- if (argc == 0) |
1210 |
- return bgp_route_match_delete (vty, vty->index, "pathlimit as", NULL); |
1211 |
- |
1212 |
- return bgp_route_match_delete (vty, vty->index, "pathlimit as", argv[0]); |
1213 |
+ return CMD_SUCCESS; |
1214 |
} |
1215 |
|
1216 |
ALIAS (no_match_pathlimit_as, |
1217 |
@@ -3959,10 +3861,9 @@ bgp_route_map_init (void) |
1218 |
install_element (RMAP_NODE, &no_set_ipv6_nexthop_local_val_cmd); |
1219 |
#endif /* HAVE_IPV6 */ |
1220 |
|
1221 |
- /* AS-Pathlimit */ |
1222 |
- route_map_install_match (&route_match_pathlimit_as_cmd); |
1223 |
- route_map_install_set (&route_set_pathlimit_ttl_cmd); |
1224 |
- |
1225 |
+ /* AS-Pathlimit: functionality removed, commands kept for |
1226 |
+ * compatibility. |
1227 |
+ */ |
1228 |
install_element (RMAP_NODE, &set_pathlimit_ttl_cmd); |
1229 |
install_element (RMAP_NODE, &no_set_pathlimit_ttl_cmd); |
1230 |
install_element (RMAP_NODE, &no_set_pathlimit_ttl_val_cmd); |
1231 |
diff --git a/doc/bgpd.texi b/doc/bgpd.texi |
1232 |
index 40156b7..e746330 100644 |
1233 |
--- doc/bgpd.texi |
1234 |
+++ doc/bgpd.texi |
1235 |
@@ -149,29 +149,6 @@ routes if they aren't present in their IGP routing tables; @code{bgpd} |
1236 |
doesn't care about IGP routes when announcing its routes. |
1237 |
@end deffn |
1238 |
|
1239 |
-@deffn {BGP} {network @var{A.B.C.D/M} pathlimit <0-255>} {} |
1240 |
-This command configures a route to be originated into BGP, just as with the |
1241 |
-previous command, but additionally sets an AS-Pathlimit TTL to be advertised |
1242 |
-on the route. See draft-ietf-idr-as-pathlimit. |
1243 |
- |
1244 |
-Specifying a TTL of 0 can be used to remove pathlimit from a previously |
1245 |
-configured network statement. |
1246 |
- |
1247 |
-Note that when advertising prefixes with AS-Pathlimit set, all less-specific |
1248 |
-prefixes advertised SHOULD also have the Atomic-Aggregate attribute set. |
1249 |
-Failure to do so increases the risks of accidental routing loops occuring. |
1250 |
- |
1251 |
-This implementation will try to automatically set Atomic-Aggregate as |
1252 |
-appropriate on any less-specific prefixes originated by the same speaker, |
1253 |
-however it will not (and often can not) do so where @b{other} speakers in |
1254 |
-the AS are originating more specifics. |
1255 |
- |
1256 |
-Hence the system administrator must take care to ensure that all |
1257 |
-less-specific prefixes originated carry atomic-aggregate as appropriate, by |
1258 |
-manually configuring speakers originating less-specifics to set |
1259 |
-Atomic-Aggregate on those advertisements! |
1260 |
-@end deffn |
1261 |
- |
1262 |
@deffn {BGP} {no network @var{A.B.C.D/M}} {} |
1263 |
@end deffn |
1264 |
|
1265 |
diff --git a/doc/routemap.texi b/doc/routemap.texi |
1266 |
index 9ac001c..db3e72d 100644 |
1267 |
--- doc/routemap.texi |
1268 |
+++ doc/routemap.texi |
1269 |
@@ -155,10 +155,6 @@ Matches the specified @var{metric}. |
1270 |
Matches the specified @var{community_list} |
1271 |
@end deffn |
1272 |
|
1273 |
-@deffn {Route-map Command} {match pathlimit as @var{ASN}} {} |
1274 |
-Matches the specified AS-Pathlimit @var{ASN}. |
1275 |
-@end deffn |
1276 |
- |
1277 |
@node Route Map Set Command |
1278 |
@section Route Map Set Command |
1279 |
|
1280 |
@@ -194,16 +190,6 @@ Set the BGP-4+ global IPv6 nexthop address. |
1281 |
Set the BGP-4+ link local IPv6 nexthop address. |
1282 |
@end deffn |
1283 |
|
1284 |
-@deffn {Route-map Command} {set pathlimit ttl @var{ttl}} {} |
1285 |
-Sets the specified AS-Pathlimit @var{ttl} on the route. This will also cause |
1286 |
-the AS to be set to the local AS. |
1287 |
- |
1288 |
-Note that the AS-Pathlimit RFC specifies that speakers advertising this |
1289 |
-attribute should set Atomic-aggregate on all less specific routes. Setting |
1290 |
-AS-Pathlimit by route-map does not do this, the user must do so themselves, |
1291 |
-as they wish. |
1292 |
-@end deffn |
1293 |
- |
1294 |
@node Route Map Call Command |
1295 |
@section Route Map Call Command |
1296 |
|