diff options
author | Feng Lu <lu.feng@6wind.com> | 2015-05-22 11:39:58 +0200 |
---|---|---|
committer | David Lamparter <equinox@opensourcerouting.org> | 2015-06-02 06:58:12 +0200 |
commit | 126215c1238eb42cc92d23aefbe1fac3b204438f (patch) | |
tree | 22910b50f39003e297efc6236711581cbf3b2ada | |
parent | 2fc97f6335dd5d7df2c285b363c6ef56bb98dcf8 (diff) | |
download | quagga-126215c1238eb42cc92d23aefbe1fac3b204438f.tar.bz2 quagga-126215c1238eb42cc92d23aefbe1fac3b204438f.tar.xz |
*: call if_init()/if_terminate() from vrf_init()/vrf_terminate()
Later, an interface will belong to a specific VRF, and the interface
initialization will be a part of the VRF initialization. So now call
if_init() from vrf_init(), and if_terminate() from vrf_terminate().
Daemons have the according changes:
- if if_init() was called or "iflist" was initialized, now call
vrf_init() instead;
- if if_terminate() was called or "iflist" was destroyed, now call
vrf_terminate() instead.
Signed-off-by: Feng Lu <lu.feng@6wind.com>
Reviewed-by: Alain Ritoux <alain.ritoux@6wind.com>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: Vincent JARDIN <vincent.jardin@6wind.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
-rw-r--r-- | bgpd/bgp_main.c | 8 | ||||
-rw-r--r-- | bgpd/bgp_zebra.c | 3 | ||||
-rw-r--r-- | isisd/isis_circuit.c | 1 | ||||
-rw-r--r-- | isisd/isis_main.c | 2 | ||||
-rw-r--r-- | lib/vrf.c | 5 | ||||
-rw-r--r-- | ospf6d/ospf6_main.c | 5 | ||||
-rw-r--r-- | ospfd/ospf_interface.c | 1 | ||||
-rw-r--r-- | ospfd/ospf_main.c | 2 | ||||
-rw-r--r-- | pimd/pim_iface.c | 5 | ||||
-rw-r--r-- | pimd/pim_iface.h | 2 | ||||
-rw-r--r-- | pimd/pim_main.c | 2 | ||||
-rw-r--r-- | pimd/pimd.c | 3 | ||||
-rw-r--r-- | ripd/rip_interface.c | 1 | ||||
-rw-r--r-- | ripd/rip_main.c | 2 | ||||
-rw-r--r-- | ripngd/ripng_interface.c | 2 | ||||
-rw-r--r-- | ripngd/ripng_main.c | 2 | ||||
-rw-r--r-- | zebra/interface.c | 1 | ||||
-rw-r--r-- | zebra/test_main.c | 1 |
18 files changed, 25 insertions, 23 deletions
diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c index 5026b5ea..ad4de798 100644 --- a/bgpd/bgp_main.c +++ b/bgpd/bgp_main.c @@ -36,6 +36,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "filter.h" #include "plist.h" #include "stream.h" +#include "vrf.h" #include "bgpd/bgpd.h" #include "bgpd/bgp_attr.h" @@ -248,17 +249,14 @@ bgp_exit (int status) /* reverse bgp_zebra_init/if_init */ if (retain_mode) if_add_hook (IF_DELETE_HOOK, NULL); - for (ALL_LIST_ELEMENTS (iflist, node, nnode, ifp)) + for (ALL_LIST_ELEMENTS_RO (iflist, node, ifp)) { struct listnode *c_node, *c_nnode; struct connected *c; for (ALL_LIST_ELEMENTS (ifp->connected, c_node, c_nnode, c)) bgp_connected_delete (c); - - if_delete (ifp); } - list_free (iflist); /* reverse bgp_attr_init */ bgp_attr_finish (); @@ -293,6 +291,7 @@ bgp_exit (int status) /* reverse community_list_init */ community_list_terminate (bgp_clist); + vrf_terminate (); cmd_terminate (); vty_terminate (); if (zclient) @@ -427,6 +426,7 @@ main (int argc, char **argv) cmd_init (1); vty_init (master); memory_init (); + vrf_init (); /* BGP related initialization. */ bgp_init (); diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c index 8ae7f465..13f71de9 100644 --- a/bgpd/bgp_zebra.c +++ b/bgpd/bgp_zebra.c @@ -1096,8 +1096,5 @@ bgp_zebra_init (void) zclient->ipv6_route_delete = zebra_read_ipv6; #endif /* HAVE_IPV6 */ - /* Interface related init. */ - if_init (); - bgp_nexthop_buf = stream_new(BGP_NEXTHOP_BUF_SIZE); } diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index fdff819c..2ef43ccf 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -2739,7 +2739,6 @@ void isis_circuit_init () { /* Initialize Zebra interface data structure */ - if_init (); if_add_hook (IF_NEW_HOOK, isis_if_new_hook); if_add_hook (IF_DELETE_HOOK, isis_if_delete_hook); diff --git a/isisd/isis_main.c b/isisd/isis_main.c index 283b7eaa..60ecb754 100644 --- a/isisd/isis_main.c +++ b/isisd/isis_main.c @@ -35,6 +35,7 @@ #include "sigevent.h" #include "filter.h" #include "zclient.h" +#include "vrf.h" #include "isisd/dict.h" #include "include-netbsd/iso.h" @@ -330,6 +331,7 @@ main (int argc, char **argv, char **envp) vty_init (master); memory_init (); access_list_init(); + vrf_init (); isis_init (); isis_circuit_init (); isis_spf_cmds_init (); @@ -22,6 +22,7 @@ #include <zebra.h> +#include "if.h" #include "vrf.h" #include "prefix.h" #include "table.h" @@ -249,6 +250,8 @@ vrf_init (void) /* Set the default VRF name. */ default_vrf->name = XSTRDUP (MTYPE_VRF_NAME, "Default-IP-Routing-Table"); + + if_init (); } /* Terminate VRF module. */ @@ -264,5 +267,7 @@ vrf_terminate (void) route_table_finish (vrf_table); vrf_table = NULL; + + if_terminate (); } diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c index 4f6d9e51..1afe84a7 100644 --- a/ospf6d/ospf6_main.c +++ b/ospf6d/ospf6_main.c @@ -35,6 +35,7 @@ #include "privs.h" #include "sigevent.h" #include "zclient.h" +#include "vrf.h" #include "ospf6d.h" #include "ospf6_top.h" @@ -150,7 +151,7 @@ ospf6_exit (int status) ospf6_asbr_terminate (); ospf6_lsa_terminate (); - if_terminate (); + vrf_terminate (); vty_terminate (); cmd_terminate (); @@ -318,7 +319,7 @@ main (int argc, char *argv[], char *envp[]) cmd_init (1); vty_init (master); memory_init (); - if_init (); + vrf_init (); access_list_init (); prefix_list_init (); diff --git a/ospfd/ospf_interface.c b/ospfd/ospf_interface.c index 0f02cc82..07c3fe35 100644 --- a/ospfd/ospf_interface.c +++ b/ospfd/ospf_interface.c @@ -1254,7 +1254,6 @@ void ospf_if_init () { /* Initialize Zebra interface data structure. */ - if_init (); om->iflist = iflist; if_add_hook (IF_NEW_HOOK, ospf_if_new_hook); if_add_hook (IF_DELETE_HOOK, ospf_if_delete_hook); diff --git a/ospfd/ospf_main.c b/ospfd/ospf_main.c index 96dfd579..826fc983 100644 --- a/ospfd/ospf_main.c +++ b/ospfd/ospf_main.c @@ -39,6 +39,7 @@ #include "privs.h" #include "sigevent.h" #include "zclient.h" +#include "vrf.h" #include "ospfd/ospfd.h" #include "ospfd/ospf_interface.h" @@ -290,6 +291,7 @@ main (int argc, char **argv) debug_init (); vty_init (master); memory_init (); + vrf_init (); access_list_init (); prefix_list_init (); diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c index ecf9ef6b..dc3e9a2b 100644 --- a/pimd/pim_iface.c +++ b/pimd/pim_iface.c @@ -43,11 +43,6 @@ static void pim_if_igmp_join_del_all(struct interface *ifp); -void pim_if_init() -{ - if_init(); -} - static void *if_list_clean(struct pim_interface *pim_ifp) { if (pim_ifp->igmp_join_list) { diff --git a/pimd/pim_iface.h b/pimd/pim_iface.h index 4b06b9ff..8806fdd9 100644 --- a/pimd/pim_iface.h +++ b/pimd/pim_iface.h @@ -108,8 +108,6 @@ struct pim_interface { ((pim_ifp)->pim_hello_period * 7 / 2) : \ ((pim_ifp)->pim_default_holdtime)) -void pim_if_init(void); - struct pim_interface *pim_if_new(struct interface *ifp, int igmp, int pim); void pim_if_delete(struct interface *ifp); void pim_if_addr_add(struct connected *ifc); diff --git a/pimd/pim_main.c b/pimd/pim_main.c index b57f8811..63dd6364 100644 --- a/pimd/pim_main.c +++ b/pimd/pim_main.c @@ -31,6 +31,7 @@ #include <signal.h> #include "memory.h" +#include "vrf.h" #include "filter.h" #include "vty.h" #include "sigevent.h" @@ -203,6 +204,7 @@ int main(int argc, char** argv, char** envp) { cmd_init(1); vty_init(master); memory_init(); + vrf_init(); access_list_init(); pim_init(); diff --git a/pimd/pimd.c b/pimd/pimd.c index 855defcc..78c3ff5d 100644 --- a/pimd/pimd.c +++ b/pimd/pimd.c @@ -24,6 +24,7 @@ #include "log.h" #include "memory.h" +#include "vrf.h" #include "pimd.h" #include "pim_cmd.h" @@ -130,12 +131,12 @@ void pim_init() qpim_infinite_assert_metric.route_metric = PIM_ASSERT_ROUTE_METRIC_MAX; qpim_infinite_assert_metric.ip_address = qpim_inaddr_any; - pim_if_init(); pim_cmd_init(); pim_ssmpingd_init(); } void pim_terminate() { + vrf_terminate(); pim_free(); } diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c index 35685a75..f26ef48a 100644 --- a/ripd/rip_interface.c +++ b/ripd/rip_interface.c @@ -2055,7 +2055,6 @@ void rip_if_init (void) { /* Default initial size of interface vector. */ - if_init(); if_add_hook (IF_NEW_HOOK, rip_interface_new_hook); if_add_hook (IF_DELETE_HOOK, rip_interface_delete_hook); diff --git a/ripd/rip_main.c b/ripd/rip_main.c index e81e61b8..95b1f6d4 100644 --- a/ripd/rip_main.c +++ b/ripd/rip_main.c @@ -33,6 +33,7 @@ #include "privs.h" #include "sigevent.h" #include "zclient.h" +#include "vrf.h" #include "ripd/ripd.h" @@ -280,6 +281,7 @@ main (int argc, char **argv) vty_init (master); memory_init (); keychain_init (); + vrf_init (); /* RIP related initialization. */ rip_init (); diff --git a/ripngd/ripng_interface.c b/ripngd/ripng_interface.c index 35884634..c7865d1e 100644 --- a/ripngd/ripng_interface.c +++ b/ripngd/ripng_interface.c @@ -35,6 +35,7 @@ #include "table.h" #include "thread.h" #include "privs.h" +#include "vrf.h" #include "ripngd/ripngd.h" #include "ripngd/ripng_debug.h" @@ -1177,7 +1178,6 @@ void ripng_if_init () { /* Interface initialize. */ - iflist = list_new (); if_add_hook (IF_NEW_HOOK, ripng_if_new_hook); if_add_hook (IF_DELETE_HOOK, ripng_if_delete_hook); diff --git a/ripngd/ripng_main.c b/ripngd/ripng_main.c index acc980de..d8f22411 100644 --- a/ripngd/ripng_main.c +++ b/ripngd/ripng_main.c @@ -34,6 +34,7 @@ #include "if.h" #include "privs.h" #include "sigevent.h" +#include "vrf.h" #include "ripngd/ripngd.h" @@ -276,6 +277,7 @@ main (int argc, char **argv) cmd_init (1); vty_init (master); memory_init (); + vrf_init (); /* RIPngd inits. */ ripng_init (); diff --git a/zebra/interface.c b/zebra/interface.c index 49d40ba3..3063dad8 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -1634,7 +1634,6 @@ void zebra_if_init (void) { /* Initialize interface and new hook. */ - if_init (); if_add_hook (IF_NEW_HOOK, if_zebra_new_hook); if_add_hook (IF_DELETE_HOOK, if_zebra_delete_hook); diff --git a/zebra/test_main.c b/zebra/test_main.c index a92cd618..aad616f7 100644 --- a/zebra/test_main.c +++ b/zebra/test_main.c @@ -308,7 +308,6 @@ main (int argc, char **argv) cmd_init (1); vty_init (zebrad.master); memory_init (); - if_init(); zebra_debug_init (); zebra_if_init (); test_cmd_init (); |