ASSERT(c->channel_state == CS_UP);
+ pool *p = rp_newf(c->proto->pool, c->proto->pool->domain, "Channel %s.%s export", c->proto->name, c->name);
+
c->out_req = (struct rt_export_request) {
- .name = mb_sprintf(c->proto->pool, "%s.%s", c->proto->name, c->name),
+ .name = mb_sprintf(p, "%s.%s", c->proto->name, c->name),
.list = proto_work_list(c->proto),
- .pool = c->proto->pool,
+ .pool = p,
.feed_block_size = c->feed_block_size,
- .addr = c->out_subprefix,
- .addr_mode = c->out_subprefix ? TE_ADDR_IN : TE_ADDR_NONE,
+ .prefilter = {
+ .mode = c->out_subprefix ? TE_ADDR_IN : TE_ADDR_NONE,
+ .addr = c->out_subprefix,
+ },
.trace_routes = c->debug | c->proto->debug,
.dump_req = channel_dump_export_req,
.log_state_change = channel_export_log_state_change,
struct rt_export_request {
struct rt_export_hook *hook; /* Table part of the export */
- char *name; /* Network prefilter address */
- const char *name;
- const net_addr *addr; /* Network prefilter address */
++ char *name;
u8 trace_routes;
- u8 addr_mode; /* Network prefilter mode (TE_ADDR_*) */
uint feed_block_size; /* How many routes to feed at once */
+ struct rt_prefilter prefilter;
event_list *list; /* Where to schedule export events */
pool *pool; /* Pool to use for allocations */