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
{
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);
}
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);
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]" : "");
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();
}
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;
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
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);
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 };
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);