summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Stapp <mjs@voltanet.io>2019-12-06 13:44:15 -0500
committerMark Stapp <mjs@voltanet.io>2019-12-06 13:49:25 -0500
commit054af19a41827394bccff0eb1c235355c654c1e0 (patch)
treefe16de9ca5ba9825ca12918d7516bcb01b23d880
parenta44dcdee5589a9352bc2d2d9a69c281663701e8a (diff)
lib,sharpd: support labelled nexthop-groups in sharpd
Update sharpd's zapi client code to support labelled nexthops if they're present in a nexthop-group. Signed-off-by: Mark Stapp <mjs@voltanet.io>
-rw-r--r--lib/nexthop.c3
-rw-r--r--sharpd/sharp_zebra.c11
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/nexthop.c b/lib/nexthop.c
index f314fea697..ce8034846f 100644
--- a/lib/nexthop.c
+++ b/lib/nexthop.c
@@ -376,6 +376,9 @@ void nexthop_add_labels(struct nexthop *nexthop, enum lsp_types_t type,
struct mpls_label_stack *nh_label;
int i;
+ if (num_labels == 0)
+ return;
+
nexthop->nh_label_type = type;
nh_label = XCALLOC(MTYPE_NH_LABEL,
sizeof(struct mpls_label_stack)
diff --git a/sharpd/sharp_zebra.c b/sharpd/sharp_zebra.c
index cd577e9051..797398c791 100644
--- a/sharpd/sharp_zebra.c
+++ b/sharpd/sharp_zebra.c
@@ -265,6 +265,17 @@ void route_add(struct prefix *p, vrf_id_t vrf_id,
api_nh->bh_type = nh->bh_type;
break;
}
+
+ if (nh->nh_label && nh->nh_label->num_labels > 0) {
+ int j;
+
+ SET_FLAG(api_nh->flags, ZAPI_NEXTHOP_FLAG_LABEL);
+
+ api_nh->label_num = nh->nh_label->num_labels;
+ for (j = 0; j < nh->nh_label->num_labels; j++)
+ api_nh->labels[j] = nh->nh_label->label[j];
+ }
+
i++;
}
api.nexthop_num = i;