diff options
Diffstat (limited to 'ldpd/ldp_zebra.c')
| -rw-r--r-- | ldpd/ldp_zebra.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/ldpd/ldp_zebra.c b/ldpd/ldp_zebra.c index 92e329c389..2d90412d17 100644 --- a/ldpd/ldp_zebra.c +++ b/ldpd/ldp_zebra.c @@ -246,12 +246,17 @@ ldp_zebra_send_mpls_labels(int cmd, struct kroute *kr) zl.route.instance = kr->route_instance; } - /* - * For broken LSPs, instruct the forwarding plane to pop the top-level + /* If allow-broken-lsps is enabled then if an lsp is received with + * no remote label, instruct the forwarding plane to pop the top-level * label and forward packets normally. This is a best-effort attempt * to deliver labeled IP packets to their final destination (instead of * dropping them). */ + if (kr->remote_label == NO_LABEL + && !(ldpd_conf->flags & F_LDPD_ALLOW_BROKEN_LSP) + && cmd == ZEBRA_MPLS_LABELS_ADD) + return 0; + if (kr->remote_label == NO_LABEL) kr->remote_label = MPLS_LABEL_IMPLICIT_NULL; @@ -679,9 +684,8 @@ ldp_zebra_filter_update(struct access_list *access) if (access && access->name[0] != '\0') { strlcpy(laccess.name, access->name, sizeof(laccess.name)); - laccess.type = access->type; - debug_evt("%s ACL update filter name %s type %d", __func__, - access->name, access->type); + debug_evt("%s ACL update filter name %s", __func__, + access->name); main_imsg_compose_both(IMSG_FILTER_UPDATE, &laccess, sizeof(laccess)); |
