diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/compiler.h | 17 | ||||
| -rw-r--r-- | lib/frr_zmq.c | 32 | ||||
| -rw-r--r-- | lib/prefix.h | 9 |
3 files changed, 26 insertions, 32 deletions
diff --git a/lib/compiler.h b/lib/compiler.h index 86cf347e01..bbfe01b569 100644 --- a/lib/compiler.h +++ b/lib/compiler.h @@ -140,21 +140,6 @@ extern "C" { #define MACRO_REQUIRE_SEMICOLON() \ _Static_assert(1, "please add a semicolon after this macro") -#if CONFDATE < 20210601 -#ifdef ENABLE_BGP_VNC -/* temporarily disabled for transition for LabN CI - * NB: it's not possible to generate a deprecation warning for this, hence - * the shortened transition period (since otherwise new uses of the old syntax - * may creep in without errors) - */ -#undef MACRO_REQUIRE_SEMICOLON -#define MACRO_REQUIRE_SEMICOLON() \ - /* nothing */ -#endif /* ENABLE_BGP_VNC */ -#else /* CONFDATE >= 20210601 */ -CPP_NOTICE("time to remove this CONFDATE block") -#endif - /* variadic macros, use like: * #define V_0() ... * #define V_1(x) ... @@ -331,7 +316,7 @@ CPP_NOTICE("time to remove this CONFDATE block") 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, \ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 -#define PP_NARG_(...) PP_ARG_N(__VA_ARGS__) +#define PP_NARG_(...) PP_ARG_N(__VA_ARGS__) #define PP_NARG(...) PP_NARG_(_, ##__VA_ARGS__, PP_RSEQ_N()) diff --git a/lib/frr_zmq.c b/lib/frr_zmq.c index 05f0fce5fc..ce52848a25 100644 --- a/lib/frr_zmq.c +++ b/lib/frr_zmq.c @@ -135,8 +135,8 @@ static int frrzmq_read_msg(struct thread *t) if (read) frrzmq_check_events(cbp, &cb->write, ZMQ_POLLOUT); - _thread_add_read_write(t->xref, t->master, frrzmq_read_msg, cbp, - cb->fd, &cb->read.thread); + thread_add_read(t->master, frrzmq_read_msg, cbp, + cb->fd, &cb->read.thread); return 0; out_err: @@ -191,11 +191,11 @@ int _frrzmq_thread_add_read(const struct xref_threadsched *xref, if (events & ZMQ_POLLIN) { thread_cancel(&cb->read.thread); - _thread_add_event(xref, master, frrzmq_read_msg, cbp, fd, + thread_add_event(master, frrzmq_read_msg, cbp, fd, &cb->read.thread); } else - _thread_add_read_write(xref, master, frrzmq_read_msg, cbp, fd, - &cb->read.thread); + thread_add_read(master, frrzmq_read_msg, cbp, fd, + &cb->read.thread); return 0; } @@ -241,8 +241,8 @@ static int frrzmq_write_msg(struct thread *t) if (written) frrzmq_check_events(cbp, &cb->read, ZMQ_POLLIN); - _thread_add_read_write(t->xref, t->master, frrzmq_write_msg, cbp, - cb->fd, &cb->write.thread); + thread_add_write(t->master, frrzmq_write_msg, cbp, + cb->fd, &cb->write.thread); return 0; out_err: @@ -297,8 +297,8 @@ int _frrzmq_thread_add_write(const struct xref_threadsched *xref, _thread_add_event(xref, master, frrzmq_write_msg, cbp, fd, &cb->write.thread); } else - _thread_add_read_write(xref, master, frrzmq_write_msg, cbp, fd, - &cb->write.thread); + thread_add_write(master, frrzmq_write_msg, cbp, fd, + &cb->write.thread); return 0; } @@ -310,7 +310,7 @@ void frrzmq_thread_cancel(struct frrzmq_cb **cb, struct cb_core *core) thread_cancel(&core->thread); if ((*cb)->read.cancelled && !(*cb)->read.thread - && (*cb)->write.cancelled && (*cb)->write.thread) + && (*cb)->write.cancelled && !(*cb)->write.thread) XFREE(MTYPE_ZEROMQ_CB, *cb); } @@ -330,12 +330,16 @@ void frrzmq_check_events(struct frrzmq_cb **cbp, struct cb_core *core, len = sizeof(events); if (zmq_getsockopt(cb->zmqsock, ZMQ_EVENTS, &events, &len)) return; - if (events & event && core->thread && !core->cancelled) { + if ((events & event) && core->thread && !core->cancelled) { struct thread_master *tm = core->thread->master; + thread_cancel(&core->thread); - thread_add_event(tm, (event == ZMQ_POLLIN ? frrzmq_read_msg - : frrzmq_write_msg), - cbp, cb->fd, &core->thread); + if (event == ZMQ_POLLIN) + thread_add_event(tm, frrzmq_read_msg, + cbp, cb->fd, &core->thread); + else + thread_add_event(tm, frrzmq_write_msg, + cbp, cb->fd, &core->thread); } } diff --git a/lib/prefix.h b/lib/prefix.h index d7ee1b8e4c..217a23d561 100644 --- a/lib/prefix.h +++ b/lib/prefix.h @@ -315,10 +315,12 @@ struct prefix_sg { #ifndef __cplusplus #define prefixtype(uname, typename, fieldname) \ typename *fieldname; +#define TRANSPARENT_UNION __attribute__((transparent_union)) #else #define prefixtype(uname, typename, fieldname) \ typename *fieldname; \ uname(typename *x) { this->fieldname = x; } +#define TRANSPARENT_UNION #endif union prefixptr { @@ -328,7 +330,7 @@ union prefixptr { prefixtype(prefixptr, struct prefix_evpn, evp) prefixtype(prefixptr, struct prefix_fs, fs) prefixtype(prefixptr, struct prefix_rd, rd) -} __attribute__((transparent_union)); +} TRANSPARENT_UNION; union prefixconstptr { prefixtype(prefixconstptr, const struct prefix, p) @@ -337,7 +339,10 @@ union prefixconstptr { prefixtype(prefixconstptr, const struct prefix_evpn, evp) prefixtype(prefixconstptr, const struct prefix_fs, fs) prefixtype(prefixconstptr, const struct prefix_rd, rd) -} __attribute__((transparent_union)); +} TRANSPARENT_UNION; + +#undef prefixtype +#undef TRANSPARENT_UNION #ifndef INET_ADDRSTRLEN #define INET_ADDRSTRLEN 16 |
