From 961671c0f51693aff34bf3adf5319b35275a86d3 Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Mon, 1 Oct 2018 15:55:23 +0200 Subject: [PATCH] Lib: Add and use ev_new_init() --- lib/event.h | 9 +++++++++ nest/locks.c | 3 +-- nest/proto.c | 8 ++------ nest/rt-table.c | 4 +--- proto/babel/babel.c | 4 +--- proto/bgp/bgp.c | 9 ++------- proto/ospf/ospf.c | 4 +--- proto/static/static.c | 4 +--- 8 files changed, 18 insertions(+), 27 deletions(-) diff --git a/lib/event.h b/lib/event.h index d5975222..03735c3f 100644 --- a/lib/event.h +++ b/lib/event.h @@ -36,5 +36,14 @@ ev_active(event *e) return e->n.next != NULL; } +static inline event* +ev_new_init(pool *p, void (*hook)(void *), void *data) +{ + event *e = ev_new(p); + e->hook = hook; + e->data = data; + return e; +} + #endif diff --git a/nest/locks.c b/nest/locks.c index 86c9ff14..812a6534 100644 --- a/nest/locks.c +++ b/nest/locks.c @@ -191,6 +191,5 @@ olock_init(void) { DBG("olock: init\n"); init_list(&olock_list); - olock_event = ev_new(&root_pool); - olock_event->hook = olock_run_event; + olock_event = ev_new_init(&root_pool, olock_run_event, NULL); } diff --git a/nest/proto.c b/nest/proto.c index 8a8221a8..7905c9f2 100644 --- a/nest/proto.c +++ b/nest/proto.c @@ -291,9 +291,7 @@ channel_do_start(struct channel *c) add_tail(&c->table->channels, &c->table_node); c->proto->active_channels++; - c->feed_event = ev_new(c->proto->pool); - c->feed_event->data = c; - c->feed_event->hook = channel_feed_loop; + c->feed_event = ev_new_init(c->proto->pool, channel_feed_loop, c); channel_reset_limit(&c->rx_limit); channel_reset_limit(&c->in_limit); @@ -702,9 +700,7 @@ proto_init(struct proto_config *c, node *n) p->vrf = c->vrf; insert_node(&p->n, n); - p->event = ev_new(proto_pool); - p->event->hook = proto_event; - p->event->data = p; + p->event = ev_new_init(proto_pool, proto_event, p); PD(p, "Initializing%s", p->disabled ? " [disabled]" : ""); diff --git a/nest/rt-table.c b/nest/rt-table.c index 036b34c4..4998e292 100644 --- a/nest/rt-table.c +++ b/nest/rt-table.c @@ -1682,9 +1682,7 @@ rt_setup(pool *p, rtable *t, struct rtable_config *cf) fib_init(&t->fib, p, t->addr_type, sizeof(net), OFFSETOF(net, n), 0, NULL); init_list(&t->channels); - t->rt_event = ev_new(p); - t->rt_event->hook = rt_event; - t->rt_event->data = t; + t->rt_event = ev_new_init(p, rt_event, t); t->gc_time = current_time(); } diff --git a/proto/babel/babel.c b/proto/babel/babel.c index afa482bb..12c9a474 100644 --- a/proto/babel/babel.c +++ b/proto/babel/babel.c @@ -1592,9 +1592,7 @@ babel_add_iface(struct babel_proto *p, struct iface *new, struct babel_iface_con ifa->timer = tm_new_init(ifa->pool, babel_iface_timer, ifa, 0, 0); init_list(&ifa->msg_queue); - ifa->send_event = ev_new(ifa->pool); - ifa->send_event->hook = babel_send_queue; - ifa->send_event->data = ifa; + ifa->send_event = ev_new_init(ifa->pool, babel_send_queue, ifa); struct object_lock *lock = olock_new(ifa->pool); lock->type = OBJLOCK_UDP; diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c index d2abcc5b..e7479df7 100644 --- a/proto/bgp/bgp.c +++ b/proto/bgp/bgp.c @@ -977,9 +977,7 @@ bgp_setup_conn(struct bgp_proto *p, struct bgp_conn *conn) conn->hold_timer = tm_new_init(p->p.pool, bgp_hold_timeout, conn, 0, 0); conn->keepalive_timer = tm_new_init(p->p.pool, bgp_keepalive_timeout, conn, 0, 0); - conn->tx_ev = ev_new(p->p.pool); - conn->tx_ev->hook = bgp_kick_tx; - conn->tx_ev->data = conn; + conn->tx_ev = ev_new_init(p->p.pool, bgp_kick_tx, conn); } static void @@ -1402,10 +1400,7 @@ bgp_start(struct proto *P) p->gr_ready = 0; p->gr_active_num = 0; - p->event = ev_new(p->p.pool); - p->event->hook = bgp_decision; - p->event->data = p; - + p->event = ev_new_init(p->p.pool, bgp_decision, p); p->startup_timer = tm_new_init(p->p.pool, bgp_startup_timeout, p, 0, 0); p->gr_timer = tm_new_init(p->p.pool, bgp_graceful_restart_timeout, p, 0, 0); diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c index 327ad0a4..4faad360 100644 --- a/proto/ospf/ospf.c +++ b/proto/ospf/ospf.c @@ -256,9 +256,7 @@ ospf_start(struct proto *P) p->gr = ospf_top_new(p, P->pool); s_init_list(&(p->lsal)); - p->flood_event = ev_new(P->pool); - p->flood_event->hook = ospf_flood_event; - p->flood_event->data = p; + p->flood_event = ev_new_init(P->pool, ospf_flood_event, p); p->log_pkt_tbf = (struct tbf){ .rate = 1, .burst = 5 }; p->log_lsa_tbf = (struct tbf){ .rate = 4, .burst = 20 }; diff --git a/proto/static/static.c b/proto/static/static.c index 40096c16..75a74ad0 100644 --- a/proto/static/static.c +++ b/proto/static/static.c @@ -420,9 +420,7 @@ static_start(struct proto *P) if (p->igp_table_ip6) rt_lock_table(p->igp_table_ip6); - p->event = ev_new(p->p.pool); - p->event->hook = static_announce_marked; - p->event->data = p; + p->event = ev_new_init(p->p.pool, static_announce_marked, p); BUFFER_INIT(p->marked, p->p.pool, 4);