FRRouting / frr

The FRRouting Protocol Suite
https://frrouting.org/
Other
3.12k stars 1.2k forks source link

pimd: fix crash on non-existent interface #16309

Open louis-6wind opened 1 week ago

louis-6wind commented 1 week ago

Fix the following crash when pim options are (un)configured on an non-existent interface.

r1(config)# int fgljdsf r1(config-if)# no ip pim unicast-bsm vtysh: error reading from pimd: Connection reset by peer (104)Warning: closing connection to pimd because of an I/O error!

0 raise (sig=) at ../sysdeps/unix/sysv/linux/raise.c:50

1 0x00007f70c8f32249 in core_handler (signo=11, siginfo=0x7fffff88e4f0, context=0x7fffff88e3c0) at lib/sigevent.c:258

2

3 0x0000556cfdd9b16d in lib_interface_pim_address_family_unicast_bsm_modify (args=0x7fffff88f130) at pimd/pim_nb_config.c:1910

4 0x00007f70c8efdcb5 in nb_callback_modify (context=0x556d00032b60, nb_node=0x556cffeeb9b0, event=NB_EV_APPLY, dnode=0x556d00031670, resource=0x556d00032b48, errmsg=0x7fffff88f710 "", errmsg_len=8192)

at lib/northbound.c:1538

5 0x00007f70c8efe949 in nb_callback_configuration (context=0x556d00032b60, event=NB_EV_APPLY, change=0x556d00032b10, errmsg=0x7fffff88f710 "", errmsg_len=8192) at lib/northbound.c:1888

6 0x00007f70c8efee82 in nb_transaction_process (event=NB_EV_APPLY, transaction=0x556d00032b60, errmsg=0x7fffff88f710 "", errmsg_len=8192) at lib/northbound.c:2016

7 0x00007f70c8efd658 in nb_candidate_commit_apply (transaction=0x556d00032b60, save_transaction=true, transaction_id=0x0, errmsg=0x7fffff88f710 "", errmsg_len=8192) at lib/northbound.c:1356

8 0x00007f70c8efd78e in nb_candidate_commit (context=..., candidate=0x556cffeb0e80, save_transaction=true, comment=0x0, transaction_id=0x0, errmsg=0x7fffff88f710 "", errmsg_len=8192) at lib/northbound.c:1389

9 0x00007f70c8f03e58 in nb_cli_classic_commit (vty=0x556d00025a80) at lib/northbound_cli.c:51

10 0x00007f70c8f043f8 in nb_cli_apply_changes_internal (vty=0x556d00025a80,

xpath_base=0x7fffff893bb0 "/frr-interface:lib/interface[name='fgljdsf']/frr-pim:pim/address-family[address-family='frr-routing:ipv4']", clear_pending=false) at lib/northbound_cli.c:178

11 0x00007f70c8f0475d in nb_cli_apply_changes (vty=0x556d00025a80, xpath_base_fmt=0x556cfdde9fe0 "./frr-pim:pim/address-family[address-family='%s']") at lib/northbound_cli.c:234

12 0x0000556cfdd8298f in pim_process_no_unicast_bsm_cmd (vty=0x556d00025a80) at pimd/pim_cmd_common.c:3493

13 0x0000556cfddcf782 in no_ip_pim_ucast_bsm (self=0x556cfde40b20 , vty=0x556d00025a80, argc=4, argv=0x556d00031500) at pimd/pim_cmd.c:4950

14 0x00007f70c8e942f0 in cmd_execute_command_real (vline=0x556d00032070, vty=0x556d00025a80, cmd=0x0, up_level=0) at lib/command.c:1002

15 0x00007f70c8e94451 in cmd_execute_command (vline=0x556d00032070, vty=0x556d00025a80, cmd=0x0, vtysh=0) at lib/command.c:1061

16 0x00007f70c8e9499f in cmd_execute (vty=0x556d00025a80, cmd=0x556d00030320 "no ip pim unicast-bsm", matched=0x0, vtysh=0) at lib/command.c:1227

17 0x00007f70c8f51e44 in vty_command (vty=0x556d00025a80, buf=0x556d00030320 "no ip pim unicast-bsm") at lib/vty.c:616

18 0x00007f70c8f53bdd in vty_execute (vty=0x556d00025a80) at lib/vty.c:1379

19 0x00007f70c8f55d59 in vtysh_read (thread=0x7fffff896600) at lib/vty.c:2374

20 0x00007f70c8f4b209 in event_call (thread=0x7fffff896600) at lib/event.c:2011

21 0x00007f70c8ed109e in frr_run (master=0x556cffdb4ea0) at lib/libfrr.c:1217

22 0x0000556cfdddec12 in main (argc=2, argv=0x7fffff896828, envp=0x7fffff896840) at pimd/pim_main.c:165

(gdb) f 3

3 0x0000556cfdd9b16d in lib_interface_pim_address_family_unicast_bsm_modify (args=0x7fffff88f130) at pimd/pim_nb_config.c:1910

1910 pim_ifp->ucast_bsm_accept = (gdb) list 1905 case NB_EV_ABORT: 1906 break; 1907 case NB_EV_APPLY: 1908 ifp = nb_running_get_entry(args->dnode, NULL, true); 1909 pim_ifp = ifp->info; 1910 pim_ifp->ucast_bsm_accept = 1911 yang_dnode_get_bool(args->dnode, NULL); 1912 1913 break; 1914 } (gdb) p pim_ifp $1 = (struct pim_interface *) 0x0

Fixes: 3bb513c399 ("lib: adapt to version 2 of libyang")

louis-6wind commented 1 week ago

ci:rerun

ton31337 commented 1 week ago

@Mergifyio backport dev/10.1 stable/10.0 stable/9.1 stable/9.0

mergify[bot] commented 1 week ago

backport dev/10.1 stable/10.0 stable/9.1 stable/9.0

🟠 Waiting for conditions to match

- [ ] `merged` [📌 backport requirement]
louis-6wind commented 3 days ago

ci:rerun