diff options
Diffstat (limited to 'pimd/pim_neighbor.c')
| -rw-r--r-- | pimd/pim_neighbor.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/pimd/pim_neighbor.c b/pimd/pim_neighbor.c index d8a797f980..4d6625bf6f 100644 --- a/pimd/pim_neighbor.c +++ b/pimd/pim_neighbor.c @@ -40,6 +40,7 @@ #include "pim_join.h" #include "pim_jp_agg.h" #include "pim_bfd.h" +#include "pim_register.h" static void dr_election_by_addr(struct interface *ifp) { @@ -141,6 +142,16 @@ int pim_if_dr_election(struct interface *ifp) pim_if_update_join_desired(pim_ifp); pim_if_update_could_assert(ifp); pim_if_update_assert_tracking_desired(ifp); + + if (PIM_I_am_DR(pim_ifp)) + pim_ifp->am_i_dr = true; + else { + if (pim_ifp->am_i_dr == true) { + pim_reg_del_on_couldreg_fail(ifp); + pim_ifp->am_i_dr = false; + } + } + return 1; } |
