version 1.1.1.1, 2017/08/22 12:33:54
|
version 1.1.1.2, 2021/03/17 19:50:23
|
Line 89 pipe_rt_notify(struct proto *P, rtable *src_table, net
|
Line 89 pipe_rt_notify(struct proto *P, rtable *src_table, net
|
memcpy(&(e->u), &(new->u), sizeof(e->u)); |
memcpy(&(e->u), &(new->u), sizeof(e->u)); |
e->pref = new->pref; |
e->pref = new->pref; |
e->pflags = new->pflags; |
e->pflags = new->pflags; |
|
|
|
#ifdef CONFIG_BGP |
|
/* Hack to cleanup cached value */ |
|
if (e->attrs->src->proto->proto == &proto_bgp) |
|
e->u.bgp.stale = -1; |
|
#endif |
} |
} |
|
|
src = a.src; |
src = a.src; |
Line 230 pipe_reconfigure(struct proto *P, struct proto_config
|
Line 236 pipe_reconfigure(struct proto *P, struct proto_config
|
if ((oc->peer->table != nc->peer->table) || (oc->mode != nc->mode)) |
if ((oc->peer->table != nc->peer->table) || (oc->mode != nc->mode)) |
return 0; |
return 0; |
|
|
|
int import_changed = ! filter_same(new->in_filter, old->in_filter); |
|
int export_changed = ! filter_same(new->out_filter, old->out_filter); |
|
|
/* Update output filters in ahooks */ |
/* Update output filters in ahooks */ |
if (P->main_ahook) |
if (P->main_ahook) |
{ |
{ |
P->main_ahook->out_filter = new->out_filter; |
P->main_ahook->out_filter = new->out_filter; |
P->main_ahook->in_limit = new->in_limit; |
P->main_ahook->in_limit = new->in_limit; |
proto_verify_limits(P->main_ahook); |
proto_verify_limits(P->main_ahook); |
|
|
|
if (export_changed) |
|
P->main_ahook->last_out_filter_change = now; |
} |
} |
|
|
if (p->peer_ahook) |
if (p->peer_ahook) |
Line 243 pipe_reconfigure(struct proto *P, struct proto_config
|
Line 255 pipe_reconfigure(struct proto *P, struct proto_config
|
p->peer_ahook->out_filter = new->in_filter; |
p->peer_ahook->out_filter = new->in_filter; |
p->peer_ahook->in_limit = new->out_limit; |
p->peer_ahook->in_limit = new->out_limit; |
proto_verify_limits(p->peer_ahook); |
proto_verify_limits(p->peer_ahook); |
|
|
|
if (import_changed) |
|
p->peer_ahook->last_out_filter_change = now; |
} |
} |
|
|
if ((P->proto_state != PS_UP) || (proto_reconfig_type == RECONFIG_SOFT)) |
if ((P->proto_state != PS_UP) || (proto_reconfig_type == RECONFIG_SOFT)) |
return 1; |
return 1; |
|
|
if ((new->preference != old->preference) | if (import_changed || export_changed || (new->preference != old->preference)) |
|| ! filter_same(new->in_filter, old->in_filter) | |
|| ! filter_same(new->out_filter, old->out_filter)) | |
proto_request_feeding(P); |
proto_request_feeding(P); |
|
|
return 1; |
return 1; |