From 21683186a0ae2eb06f18129fe6557c3ace1e38c7 Mon Sep 17 00:00:00 2001 From: anlan_cs Date: Wed, 18 Aug 2021 01:58:54 -0400 Subject: [PATCH] zebra: fix wrong check of mpls command Maybe with empty nexthop to call zebra_mpls_transit_lsp(): "no mpls lsp (16-1048575)". So just remove this "gate_str" check. If without "gate" in command, "gtype" is set to NEXTHOP_TYPE_BLACKHOLE for subsequent processing. Signed-off-by: anlan_cs --- zebra/zebra_mpls_vty.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/zebra/zebra_mpls_vty.c b/zebra/zebra_mpls_vty.c index 1ef70270f8..fd9b1ae387 100644 --- a/zebra/zebra_mpls_vty.c +++ b/zebra/zebra_mpls_vty.c @@ -67,11 +67,6 @@ static int zebra_mpls_transit_lsp(struct vty *vty, int add_cmd, return CMD_WARNING_CONFIG_FAILED; } - if (gate_str == NULL) { - vty_out(vty, "%% No Nexthop Information\n"); - return CMD_WARNING_CONFIG_FAILED; - } - out_label = MPLS_LABEL_IMPLICIT_NULL; /* as initialization */ label = atoi(inlabel_str); if (!IS_MPLS_UNRESERVED_LABEL(label)) { @@ -91,18 +86,21 @@ static int zebra_mpls_transit_lsp(struct vty *vty, int add_cmd, } in_label = label; + gtype = NEXTHOP_TYPE_BLACKHOLE; /* as initialization */ - /* Gateway is a IPv4 or IPv6 nexthop. */ - ret = inet_pton(AF_INET6, gate_str, &gate.ipv6); - if (ret == 1) - gtype = NEXTHOP_TYPE_IPV6; - else { - ret = inet_pton(AF_INET, gate_str, &gate.ipv4); + if (gate_str) { + /* Gateway is a IPv4 or IPv6 nexthop. */ + ret = inet_pton(AF_INET6, gate_str, &gate.ipv6); if (ret == 1) - gtype = NEXTHOP_TYPE_IPV4; + gtype = NEXTHOP_TYPE_IPV6; else { - vty_out(vty, "%% Invalid nexthop\n"); - return CMD_WARNING_CONFIG_FAILED; + ret = inet_pton(AF_INET, gate_str, &gate.ipv4); + if (ret == 1) + gtype = NEXTHOP_TYPE_IPV4; + else { + vty_out(vty, "%% Invalid nexthop\n"); + return CMD_WARNING_CONFIG_FAILED; + } } }