Skip to content

Commit

Permalink
*: add zclient_options_sync
Browse files Browse the repository at this point in the history
... and use it instead of fiddling with the `.synchronous` field.

(Make it const while at it.)

Signed-off-by: David Lamparter <[email protected]>
  • Loading branch information
eqvinox committed Nov 23, 2023
1 parent a13d293 commit cc90c54
Show file tree
Hide file tree
Showing 8 changed files with 15 additions and 27 deletions.
5 changes: 1 addition & 4 deletions bgpd/bgp_zebra.c
Original file line number Diff line number Diff line change
Expand Up @@ -3430,9 +3430,6 @@ static void bgp_zebra_capabilities(struct zclient_capabilities *cap)

void bgp_zebra_init(struct event_loop *master, unsigned short instance)
{
struct zclient_options options = zclient_options_default;

options.synchronous = true;
zclient_num_connects = 0;

hook_register_prio(if_real, 0, bgp_ifp_create);
Expand All @@ -3450,7 +3447,7 @@ void bgp_zebra_init(struct event_loop *master, unsigned short instance)
zclient->instance = instance;

/* Initialize special zclient for synchronous message exchanges. */
zclient_sync = zclient_new(master, &options, NULL, 0);
zclient_sync = zclient_new(master, &zclient_options_sync, NULL, 0);
zclient_sync->sock = -1;
zclient_sync->redist_default = ZEBRA_ROUTE_BGP;
zclient_sync->instance = instance;
Expand Down
4 changes: 1 addition & 3 deletions isisd/isis_zebra.c
Original file line number Diff line number Diff line change
Expand Up @@ -1395,9 +1395,7 @@ void isis_zebra_init(struct event_loop *master, int instance)
zclient->zebra_connected = isis_zebra_connected;

/* Initialize special zclient for synchronous message exchanges. */
struct zclient_options options = zclient_options_default;
options.synchronous = true;
zclient_sync = zclient_new(master, &options, NULL, 0);
zclient_sync = zclient_new(master, &zclient_options_sync, NULL, 0);
zclient_sync->sock = -1;
zclient_sync->redist_default = ZEBRA_ROUTE_ISIS;
zclient_sync->instance = instance;
Expand Down
6 changes: 1 addition & 5 deletions ldpd/lde.c
Original file line number Diff line number Diff line change
Expand Up @@ -2135,12 +2135,8 @@ static void zclient_sync_retry(struct event *thread)
*/
static void zclient_sync_init(void)
{
struct zclient_options options = zclient_options_default;

options.synchronous = true;

/* Initialize special zclient for synchronous message exchanges. */
zclient_sync = zclient_new(master, &options, NULL, 0);
zclient_sync = zclient_new(master, &zclient_options_sync, NULL, 0);
zclient_sync->sock = -1;
zclient_sync->redist_default = ZEBRA_ROUTE_LDP;
zclient_sync->session_id = 1; /* Distinguish from main session */
Expand Down
8 changes: 6 additions & 2 deletions lib/zclient.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,14 @@ static void zclient_event(enum zclient_event, struct zclient *);
static void zebra_interface_if_set_value(struct stream *s,
struct interface *ifp);

struct zclient_options zclient_options_default = {
const struct zclient_options zclient_options_default = {
.synchronous = false,
};

const struct zclient_options zclient_options_sync = {
.synchronous = true,
};

struct sockaddr_storage zclient_addr;
socklen_t zclient_addr_len;

Expand All @@ -53,7 +57,7 @@ static int zclient_debug;

/* Allocate zclient structure. */
struct zclient *zclient_new(struct event_loop *master,
struct zclient_options *opt,
const struct zclient_options *opt,
zclient_handler *const *handlers, size_t n_handlers)
{
struct zclient *zclient;
Expand Down
5 changes: 3 additions & 2 deletions lib/zclient.h
Original file line number Diff line number Diff line change
Expand Up @@ -834,7 +834,8 @@ struct zclient_options {
bool synchronous;
};

extern struct zclient_options zclient_options_default;
extern const struct zclient_options zclient_options_default;
extern const struct zclient_options zclient_options_sync;

/* link layer representation for GRE like interfaces
* ip_in is the underlay IP, ip_out is the tunnel dest
Expand Down Expand Up @@ -881,7 +882,7 @@ int zclient_neigh_ip_encode(struct stream *s, uint16_t cmd, union sockunion *in,
extern uint32_t zclient_get_nhg_start(uint32_t proto);

extern struct zclient *zclient_new(struct event_loop *m,
struct zclient_options *opt,
const struct zclient_options *opt,
zclient_handler *const *handlers,
size_t n_handlers);

Expand Down
4 changes: 1 addition & 3 deletions ospfd/ospf_zebra.c
Original file line number Diff line number Diff line change
Expand Up @@ -2189,9 +2189,7 @@ void ospf_zebra_init(struct event_loop *master, unsigned short instance)
zclient->nexthop_update = ospf_zebra_import_check_update;

/* Initialize special zclient for synchronous message exchanges. */
struct zclient_options options = zclient_options_default;
options.synchronous = true;
zclient_sync = zclient_new(master, &options, NULL, 0);
zclient_sync = zclient_new(master, &zclient_options_sync, NULL, 0);
zclient_sync->sock = -1;
zclient_sync->redist_default = ZEBRA_ROUTE_OSPF;
zclient_sync->instance = instance;
Expand Down
5 changes: 1 addition & 4 deletions pathd/path_zebra.c
Original file line number Diff line number Diff line change
Expand Up @@ -320,17 +320,14 @@ static zclient_handler *const path_handlers[] = {
*/
void path_zebra_init(struct event_loop *master)
{
struct zclient_options options = zclient_options_default;
options.synchronous = true;

/* Initialize asynchronous zclient. */
zclient = zclient_new(master, &zclient_options_default, path_handlers,
array_size(path_handlers));
zclient_init(zclient, ZEBRA_ROUTE_SRTE, 0, &pathd_privs);
zclient->zebra_connected = path_zebra_connected;

/* Initialize special zclient for synchronous message exchanges. */
zclient_sync = zclient_new(master, &options, NULL, 0);
zclient_sync = zclient_new(master, &zclient_options_sync, NULL, 0);
zclient_sync->sock = -1;
zclient_sync->redist_default = ZEBRA_ROUTE_SRTE;
zclient_sync->instance = 1;
Expand Down
5 changes: 1 addition & 4 deletions pimd/pim_zlookup.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,10 +122,7 @@ void zclient_lookup_free(void)

void zclient_lookup_new(void)
{
struct zclient_options options = zclient_options_default;
options.synchronous = true;

zlookup = zclient_new(router->master, &options, NULL, 0);
zlookup = zclient_new(router->master, &zclient_options_sync, NULL, 0);
if (!zlookup) {
flog_err(EC_LIB_ZAPI_SOCKET, "%s: zclient_new() failure",
__func__);
Expand Down

0 comments on commit cc90c54

Please sign in to comment.