diff options
-rw-r--r-- | babeld/babel_main.c | 2 | ||||
-rw-r--r-- | babeld/babel_zebra.c | 7 | ||||
-rw-r--r-- | babeld/babel_zebra.h | 2 | ||||
-rw-r--r-- | bgpd/bgp_zebra.c | 4 | ||||
-rw-r--r-- | bgpd/bgp_zebra.h | 2 | ||||
-rw-r--r-- | bgpd/bgpd.c | 2 | ||||
-rw-r--r-- | isisd/isis_main.c | 2 | ||||
-rw-r--r-- | isisd/isis_zebra.c | 4 | ||||
-rw-r--r-- | isisd/isis_zebra.h | 2 | ||||
-rw-r--r-- | lib/zclient.c | 15 | ||||
-rw-r--r-- | lib/zclient.h | 5 | ||||
-rw-r--r-- | ospf6d/ospf6_zebra.c | 4 | ||||
-rw-r--r-- | ospf6d/ospf6_zebra.h | 2 | ||||
-rw-r--r-- | ospf6d/ospf6d.c | 2 | ||||
-rw-r--r-- | ospfd/ospf_main.c | 2 | ||||
-rw-r--r-- | ospfd/ospf_zebra.c | 4 | ||||
-rw-r--r-- | ospfd/ospf_zebra.h | 2 | ||||
-rw-r--r-- | ripd/rip_main.c | 2 | ||||
-rw-r--r-- | ripd/rip_zebra.c | 4 | ||||
-rw-r--r-- | ripd/ripd.h | 2 | ||||
-rw-r--r-- | ripngd/ripng_main.c | 2 | ||||
-rw-r--r-- | ripngd/ripng_zebra.c | 4 | ||||
-rw-r--r-- | ripngd/ripngd.h | 2 | ||||
-rw-r--r-- | tests/bgp_mpath_test.c | 2 | ||||
-rw-r--r-- | zebra/client_main.c | 4 |
25 files changed, 43 insertions, 42 deletions
diff --git a/babeld/babel_main.c b/babeld/babel_main.c index 0b3e549f3..ff9d2ad80 100644 --- a/babeld/babel_main.c +++ b/babeld/babel_main.c @@ -275,7 +275,7 @@ babel_init(int argc, char **argv) babeld_quagga_init(); /* init zebra client's structure and it's commands */ /* this replace kernel_setup && kernel_setup_socket */ - babelz_zebra_init (); + babelz_zebra_init(master); /* Get zebra configuration file. */ zlog_set_level (NULL, ZLOG_DEST_STDOUT, ZLOG_DISABLED); diff --git a/babeld/babel_zebra.c b/babeld/babel_zebra.c index c7236d320..e107cca10 100644 --- a/babeld/babel_zebra.c +++ b/babeld/babel_zebra.c @@ -48,9 +48,6 @@ THE SOFTWARE. #include "xroute.h" #include "util.h" -void babelz_zebra_init(void); - - /* we must use a pointer because of zclient.c's functions (new, free). */ struct zclient *zclient; static int zebra_config_write (struct vty *vty); @@ -341,9 +338,9 @@ debug_babel_config_write (struct vty * vty) #endif /* NO_DEBUG */ } -void babelz_zebra_init(void) +void babelz_zebra_init (struct thread_master *master) { - zclient = zclient_new(); + zclient = zclient_new(master); zclient_init(zclient, ZEBRA_ROUTE_BABEL, 0); zclient->interface_add = babel_interface_add; diff --git a/babeld/babel_zebra.h b/babeld/babel_zebra.h index 99601aa7c..9504faf4f 100644 --- a/babeld/babel_zebra.h +++ b/babeld/babel_zebra.h @@ -43,7 +43,7 @@ THE SOFTWARE. extern struct zclient *zclient; -void babelz_zebra_init(void); +void babelz_zebra_init(struct thread_master *); void babel_zebra_close_connexion(void); extern int debug_babel_config_write (struct vty *); diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c index 120be0a4e..ee6b32244 100644 --- a/bgpd/bgp_zebra.c +++ b/bgpd/bgp_zebra.c @@ -1682,10 +1682,10 @@ bgp_zclient_reset (void) } void -bgp_zebra_init (void) +bgp_zebra_init (struct thread_master *master) { /* Set default values. */ - zclient = zclient_new (); + zclient = zclient_new (master); zclient_init (zclient, ZEBRA_ROUTE_BGP, 0); zclient->router_id_update = bgp_router_id_update; zclient->interface_add = bgp_interface_add; diff --git a/bgpd/bgp_zebra.h b/bgpd/bgp_zebra.h index 93f8f229f..81bd0fb42 100644 --- a/bgpd/bgp_zebra.h +++ b/bgpd/bgp_zebra.h @@ -27,7 +27,7 @@ Boston, MA 02111-1307, USA. */ extern struct stream *bgp_nexthop_buf; extern struct stream *bgp_ifindices_buf; -extern void bgp_zebra_init (void); +extern void bgp_zebra_init(struct thread_master *master); extern int bgp_if_update_all (void); extern int bgp_config_write_maxpaths (struct vty *, struct bgp *, afi_t, safi_t, int *); diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 8340de54b..0136189ec 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -6889,7 +6889,7 @@ bgp_init (void) bgp_scan_init (); /* Init zebra. */ - bgp_zebra_init (); + bgp_zebra_init(master); /* BGP VTY commands installation. */ bgp_vty_init (); diff --git a/isisd/isis_main.c b/isisd/isis_main.c index f87314859..fa6552e64 100644 --- a/isisd/isis_main.c +++ b/isisd/isis_main.c @@ -337,7 +337,7 @@ main (int argc, char **argv, char **envp) /* create the global 'isis' instance */ isis_new (1); - isis_zebra_init (); + isis_zebra_init(master); /* parse config file */ /* this is needed three times! because we have interfaces before the areas */ diff --git a/isisd/isis_zebra.c b/isisd/isis_zebra.c index 5522b378e..f4179e50e 100644 --- a/isisd/isis_zebra.c +++ b/isisd/isis_zebra.c @@ -593,9 +593,9 @@ isis_redistribute_default_set (int routetype, int metric_type, #endif /* 0 */ void -isis_zebra_init () +isis_zebra_init (struct thread_master *master) { - zclient = zclient_new (); + zclient = zclient_new(master); zclient_init (zclient, ZEBRA_ROUTE_ISIS, 0); zclient->router_id_update = isis_router_id_update_zebra; zclient->interface_add = isis_zebra_if_add; diff --git a/isisd/isis_zebra.h b/isisd/isis_zebra.h index 889cd9b62..cf6a738a1 100644 --- a/isisd/isis_zebra.h +++ b/isisd/isis_zebra.h @@ -24,7 +24,7 @@ extern struct zclient *zclient; -void isis_zebra_init (void); +void isis_zebra_init(struct thread_master *); void isis_zebra_route_update (struct prefix *prefix, struct isis_route_info *route_info); int isis_distribute_list_update (int routetype); diff --git a/lib/zclient.c b/lib/zclient.c index 35b18cb95..e071228cc 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -39,8 +39,6 @@ enum event {ZCLIENT_SCHEDULE, ZCLIENT_READ, ZCLIENT_CONNECT}; /* Prototype for event manager. */ static void zclient_event (enum event, struct zclient *); -extern struct thread_master *master; - char *zclient_serv_path = NULL; /* This file local debug flag. */ @@ -48,7 +46,7 @@ int zclient_debug = 0; /* Allocate zclient structure. */ struct zclient * -zclient_new () +zclient_new (struct thread_master *master) { struct zclient *zclient; zclient = XCALLOC (MTYPE_ZCLIENT, sizeof (struct zclient)); @@ -56,6 +54,7 @@ zclient_new () zclient->ibuf = stream_new (ZEBRA_MAX_PACKET_SIZ); zclient->obuf = stream_new (ZEBRA_MAX_PACKET_SIZ); zclient->wb = buffer_new(0); + zclient->master = master; return zclient; } @@ -289,7 +288,7 @@ zclient_flush_data(struct thread *thread) return zclient_failed(zclient); break; case BUFFER_PENDING: - zclient->t_write = thread_add_write(master, zclient_flush_data, + zclient->t_write = thread_add_write(zclient->master, zclient_flush_data, zclient, zclient->sock); break; case BUFFER_EMPTY: @@ -315,7 +314,7 @@ zclient_send_message(struct zclient *zclient) THREAD_OFF(zclient->t_write); break; case BUFFER_PENDING: - THREAD_WRITE_ON(master, zclient->t_write, + THREAD_WRITE_ON(zclient->master, zclient->t_write, zclient_flush_data, zclient, zclient->sock); break; } @@ -1327,7 +1326,7 @@ zclient_event (enum event event, struct zclient *zclient) case ZCLIENT_SCHEDULE: if (! zclient->t_connect) zclient->t_connect = - thread_add_event (master, zclient_connect, zclient, 0); + thread_add_event (zclient->master, zclient_connect, zclient, 0); break; case ZCLIENT_CONNECT: if (zclient->fail >= 10) @@ -1337,12 +1336,12 @@ zclient_event (enum event event, struct zclient *zclient) zclient->fail < 3 ? 10 : 60); if (! zclient->t_connect) zclient->t_connect = - thread_add_timer (master, zclient_connect, zclient, + thread_add_timer (zclient->master, zclient_connect, zclient, zclient->fail < 3 ? 10 : 60); break; case ZCLIENT_READ: zclient->t_read = - thread_add_read (master, zclient_read, zclient, zclient->sock); + thread_add_read (zclient->master, zclient_read, zclient, zclient->sock); break; } } diff --git a/lib/zclient.h b/lib/zclient.h index 6ed4fede4..1fbb80da9 100644 --- a/lib/zclient.h +++ b/lib/zclient.h @@ -43,6 +43,9 @@ struct redist_proto /* Structure for the zebra client. */ struct zclient { + /* The thread master we schedule ourselves on */ + struct thread_master *master; + /* Socket to zebra daemon. */ int sock; @@ -143,7 +146,7 @@ struct zapi_ipv4 }; /* Prototypes of zebra client service functions. */ -extern struct zclient *zclient_new (void); +extern struct zclient *zclient_new (struct thread_master *); extern void zclient_init (struct zclient *, int, u_short); extern int zclient_start (struct zclient *); extern void zclient_stop (struct zclient *); diff --git a/ospf6d/ospf6_zebra.c b/ospf6d/ospf6_zebra.c index f77ebd7f1..a28571493 100644 --- a/ospf6d/ospf6_zebra.c +++ b/ospf6d/ospf6_zebra.c @@ -635,10 +635,10 @@ DEFUN (no_redistribute_ospf6, } void -ospf6_zebra_init (void) +ospf6_zebra_init (struct thread_master *master) { /* Allocate zebra structure. */ - zclient = zclient_new (); + zclient = zclient_new(master); zclient_init (zclient, ZEBRA_ROUTE_OSPF6, 0); zclient->router_id_update = ospf6_router_id_update_zebra; zclient->interface_add = ospf6_zebra_if_add; diff --git a/ospf6d/ospf6_zebra.h b/ospf6d/ospf6_zebra.h index c2e92b67f..972b44d4a 100644 --- a/ospf6d/ospf6_zebra.h +++ b/ospf6d/ospf6_zebra.h @@ -43,7 +43,7 @@ extern void ospf6_zebra_route_update_remove (struct ospf6_route *request); extern void ospf6_zebra_redistribute (int); extern void ospf6_zebra_no_redistribute (int); #define ospf6_zebra_is_redistribute(type) (zclient->redist[AFI_IP6][type].enabled) -extern void ospf6_zebra_init (void); +extern void ospf6_zebra_init (struct thread_master *); extern void ospf6_zebra_add_discard (struct ospf6_route *request); extern void ospf6_zebra_delete_discard (struct ospf6_route *request); diff --git a/ospf6d/ospf6d.c b/ospf6d/ospf6d.c index 98d4e1787..a60c5b082 100644 --- a/ospf6d/ospf6d.c +++ b/ospf6d/ospf6d.c @@ -1769,7 +1769,7 @@ ospf6_init (void) ospf6_area_init (); ospf6_interface_init (); ospf6_neighbor_init (); - ospf6_zebra_init (); + ospf6_zebra_init(master); ospf6_lsa_init (); ospf6_spf_init (); diff --git a/ospfd/ospf_main.c b/ospfd/ospf_main.c index 77490b310..e1f5a9a9b 100644 --- a/ospfd/ospf_main.c +++ b/ospfd/ospf_main.c @@ -306,7 +306,7 @@ main (int argc, char **argv) /* OSPFd inits. */ ospf_if_init (); - ospf_zebra_init (instance); + ospf_zebra_init(master, instance); /* OSPF vty inits. */ ospf_vty_init (); diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c index 2bc46ca87..fff38a34a 100644 --- a/ospfd/ospf_zebra.c +++ b/ospfd/ospf_zebra.c @@ -1530,10 +1530,10 @@ ospf_distance_apply (struct prefix_ipv4 *p, struct ospf_route *or) } void -ospf_zebra_init (u_short instance) +ospf_zebra_init (struct thread_master *master, u_short instance) { /* Allocate zebra structure. */ - zclient = zclient_new (); + zclient = zclient_new(master); zclient_init (zclient, ZEBRA_ROUTE_OSPF, instance); zclient->router_id_update = ospf_router_id_update_zebra; zclient->interface_add = ospf_interface_add; diff --git a/ospfd/ospf_zebra.h b/ospfd/ospf_zebra.h index 1cebb3d6d..7cfae417e 100644 --- a/ospfd/ospf_zebra.h +++ b/ospfd/ospf_zebra.h @@ -79,7 +79,7 @@ extern int ospf_distance_set (struct vty *, struct ospf *, const char *, const char *, const char *); extern int ospf_distance_unset (struct vty *, struct ospf *, const char *, const char *, const char *); -extern void ospf_zebra_init (u_short); +extern void ospf_zebra_init(struct thread_master *, u_short); #endif /* _ZEBRA_OSPF_ZEBRA_H */ diff --git a/ripd/rip_main.c b/ripd/rip_main.c index dbb9b46fe..0db563484 100644 --- a/ripd/rip_main.c +++ b/ripd/rip_main.c @@ -284,7 +284,7 @@ main (int argc, char **argv) /* RIP related initialization. */ rip_init (); rip_if_init (); - rip_zclient_init (); + rip_zclient_init(master); rip_peer_init (); /* Get configuration file. */ diff --git a/ripd/rip_zebra.c b/ripd/rip_zebra.c index 22514d5fe..e0092f542 100644 --- a/ripd/rip_zebra.c +++ b/ripd/rip_zebra.c @@ -670,10 +670,10 @@ static struct cmd_node zebra_node = }; void -rip_zclient_init () +rip_zclient_init (struct thread_master *master) { /* Set default value to the zebra client structure. */ - zclient = zclient_new (); + zclient = zclient_new(master); zclient_init (zclient, ZEBRA_ROUTE_RIP, 0); zclient->interface_add = rip_interface_add; zclient->interface_delete = rip_interface_delete; diff --git a/ripd/ripd.h b/ripd/ripd.h index 45b07b9cb..fe1345c6f 100644 --- a/ripd/ripd.h +++ b/ripd/ripd.h @@ -386,7 +386,7 @@ extern void rip_if_down_all (void); extern void rip_route_map_init (void); extern void rip_route_map_reset (void); extern void rip_snmp_init (void); -extern void rip_zclient_init (void); +extern void rip_zclient_init(struct thread_master *); extern void rip_zclient_start (void); extern void rip_zclient_reset (void); extern void rip_offset_init (void); diff --git a/ripngd/ripng_main.c b/ripngd/ripng_main.c index 522c48272..01590d96d 100644 --- a/ripngd/ripng_main.c +++ b/ripngd/ripng_main.c @@ -279,7 +279,7 @@ main (int argc, char **argv) /* RIPngd inits. */ ripng_init (); - zebra_init (); + zebra_init(master); ripng_peer_init (); /* Get configuration file. */ diff --git a/ripngd/ripng_zebra.c b/ripngd/ripng_zebra.c index 09dd3390f..278ca7671 100644 --- a/ripngd/ripng_zebra.c +++ b/ripngd/ripng_zebra.c @@ -502,10 +502,10 @@ static struct cmd_node zebra_node = /* Initialize zebra structure and it's commands. */ void -zebra_init () +zebra_init (struct thread_master *master) { /* Allocate zebra structure. */ - zclient = zclient_new (); + zclient = zclient_new(master); zclient_init (zclient, ZEBRA_ROUTE_RIPNG, 0); zclient->interface_up = ripng_interface_up; diff --git a/ripngd/ripngd.h b/ripngd/ripngd.h index ab06d81bf..884f3ed9b 100644 --- a/ripngd/ripngd.h +++ b/ripngd/ripngd.h @@ -355,7 +355,7 @@ extern void ripng_route_map_init (void); extern void ripng_route_map_reset (void); extern void ripng_terminate (void); /* zclient_init() is done by ripng_zebra.c:zebra_init() */ -extern void zebra_init (void); +extern void zebra_init(struct thread_master *); extern void ripng_zclient_start (void); extern void ripng_zclient_reset (void); extern void ripng_offset_init (void); diff --git a/tests/bgp_mpath_test.c b/tests/bgp_mpath_test.c index aa20ae406..7053ad764 100644 --- a/tests/bgp_mpath_test.c +++ b/tests/bgp_mpath_test.c @@ -377,7 +377,7 @@ static int global_test_init (void) { master = thread_master_create (); - zclient = zclient_new (); + zclient = zclient_new(master); bgp_master_init (); bgp_option_set (BGP_OPT_NO_LISTEN); diff --git a/zebra/client_main.c b/zebra/client_main.c index 8b95907bc..cc69ef761 100644 --- a/zebra/client_main.c +++ b/zebra/client_main.c @@ -192,13 +192,15 @@ zebra_sim (FILE *fp) int main (int argc, char **argv) { + struct thread_master *master; FILE *fp; if (argc == 1) usage_exit (); + master = thread_master_create(); /* Establish connection to zebra. */ - zclient = zclient_new (); + zclient = zclient_new(master); zclient->enable = 1; #ifdef HAVE_TCP_ZEBRA zclient->sock = zclient_socket (); |