From be0fbdebca3dbb9266a5196d88f504141ea44b0f Mon Sep 17 00:00:00 2001 From: Renato Westphal Date: Fri, 2 Jun 2017 11:14:54 -0300 Subject: ldpd: fix bug in pseudowire control-word negotiation Bingen discovered a bug in the pseudowire control-word negotiation that might happen when the "control-word exclude" command is used. Under some very specific conditions, ldpd might ignore a PWID label mapping when it shouldn't. This patch removes a wrong optimization that was preventing ldpd to call l2vpn_pw_reset() every time we change the configuration of a pseudowire. Signed-off-by: Renato Westphal --- ldpd/ldpd.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ldpd/ldpd.c b/ldpd/ldpd.c index 61e8e8268..2975231e5 100644 --- a/ldpd/ldpd.c +++ b/ldpd/ldpd.c @@ -1673,8 +1673,7 @@ merge_l2vpn(struct ldpd_conf *xconf, struct l2vpn *l2vpn, struct l2vpn *xl) session_shutdown(nbr, S_SHUTDOWN, 0, 0); } } - if (ldpd_process == PROC_LDE_ENGINE && - !reset_nbr && reinstall_pwfec) + if (ldpd_process == PROC_LDE_ENGINE && reinstall_pwfec) l2vpn_pw_exit(pw); pw->lsr_id = xp->lsr_id; pw->af = xp->af; @@ -1696,8 +1695,7 @@ merge_l2vpn(struct ldpd_conf *xconf, struct l2vpn *l2vpn, struct l2vpn *xl) pw->flags &= ~F_PW_STATIC_NBR_ADDR; if (ldpd_process == PROC_LDP_ENGINE && reinstall_tnbr) ldpe_l2vpn_pw_init(pw); - if (ldpd_process == PROC_LDE_ENGINE && - !reset_nbr && reinstall_pwfec) { + if (ldpd_process == PROC_LDE_ENGINE && reinstall_pwfec) { l2vpn->pw_type = xl->pw_type; l2vpn->mtu = xl->mtu; l2vpn_pw_init(pw); -- cgit v1.2.3