{
ASSERT(c->in_req.hook);
+ rt_refresh_begin(&c->in_req);
rt_request_export(c->table, &c->reload_req);
}
static void
channel_reload_log_state_change(struct rt_export_request *req, u8 state)
{
+ struct channel *c = SKIP_BACK(struct channel, reload_req, req);
+
if (state == TES_READY)
+ {
+ rt_refresh_end(&c->in_req);
rt_stop_export(req, channel_reload_stopped);
+ }
}
static void
if (initial && p->cf->gr_mode)
c->feed_state = BFS_LOADING;
+ if (!initial && C->out_table)
+ {
+ c->feed_out_table = 1;
+ return;
+ }
+
/* It is refeed and both sides support enhanced route refresh */
if (!initial && p->enhanced_refresh)
{
struct bgp_proto *p = (void *) C->proto;
struct bgp_channel *c = (void *) C;
+ if (c->feed_out_table)
+ {
+ c->feed_out_table = 0;
+ return;
+ }
+
/* This should not happen */
if (!p->conn)
return;
u8 feed_state; /* Feed state (TX) for EoR, RR packets, see BFS_* */
u8 load_state; /* Load state (RX) for EoR, RR packets, see BFS_* */
+
+ u8 feed_out_table; /* Refeed into out_table */
};
struct bgp_prefix {