diff options
author | Renato Westphal <renato@opensourcerouting.org> | 2017-06-02 16:14:54 +0200 |
---|---|---|
committer | Renato Westphal <renato@opensourcerouting.org> | 2017-06-05 17:24:36 +0200 |
commit | c18ac4c29a829edd98591931ba4ed827b3569095 (patch) | |
tree | ca6ca9a726feac37b689e3007b38fbfcb2aebd3b /ldpd | |
parent | ldpd: fix issues detected by Coverity Scan (diff) | |
download | frr-c18ac4c29a829edd98591931ba4ed827b3569095.tar.xz frr-c18ac4c29a829edd98591931ba4ed827b3569095.zip |
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 <renato@opensourcerouting.org>
Diffstat (limited to 'ldpd')
-rw-r--r-- | ldpd/ldpd.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/ldpd/ldpd.c b/ldpd/ldpd.c index bdf709732..f9e44012e 100644 --- a/ldpd/ldpd.c +++ b/ldpd/ldpd.c @@ -1679,8 +1679,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; @@ -1702,8 +1701,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); |