summaryrefslogtreecommitdiff
path: root/pimd/pim_iface.c
diff options
context:
space:
mode:
authorDonald Sharp <donaldsharp72@gmail.com>2024-09-24 15:36:09 -0400
committerGitHub <noreply@github.com>2024-09-24 15:36:09 -0400
commitc0ccf381d49c8c0425cd6b47ec6b367043e4b65d (patch)
tree7d16685776da44fa28d6ed1771d5a505edf39ac3 /pimd/pim_iface.c
parent354f73d6152b5e6e17b1c6e2c6b643735db94ca9 (diff)
parentdff1db9ef699a768806d1aa752f0166d33339bc9 (diff)
Merge pull request #16634 from nabahr/autorp
PIM: Implement AutoRP functionality
Diffstat (limited to 'pimd/pim_iface.c')
-rw-r--r--pimd/pim_iface.c15
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);