summaryrefslogtreecommitdiff
path: root/pimd/pim_neighbor.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_neighbor.c')
-rw-r--r--pimd/pim_neighbor.c11
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;
}