summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* tests: fix bgp_bmp race conditionLouis Scalbert2024-10-252-19/+13
| | | | | | | | | | | | | | | | | | | | | The bgp_bmp topotest is randomly failing with similar messages: > 2024-10-24 16:59:03,037 ERROR: topo: test failed at "bgp_bmp.test_bgp_bmp/test_bmp_bgp_unicast": Checking the updated prefixes has failed ! Generated JSON diff error report: > > $->pre-policy->update: expected has key '172.31.0.15/32' which is not present in output It is particularly unsuccessful when run with valgrind: > python3 -m pytest -vvss --valgrind-leak-kinds=all --valgrind-extra --valgrind-memleaks bgp_bmp bgp_bmp is configuring a BMP policy on r1 and then some static BGP prefixes on r2. If for some reasons, the BGP UPDATE arrives to r1 before the BMP configuration is operational, the UPDATE is not sent to the BMP server and the test fails. Pre-configure the BMP policies at startup to avoid this race condition. Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
* tests: factorize code in bgp_bmp_vrfLouis Scalbert2024-10-251-54/+32
| | | | | | Factorize code in bgp_bmp_vrf Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
* tests: factorize code in bgp_bmpLouis Scalbert2024-10-2520-166/+80
| | | | | | Factorize code in bgp_bmp Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
* tests: rework bgp_bmp_vrfLouis Scalbert2024-10-2511-33/+414
| | | | | | | | | | The BGP BMP VRF topotest is difficult to debug. It does not say which prefix is not received by BGP or BMP when it fails. Rework the test to convert the actual BMP logs to JSON and compare the BGP table and BMP server logs output to expected reference JSON files. Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
* tests: rework bgp_bmpLouis Scalbert2024-10-2521-46/+827
| | | | | | | | | | The BGP BMP topotest is difficult to debug. It does not say which prefix is not received by BGP or BMP when it fails. Rework the test to convert the actual BMP logs to JSON and compare the BGP table and BMP server logs output to expected reference JSON files. Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
* tests: augment bgp bmp test wait timeLouis Scalbert2024-10-252-12/+12
| | | | | | Augment bgp bmp test wait time Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
* Merge pull request #17199 from enkechen-panw/aigp-fix5Donatas Abraitis2024-10-255-33/+83
|\ | | | | bgpd: compare aigp after local route check in bgp_path_info_cmp()
| * bgpd: compare aigp after local route check in bgp_path_info_cmp()Enke Chen2024-10-242-33/+30
| | | | | | | | | | | | | | For consistency between RIB and BGP, the aigp comparison should be made after the local route check in bgp bestpath selection. Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
| * tests: add a new BGP AIGP topotestEnke Chen2024-10-243-0/+53
| | | | | | | | | | | | | | The topotest verifies that a local route is favored irrespective of its AIGP value. Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
* | Merge pull request #17207 from louis-6wind/bmpserver-logDonatas Abraitis2024-10-253-26/+109
|\ \ | | | | | | tests: add bmpserver logging
| * | tests: add bmpserver loggingLouis Scalbert2024-10-243-29/+106
| | | | | | | | | | | | | | | | | | Add bmpserver logging Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
| * | tests: bmpserver, detect session close immediatelyLouis Scalbert2024-10-241-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bmpserver infinitely loops after the clients has closed the TCP session. In this situation, recv() returns empty data. Detect session close immediately. Fixes: 875511c466 ("topotests: add basic bmp collector") Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
| * | tests: apply black to bmpserverLouis Scalbert2024-10-241-0/+3
| | | | | | | | | | | | | | | | | | Apply black to bmpserver Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
* | | Merge pull request #17229 from donaldsharp/bgp_update_optimizationsDonatas Abraitis2024-10-258-44/+91
|\ \ \ | | | | | | | | Optimizations and problem fixing for large scale ecmp from bgp
| * | | bgpd: Fix wrong pthread event cancellingDonald Sharp2024-10-255-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=130719886083648) at ./nptl/pthread_kill.c:44 1 __pthread_kill_internal (signo=6, threadid=130719886083648) at ./nptl/pthread_kill.c:78 2 __GI___pthread_kill (threadid=130719886083648, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 3 0x000076e399e42476 in __GI_raise (sig=6) at ../sysdeps/posix/raise.c:26 4 0x000076e39a34f950 in core_handler (signo=6, siginfo=0x76e3985fca30, context=0x76e3985fc900) at lib/sigevent.c:258 5 <signal handler called> 6 __pthread_kill_implementation (no_tid=0, signo=6, threadid=130719886083648) at ./nptl/pthread_kill.c:44 7 __pthread_kill_internal (signo=6, threadid=130719886083648) at ./nptl/pthread_kill.c:78 8 __GI___pthread_kill (threadid=130719886083648, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 9 0x000076e399e42476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 10 0x000076e399e287f3 in __GI_abort () at ./stdlib/abort.c:79 11 0x000076e39a39874b in _zlog_assert_failed (xref=0x76e39a46cca0 <_xref.27>, extra=0x0) at lib/zlog.c:789 12 0x000076e39a369dde in cancel_event_helper (m=0x5eda32df5e40, arg=0x5eda33afeed0, flags=1) at lib/event.c:1428 13 0x000076e39a369ef6 in event_cancel_event_ready (m=0x5eda32df5e40, arg=0x5eda33afeed0) at lib/event.c:1470 14 0x00005eda0a94a5b3 in bgp_stop (connection=0x5eda33afeed0) at bgpd/bgp_fsm.c:1355 15 0x00005eda0a94b4ae in bgp_stop_with_notify (connection=0x5eda33afeed0, code=8 '\b', sub_code=0 '\000') at bgpd/bgp_fsm.c:1610 16 0x00005eda0a979498 in bgp_packet_add (connection=0x5eda33afeed0, peer=0x5eda33b11800, s=0x76e3880daf90) at bgpd/bgp_packet.c:152 17 0x00005eda0a97a80f in bgp_keepalive_send (peer=0x5eda33b11800) at bgpd/bgp_packet.c:639 18 0x00005eda0a9511fd in peer_process (hb=0x5eda33c9ab80, arg=0x76e3985ffaf0) at bgpd/bgp_keepalives.c:111 19 0x000076e39a2cd8e6 in hash_iterate (hash=0x76e388000be0, func=0x5eda0a95105e <peer_process>, arg=0x76e3985ffaf0) at lib/hash.c:252 20 0x00005eda0a951679 in bgp_keepalives_start (arg=0x5eda3306af80) at bgpd/bgp_keepalives.c:214 21 0x000076e39a2c9932 in frr_pthread_inner (arg=0x5eda3306af80) at lib/frr_pthread.c:180 22 0x000076e399e94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442 23 0x000076e399f26850 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81 (gdb) f 12 12 0x000076e39a369dde in cancel_event_helper (m=0x5eda32df5e40, arg=0x5eda33afeed0, flags=1) at lib/event.c:1428 1428 assert(m->owner == pthread_self()); In this decode the attempt to cancel the connection's events from the wrong thread is causing the crash. Modify the code to create an event on the bm->master to cancel the events for the connection. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
| * | | bgpd: Fix deadlock in bgp_keepalive and master pthreadsDonald Sharp2024-10-251-32/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (gdb) bt 0 futex_wait (private=0, expected=2, futex_word=0x5c438e9a98d8) at ../sysdeps/nptl/futex-internal.h:146 1 __GI___lll_lock_wait (futex=futex@entry=0x5c438e9a98d8, private=0) at ./nptl/lowlevellock.c:49 2 0x00007af16d698002 in lll_mutex_lock_optimized (mutex=0x5c438e9a98d8) at ./nptl/pthread_mutex_lock.c:48 3 ___pthread_mutex_lock (mutex=0x5c438e9a98d8) at ./nptl/pthread_mutex_lock.c:93 4 0x00005c4369c17e70 in _frr_mtx_lock (mutex=0x5c438e9a98d8, func=0x5c4369dc2750 <__func__.265> "bgp_notify_send_internal") at ./lib/frr_pthread.h:258 5 0x00005c4369c1a07a in bgp_notify_send_internal (connection=0x5c438e9a98c0, code=8 '\b', sub_code=0 '\000', data=0x0, datalen=0, use_curr=true) at bgpd/bgp_packet.c:928 6 0x00005c4369c1a707 in bgp_notify_send (connection=0x5c438e9a98c0, code=8 '\b', sub_code=0 '\000') at bgpd/bgp_packet.c:1069 7 0x00005c4369bea422 in bgp_stop_with_notify (connection=0x5c438e9a98c0, code=8 '\b', sub_code=0 '\000') at bgpd/bgp_fsm.c:1597 8 0x00005c4369c18480 in bgp_packet_add (connection=0x5c438e9a98c0, peer=0x5c438e9b6010, s=0x7af15c06bf70) at bgpd/bgp_packet.c:151 9 0x00005c4369c19816 in bgp_keepalive_send (peer=0x5c438e9b6010) at bgpd/bgp_packet.c:639 10 0x00005c4369bf01fd in peer_process (hb=0x5c438ed05520, arg=0x7af16bdffaf0) at bgpd/bgp_keepalives.c:111 11 0x00007af16dacd8e6 in hash_iterate (hash=0x7af15c000be0, func=0x5c4369bf005e <peer_process>, arg=0x7af16bdffaf0) at lib/hash.c:252 12 0x00005c4369bf0679 in bgp_keepalives_start (arg=0x5c438e0db110) at bgpd/bgp_keepalives.c:214 13 0x00007af16dac9932 in frr_pthread_inner (arg=0x5c438e0db110) at lib/frr_pthread.c:180 14 0x00007af16d694ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442 15 0x00007af16d726850 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81 (gdb) The bgp keepalive pthread gets deadlocked with itself and consequently the bgp master pthread gets locked when it attempts to lock the peerhash_mtx, since it is also locked by the keepalive_pthread The keepalive pthread is locking the peerhash_mtx in bgp_keepalives_start. Next the connection->io_mtx mutex in bgp_keepalives_send is locked and then when it notices a problem it invokes bgp_stop_with_notify which relocks the same mutex ( and of course the relock causes it to get stuck on itself ). This generates a deadlock condition. Modify the code to only hold the connection->io_mtx as short as possible. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
| * | | bgpd: Only grab the confed path count if we are comparing itDonald Sharp2024-10-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is just a small optimization but when calling path_info_cmp hundreds of millions of times this adds up. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
| * | | bgpd: Store aspath count after aspath has changedDonald Sharp2024-10-252-2/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When running bestpath on a very large number of ecmp. BGP ends up calling aspath_count a very very large number of times, which results in ~15% cpu runtime in aspath_count_hops. Modify the aspath to keep track of it's own count. This results in the function now taking up ~1.5% of the cpu runtime. Enough for the moment to be ignored. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
| * | | bgpd: Do not call evpn_overlay_free no matter whatDonald Sharp2024-10-251-8/+12
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | bgp_update is a very expensive call. Calling evpn_overlay_free even when we have no evpn data to free is not trivial. Let's limit the call into this function until we actually have data to free. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* | | Merge pull request #17215 from nabahr/autorp_no_pathDonatas Abraitis2024-10-251-1/+4
|\ \ \ | | | | | | | | pimd: PIM autorp no path RP fix
| * | | pimd: PIM autorp no path RP fixNathan Bahr2024-10-231-1/+4
| | |/ | |/| | | | | | | | | | | | | Just because there is currently no path to the RP doesn't mean it failed to add. Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
* | | Merge pull request #17155 from opensourcerouting/memstats-zlogDonald Sharp2024-10-2511-51/+129
|\ \ \ | |_|/ |/| | lib: `debug memstats-at-exit` improvements
| * | lib: refactor memstats logging, fix ACTIVEATEXITDavid Lamparter2024-10-1710-48/+97
| | | | | | | | | | | | | | | | | | | | | | | | Move the various destinations handling into lib/memory.c, include "normal" logging as target, and make `ACTIVEATEXIT` properly non-error as it was intended to be. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
| * | lib: do not log_memstats() in crash handlerDavid Lamparter2024-10-171-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | `log_memstats()` is not AS-safe. It can hang the crash handler (or set your PC on fire, or cause the sun to go supernova - according to POSIX specs, anyway.) Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
| * | lib: zlog stays running on shutdownDavid Lamparter2024-10-171-1/+15
| | | | | | | | | | | | | | | | | | | | | No `zlog_fini()`, please. Getting log messages until the end is more important than leaking memory allocated for zlog targets. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
| * | lib: actually propagate MGROUP argsDavid Lamparter2024-10-171-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Well, this was only checked for exit status, which we didn't really observe... so, uh, yeah, not particularly noticeable it wasn't even wired up... clang-format off/on added to not get formatting wrecked on this. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* | | Merge pull request #17191 from louis-6wind/fix-bgp-labelsDonatas Abraitis2024-10-242-3/+3
|\ \ \ | |_|/ |/| | bgpd: fix uninitialized bgp_labels
| * | bgpd: fix uninitialized labelsLouis Scalbert2024-10-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix uninitialized labels that cause multiple valgrind issues. > ==3729602== Use of uninitialised value of size 8 > ==3729602== at 0x492B493: hash_get (hash.c:140) > ==3729602== by 0x2629D2: bgp_labels_intern (bgp_label.c:98) > ==3729602== by 0x2E6C92: bgp_adj_out_set_subgroup (bgp_updgrp_adv.c:622) > ==3729602== by 0x2A6810: subgroup_process_announce_selected (bgp_route.c:3340) > ==3729602== by 0x2E5FF6: group_announce_route_walkcb (bgp_updgrp_adv.c:260) > ==3729602== by 0x2E3E28: update_group_walkcb (bgp_updgrp.c:1759) > ==3729602== by 0x492B9A0: hash_walk (hash.c:270) > ==3729602== by 0x2E498C: update_group_af_walk (bgp_updgrp.c:2090) > ==3729602== by 0x2E7C0D: group_announce_route (bgp_updgrp_adv.c:1119) > ==3729602== by 0x2A796E: bgp_process_main_one (bgp_route.c:3865) > ==3729602== by 0x2A808A: bgp_process_wq (bgp_route.c:3991) > ==3729602== by 0x49CC7CF: work_queue_run (workqueue.c:282) > ==3729602== by 0x49BBF25: event_call (event.c:2019) > ==3729602== by 0x49413CA: frr_run (libfrr.c:1238) > ==3729602== by 0x1FD1D3: main (bgp_main.c:555) > ==2604268== Use of uninitialised value of size 8 > ==2604268== at 0x4943016: hash_get (hash.c:159) > ==2604268== by 0x26EFC1: bgp_labels_intern (bgp_label.c:97) > ==2604268== by 0x28077B: leak_update (bgp_mplsvpn.c:1298) > ==2604268== by 0x2824A3: vpn_leak_from_vrf_update (bgp_mplsvpn.c:1932) > ==2604268== by 0x2C281C: bgp_static_update (bgp_route.c:6974) > ==2604268== by 0x2C366F: bgp_static_set (bgp_route.c:7263) > ==2604268== by 0x2C435B: bgp_network_magic (bgp_route.c:7556) > ==2604268== by 0x2ACF09: bgp_network (bgp_route_clippy.c:86) > ==2604268== by 0x4914EE7: cmd_execute_command_real (command.c:1003) > ==2604268== by 0x4915060: cmd_execute_command (command.c:1062) > ==2604268== by 0x4915610: cmd_execute (command.c:1228) > ==2604268== by 0x49E7C32: vty_command (vty.c:625) > ==2604268== by 0x49E9B56: vty_execute (vty.c:1388) > ==2604268== by 0x49EC331: vtysh_read (vty.c:2400) > ==2604268== by 0x49E06F1: event_call (event.c:2001) > ==2604268== by 0x495AB8B: frr_run (libfrr.c:1238) > ==2604268== by 0x200C4B: main (bgp_main.c:555) Fixes: ddb5b4880b ("bgpd: vpn-vrf route leaking") Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
| * | bgpd: fix allocating uninitialized bgp_labelsLouis Scalbert2024-10-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Memory was not zeroed at allocation. > ==2604268== Conditional jump or move depends on uninitialised value(s) > ==2604268== at 0x26F026: bgp_labels_unintern (bgp_label.c:116) > ==2604268== by 0x30000C: adj_free (bgp_updgrp_adv.c:81) > ==2604268== by 0x3019EE: bgp_adj_out_remove_subgroup (bgp_updgrp_adv.c:728) > ==2604268== by 0x30537C: subgroup_withdraw_packet (bgp_updgrp_packet.c:1042) > ==2604268== by 0x2970AF: bgp_generate_updgrp_packets (bgp_packet.c:508) > ==2604268== by 0x49E06F1: event_call (event.c:2001) > ==2604268== by 0x495AB8B: frr_run (libfrr.c:1238) > ==2604268== by 0x200C4B: main (bgp_main.c:555) Fixes: 3c86f776f0 ("bgpd: add bgp_labels hash") Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
* | | Merge pull request #17162 from louis-6wind/fix-bh-nh-vrfDonatas Abraitis2024-10-232-3/+3
|\ \ \ | | | | | | | | zebra: fix showing nexthop vrf for ipv6 blackhole
| * | | zebra: fix showing nexthop vrf for ipv6 blackholeLouis Scalbert2024-10-182-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For some reasons the Linux kernel associates the ipv6 blackhole of non default table the lo interface. > root@r1# ip -6 route show table 100 > root@r1# ip -6 route add unreachable default metric 4278198272 table 100 > root@r1# ip -6 route show table 100 > unreachable default dev lo metric 4278198272 pref medium As a consequence, the VRF default that owns the lo interface is shown as the nexthop VRF: > r1# show ipv6 route table 20 > Table 20: > K>* ::/0 [255/8192] unreachable (ICMP unreachable) (vrf default), 00:18:12 Do not display the nexthop VRF of a blackhole. It does not make sense for a blackhole and it was not displayed in the past. Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
* | | | Merge pull request #17183 from Shbinging/fix_no_area_range_command_2Donatas Abraitis2024-10-231-0/+2
|\ \ \ \ | | | | | | | | | | ospfd:fix the bug that the empty area was not free after no area range command was executed
| * | | | ospfd:fix the bug that the empty area was not free after no area range ↵Shbinging2024-10-221-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | command was executed When we use the no area X.X.X.X range A.B.C.D/M command, if the area no longer has an interface to which it belongs, then the area should be deleted from the LSDB. This processing logic is consistent with instructions such as no network area and no area authentication. Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
* | | | | Merge pull request #17198 from donaldsharp/backout_stdout_changesRuss White2024-10-221-10/+4
|\ \ \ \ \ | | | | | | | | | | | | Revert "lib: Attach stdout to child only if --log=stdout and stdout F…
| * | | | | Revert "lib: Attach stdout to child only if --log=stdout and stdout FD is a tty"Donald Sharp2024-10-221-10/+4
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 0e3c5e8e5907321b35201f0985c1d3f4a1b0e639.
* | | | | | Merge pull request #17192 from donaldsharp/bgp_bmp_stream_leakRuss White2024-10-221-0/+2
|\ \ \ \ \ \ | |_|_|_|/ / |/| | | | | bgpd: Do not leak a stream with bmp code
| * | | | | bgpd: Do not leak a stream with bmp codeDonald Sharp2024-10-221-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* | | | | | Merge pull request #17180 from anlancs/zebra/review-move-dplaneJafar Al-Gharaibeh2024-10-221-4/+2
|\ \ \ \ \ \ | |_|/ / / / |/| | | | | zebra: drop NEWLINK event handling in the main thread
| * | | | | zebra: drop NEWLINK event handling in the main threadanlan_cs2024-10-221-4/+2
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NEWLINK is only registered by the dplane thread, the main thread doesn't care about it. So remove the real process of `netlink_link_change()` for NEWLINK event in main thread. And move NEWLINK/DELLINK event to the block where the dplane messages are kept together. Signed-off-by: anlan_cs <anlan_cs@126.com>
* | | | | Merge pull request #17174 from baozhen-H3C/202410180225Russ White2024-10-221-2/+2
|\ \ \ \ \ | | | | | | | | | | | | isisd: fix 'show isis route' and 'show isis fast-reroute summary' errors with vrf
| * | | | | isisd: fix 'show isis route' and 'show isis fast-reroute summary' errors ↵baozhen-H3C2024-10-221-2/+2
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | with vrf When the VRF does not exist, the command will display results for the 'default' VRF. 1.before the commit: sonic# show vrf vrf Vrf1 id 41 table 1001 sonic# show isis vrf abc route level-1 Area 10: IS-IS L1 IPv4 routing table: Prefix Metric Interface Nexthop Label(s) ------------------------------------------------------- 0.0.0.0/0 5 Ethernet0 10.1.1.2 - 6.6.6.6/32 10 - - - sonic# show isis vrf abc fast-reroute summary level-1 Area 10: IS-IS L1 IPv4 Fast ReRoute summary: Protection \ Priority Critical High Medium Low Total -------------------------------------------------------------------------- Classic LFA 0 0 2 3 5 Remote LFA 0 0 0 0 0 Topology Independent LFA 0 0 0 0 0 ECMP 0 0 0 0 0 Unprotected 0 0 2 2 4 Protection coverage 0.00% 0.00% 50.00% 60.00% 55.56% 2.after the commit: sonic# show vrf vrf Vrf1 id 41 table 1001 sonic# show isis vrf abc route level-1 sonic# show isis vrf abc fast-reroute summary level-1 What I do: Move 'ISIS_FIND_VRF_ARGS(argv, argc, idx, vrf_name, all_vrf);' to the front, otherwise changing 'idx' while searching for other parameters may result in failing to find the vrf parameter. Signed-off-by: baozhen-H3C <bao.zhen@h3c.com>
* | | | | Merge pull request #17166 from anlancs/zebra/review-remove-oneRuss White2024-10-221-6/+0
|\ \ \ \ \ | | | | | | | | | | | | zebra: remove useless code
| * | | | | zebra: remove useless codeanlan_cs2024-10-191-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: anlan_cs <anlan_cs@126.com>
* | | | | | Merge pull request #17165 from opensourcerouting/fix/bgp_community_no_export_oadRuss White2024-10-223-6/+46
|\ \ \ \ \ \ | | | | | | | | | | | | | | bgpd: Do not filter no-export community for BGP OAD
| * | | | | | tests: Check if BGP no-export community is passed to BGP OAD peersDonatas Abraitis2024-10-182-1/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
| * | | | | | bgpd: Do not filter no-export community for BGP OAD (one administration domain)Donatas Abraitis2024-10-181-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OAD is treated as an _internal_ BGP peer, and some of the rules (including BGP attributes) can be relaxed. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
* | | | | | | Merge pull request #17151 from ↵Russ White2024-10-2211-89/+213
|\ \ \ \ \ \ \ | |_|_|_|/ / / |/| | | | | | | | | | | | | | | | | | | | opensourcerouting/fix/send_link_bw_as_non-transitive_to_ebgp bgpd: Handle non-transitive extended communities
| * | | | | | bgpd: Handle non-transitive opaque extended communities also for eBGP peersDonatas Abraitis2024-10-222-17/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes: 765a0855f1ffec68ed42f2fac8afcaaeed99fd1a ("bgpd: Rework extended community transitiviness") Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
| * | | | | | bgpd: Check transivity flag for node target extended community with CHECK_FLAG()Donatas Abraitis2024-10-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
| * | | | | | bgpd: Rework extended community transitivinessDonatas Abraitis2024-10-222-67/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extended communities can be transitive or non-transitive. Like other attributes (e.g., MED) non-transitive extended communities SHOULD be sent to the direct peer, but not forward them to eBGP peers next. Before this patch, we never send non-transitive extended attributes to the direct peers at all. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>