BGP: Fix reconfiguration with import table
Change of some options requires route refresh, but when import table is active, channel reload is done from it instead of doing full route refresh. So in this case we request it internally.
This commit is contained in:
parent
eeb2c61653
commit
6c9cda6f92
1 changed files with 7 additions and 0 deletions
|
@ -2073,6 +2073,7 @@ bgp_reconfigure(struct proto *P, struct proto_config *CF)
|
||||||
static int
|
static int
|
||||||
bgp_channel_reconfigure(struct channel *C, struct channel_config *CC, int *import_changed, int *export_changed)
|
bgp_channel_reconfigure(struct channel *C, struct channel_config *CC, int *import_changed, int *export_changed)
|
||||||
{
|
{
|
||||||
|
struct bgp_proto *p = (void *) C->proto;
|
||||||
struct bgp_channel *c = (void *) C;
|
struct bgp_channel *c = (void *) C;
|
||||||
struct bgp_channel_config *new = (void *) CC;
|
struct bgp_channel_config *new = (void *) CC;
|
||||||
struct bgp_channel_config *old = c->cf;
|
struct bgp_channel_config *old = c->cf;
|
||||||
|
@ -2095,7 +2096,13 @@ bgp_channel_reconfigure(struct channel *C, struct channel_config *CC, int *impor
|
||||||
if ((new->gw_mode != old->gw_mode) ||
|
if ((new->gw_mode != old->gw_mode) ||
|
||||||
(new->aigp != old->aigp) ||
|
(new->aigp != old->aigp) ||
|
||||||
(new->cost != old->cost))
|
(new->cost != old->cost))
|
||||||
|
{
|
||||||
|
/* import_changed itself does not force ROUTE_REFRESH when import_table is active */
|
||||||
|
if (c->c.in_table && (c->c.channel_state == CS_UP))
|
||||||
|
bgp_schedule_packet(p->conn, c, PKT_ROUTE_REFRESH);
|
||||||
|
|
||||||
*import_changed = 1;
|
*import_changed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!ipa_equal(new->next_hop_addr, old->next_hop_addr) ||
|
if (!ipa_equal(new->next_hop_addr, old->next_hop_addr) ||
|
||||||
(new->next_hop_self != old->next_hop_self) ||
|
(new->next_hop_self != old->next_hop_self) ||
|
||||||
|
|
Loading…
Reference in a new issue