Commit d506263d authored by Ondřej Zajíček's avatar Ondřej Zajíček

Nest: Forbid adding channels during reconfiguration

When a new channel is found during reconfiguration, do force restart
of the protocol, like with any other un-reconfigurable change.

The old behavior was that the new channel was added but remained in down
state, even if the protocol was up, so a manual protocol restart was
often necessary.

In the future this should be improved such that a reconfigurable
channel addition (e.g. direct) is accepted and channel is started,
while an un-reconfigurable addition forces protocol restart.
parent baeacdcf
Pipeline #43155 passed with stages
in 4 minutes and 15 seconds
...@@ -602,7 +602,11 @@ proto_configure_channel(struct proto *p, struct channel **pc, struct channel_con ...@@ -602,7 +602,11 @@ proto_configure_channel(struct proto *p, struct channel **pc, struct channel_con
if (!c && cf) if (!c && cf)
{ {
*pc = proto_add_channel(p, cf); /* We could add the channel, but currently it would just stay in down state
until protocol is restarted, so it is better to force restart anyways. */
log(L_INFO "Cannot add channel %s.%s", p->name, cf->name);
return 0;
// *pc = proto_add_channel(p, cf);
} }
else if (c && !cf) else if (c && !cf)
{ {
...@@ -1878,6 +1878,8 @@ bgp_reconfigure(struct proto *P, struct proto_config *CF) ...@@ -1878,6 +1878,8 @@ bgp_reconfigure(struct proto *P, struct proto_config *CF)
{ {
C = (struct channel *) bgp_find_channel(p, cc->afi); C = (struct channel *) bgp_find_channel(p, cc->afi);
same = proto_configure_channel(P, &C, &cc->c) && same; same = proto_configure_channel(P, &C, &cc->c) && same;
if (C)
C->stale = 0; C->stale = 0;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment