summaryrefslogtreecommitdiff
path: root/ldpd/lde.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldpd/lde.c')
-rw-r--r--ldpd/lde.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/ldpd/lde.c b/ldpd/lde.c
index b597d967d7..63e1e39946 100644
--- a/ldpd/lde.c
+++ b/ldpd/lde.c
@@ -767,11 +767,12 @@ lde_send_change_klabel(struct fec_node *fn, struct fec_nh *fnh)
sizeof(kr));
break;
case FEC_TYPE_PWID:
- if (fn->local_label == NO_LABEL ||
+ pw = (struct l2vpn_pw *) fn->data;
+ if (!pw || fn->local_label == NO_LABEL ||
fnh->remote_label == NO_LABEL)
return;
- pw = (struct l2vpn_pw *) fn->data;
+ pw->enabled = true;
pw2zpw(pw, &zpw);
zpw.local_label = fn->local_label;
zpw.remote_label = fnh->remote_label;
@@ -818,6 +819,10 @@ lde_send_delete_klabel(struct fec_node *fn, struct fec_nh *fnh)
break;
case FEC_TYPE_PWID:
pw = (struct l2vpn_pw *) fn->data;
+ if (!pw)
+ return;
+
+ pw->enabled = false;
pw2zpw(pw, &zpw);
zpw.local_label = fn->local_label;
zpw.remote_label = fnh->remote_label;