summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-06-14 10:54:41 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-07-24 13:51:39 -0400
commit2aa1ca8418689d078c69e008e65f8d6c25c016fa (patch)
tree628fa45cc99c1ee7f04f5a7267cc634272cf5b24
parent1f9666a1db14989cfbe0b2628a8935f7cb2a2929 (diff)
pimd: When we are initializing a pim socket limit hellos
When we are initializing a pim socket for vrf or loopback interfaces do not schedule a hello to go out at all. I'm currently leaving the check on is a vrf / loopback device on the actual send as that we have several paths to get there. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r--pimd/pim_pim.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c
index 5b9d6effc8..5bfe9c4f1f 100644
--- a/pimd/pim_pim.c
+++ b/pimd/pim_pim.c
@@ -675,9 +675,7 @@ static void hello_resched(struct interface *ifp)
{
struct pim_interface *pim_ifp;
- zassert(ifp);
pim_ifp = ifp->info;
- zassert(pim_ifp);
if (PIM_DEBUG_PIM_HELLO) {
zlog_debug("Rescheduling %d sec hello on interface %s",
@@ -698,7 +696,6 @@ static int on_pim_hello_send(struct thread *t)
struct interface *ifp;
ifp = THREAD_ARG(t);
-
pim_ifp = ifp->info;
/*
@@ -725,9 +722,7 @@ void pim_hello_restart_now(struct interface *ifp)
{
struct pim_interface *pim_ifp;
- zassert(ifp);
pim_ifp = ifp->info;
- zassert(pim_ifp);
/*
* Reset next hello timer
@@ -755,9 +750,13 @@ void pim_hello_restart_triggered(struct interface *ifp)
int triggered_hello_delay_msec;
int random_msec;
- zassert(ifp);
pim_ifp = ifp->info;
- zassert(pim_ifp);
+
+ /*
+ * No need to ever start loopback or vrf device hello's
+ */
+ if (pim_if_is_loopback(pim_ifp->pim, ifp))
+ return;
/*
* There exists situations where we have the a RPF out this