]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Fix connected data structure not being freed
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 17 Mar 2017 00:07:08 +0000 (20:07 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 17 Mar 2017 00:07:08 +0000 (20:07 -0400)
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_zebra.c

index 3ff0d3818538948d607c636e8d0dd49ffee5c428..727bceff5ba96135adb994da68c12c0c82f807b7 100644 (file)
@@ -338,26 +338,27 @@ static int pim_zebra_if_address_del(int command, struct zclient *client,
     return 0;
   
   p = c->address;
-  if (p->family != AF_INET)
-    return 0;
-  
-  if (PIM_DEBUG_ZEBRA) {
-    char buf[BUFSIZ];
-    prefix2str(p, buf, BUFSIZ);
-    zlog_debug("%s: %s disconnected IP address %s flags %u %s",
-              __PRETTY_FUNCTION__,
-              c->ifp->name, buf, c->flags,
-              CHECK_FLAG(c->flags, ZEBRA_IFA_SECONDARY) ? "secondary" : "primary");
-    
+  if (p->family == AF_INET)
+    {
+        if (PIM_DEBUG_ZEBRA) {
+          char buf[BUFSIZ];
+          prefix2str(p, buf, BUFSIZ);
+          zlog_debug("%s: %s disconnected IP address %s flags %u %s",
+                     __PRETTY_FUNCTION__,
+                     c->ifp->name, buf, c->flags,
+                     CHECK_FLAG(c->flags, ZEBRA_IFA_SECONDARY) ? "secondary" : "primary");
+
 #ifdef PIM_DEBUG_IFADDR_DUMP
-    dump_if_address(c->ifp);
+          dump_if_address(c->ifp);
 #endif
-  }
+        }
 
-  pim_if_addr_del(c, 0);
-  pim_rp_setup();
-  pim_i_am_rp_re_evaluate();
-  
+        pim_if_addr_del(c, 0);
+        pim_rp_setup();
+        pim_i_am_rp_re_evaluate();
+    }
+
+  connected_free (c);
   return 0;
 }