]>
git.puffer.fish Git - matthieu/frr.git/commit
bgpd: fix no bgp as-path access-list issue
router bgp 65001
no bgp ebgp-requires-policy
neighbor 192.168.1.2 remote-as external
neighbor 192.168.1.2 timers 3 10
address-family ipv4 unicast
neighbor 192.168.1.2 route-map r2 in
exit-address-family
!
ip prefix-list p1 seq 5 permit 172.16.255.31/32
!
route-map r2 permit 10
match ip address prefix-list p1
set as-path exclude 65003
route-map r2 permit 20
set as-path exclude all
!
we make the following commands
bgp as-path access-list FIRST permit ^65
bgp as-path access-list SECOND permit 2
route-map r2 permit 6
set as-path exclude as-path-access-list SECOND
and then
no bgp as-path access-list SECOND permit 2
clear bgp *
we have the following crash in bgp
Stack trace of thread 536083:
#0 0x00007f87f8aacfe1 raise (libpthread.so.0 + 0x12fe1)
#1 0x00007f87f8cf6870 core_handler (libfrr.so.0 +
0xf6870)
#2 0x00007f87f8aad140 __restore_rt (libpthread.so.0 +
0x13140)
#3 0x00007f87f89a5122 __GI___regexec (libc.so.6 +
0xdf122)
#4 0x000055d7f198b4a7 aspath_filter_exclude_acl (bgpd +
0x2054a7)
#5 0x000055d7f1902187 route_set_aspath_exclude (bgpd +
0x17c187)
#6 0x00007f87f8ce54b0 route_map_apply_ext (libfrr.so.0
+ 0xe54b0)
#7 0x000055d7f18da925 bgp_input_modifier (bgpd +
0x154925)
#8 0x000055d7f18e0647 bgp_update (bgpd + 0x15a647)
#9 0x000055d7f18e4772 bgp_nlri_parse_ip (bgpd +
0x15e772)
#10 0x000055d7f18c38ae bgp_nlri_parse (bgpd + 0x13d8ae)
#11 0x000055d7f18c6b7a bgp_update_receive (bgpd +
0x140b7a)
#12 0x000055d7f18c8ff3 bgp_process_packet (bgpd +
0x142ff3)
#13 0x00007f87f8d0dce0 thread_call (libfrr.so.0 +
0x10dce0)
#14 0x00007f87f8cacb28 frr_run (libfrr.so.0 + 0xacb28)
#15 0x000055d7f18435da main (bgpd + 0xbd5da)
#16 0x00007f87f88e9d0a __libc_start_main (libc.so.6 +
0x23d0a)
#17 0x000055d7f18415fa _start (bgpd + 0xbb5fa)
analysis
crash is due to the fact that there were always a pointer from
as-path exclude to deleted as-path access list.
fix
we add a backpointer mechanism to manage the dependency beetween
as-path access-list and aspath exclude.
Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>