diff options
Diffstat (limited to 'pimd/pim_iface.c')
| -rw-r--r-- | pimd/pim_iface.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c index 7f873f45dc..1dc9307e4f 100644 --- a/pimd/pim_iface.c +++ b/pimd/pim_iface.c @@ -1914,6 +1914,12 @@ static int pim_ifp_up(struct interface *ifp) } } +#if PIM_IPV == 4 + if (pim->autorp && pim->autorp->do_discovery && pim_ifp && + pim_ifp->pim_enable) + pim_autorp_add_ifp(ifp); +#endif + pim_cand_addrs_changed(); return 0; } @@ -1951,6 +1957,10 @@ static int pim_ifp_down(struct interface *ifp) pim_ifstat_reset(ifp); } +#if PIM_IPV == 4 + pim_autorp_rm_ifp(ifp); +#endif + pim_cand_addrs_changed(); return 0; } @@ -2023,6 +2033,11 @@ void pim_pim_interface_delete(struct interface *ifp) if (!pim_ifp) return; +#if PIM_IPV == 4 + if (pim_ifp->pim_enable) + pim_autorp_rm_ifp(ifp); +#endif + pim_ifp->pim_enable = false; pim_if_membership_clear(ifp); |
