]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: Add a function to delete all interfaces
authorTom Goff <thomas.goff@boeing.com>
Wed, 10 Nov 2010 21:00:54 +0000 (13:00 -0800)
committerPaul Jakma <paul@quagga.net>
Mon, 21 Mar 2011 13:30:54 +0000 (13:30 +0000)
if.c: (if_terminate) This adds a cleanup function that can be called
    when a daemon exits, similar to vty_terminate().

lib/if.c
lib/if.h

index e31071164cbceba91e635348dea12b7488763422..b61bdbff19e8afa173c43517fbb2afe9649b2e86 100644 (file)
--- a/lib/if.c
+++ b/lib/if.c
@@ -878,3 +878,21 @@ if_init (void)
 
   memset (&if_master, 0, sizeof if_master);
 }
+
+void
+if_terminate (void)
+{
+  for (;;)
+    {
+      struct interface *ifp;
+
+      ifp = listnode_head (iflist);
+      if (ifp == NULL)
+       break;
+
+      if_delete (ifp);
+    }
+
+  list_delete (iflist);
+  iflist = NULL;
+}
index c99ab81bc4a864335cac1911befabee84d7c7f92..841ce51ec597c6b6107330dee5c59599c2462c11 100644 (file)
--- a/lib/if.h
+++ b/lib/if.h
@@ -266,6 +266,7 @@ extern int if_is_pointopoint (struct interface *);
 extern int if_is_multicast (struct interface *);
 extern void if_add_hook (int, int (*)(struct interface *));
 extern void if_init (void);
+extern void if_terminate (void);
 extern void if_dump_all (void);
 extern const char *if_flag_dump(unsigned long);