mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 04:47:05 +00:00
zebra: add explicit-null option for static MPLS LSPs
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
e2a4192a42
commit
e64f3c323b
@ -1837,18 +1837,31 @@ zebra_mpls_write_lsp_config (struct vty *vty, struct zebra_vrf *zvrf)
|
|||||||
zebra_slsp_t *slsp;
|
zebra_slsp_t *slsp;
|
||||||
zebra_snhlfe_t *snhlfe;
|
zebra_snhlfe_t *snhlfe;
|
||||||
struct listnode *node;
|
struct listnode *node;
|
||||||
char buf[INET6_ADDRSTRLEN];
|
|
||||||
struct list *slsp_list = hash_get_sorted_list(zvrf->slsp_table, slsp_cmp);
|
struct list *slsp_list = hash_get_sorted_list(zvrf->slsp_table, slsp_cmp);
|
||||||
|
|
||||||
for (ALL_LIST_ELEMENTS_RO(slsp_list, node, slsp))
|
for (ALL_LIST_ELEMENTS_RO(slsp_list, node, slsp))
|
||||||
{
|
{
|
||||||
for (snhlfe = slsp->snhlfe_list; snhlfe; snhlfe = snhlfe->next)
|
for (snhlfe = slsp->snhlfe_list; snhlfe; snhlfe = snhlfe->next)
|
||||||
{
|
{
|
||||||
|
char buf[INET6_ADDRSTRLEN];
|
||||||
char lstr[30];
|
char lstr[30];
|
||||||
|
|
||||||
snhlfe2str (snhlfe, buf, BUFSIZ);
|
snhlfe2str (snhlfe, buf, BUFSIZ);
|
||||||
|
switch (snhlfe->out_label) {
|
||||||
|
case MPLS_V4_EXP_NULL_LABEL:
|
||||||
|
case MPLS_V6_EXP_NULL_LABEL:
|
||||||
|
strlcpy(lstr, "explicit-null", sizeof(lstr));
|
||||||
|
break;
|
||||||
|
case MPLS_IMP_NULL_LABEL:
|
||||||
|
strlcpy(lstr, "implicit-null", sizeof(lstr));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sprintf(lstr, "%u", snhlfe->out_label);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
vty_out (vty, "mpls lsp %u %s %s%s",
|
vty_out (vty, "mpls lsp %u %s %s%s",
|
||||||
slsp->ile.in_label, buf,
|
slsp->ile.in_label, buf, lstr, VTY_NEWLINE);
|
||||||
label2str(snhlfe->out_label, lstr, 30), VTY_NEWLINE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,6 +115,10 @@ zebra_mpls_transit_lsp (struct vty *vty, int add_cmd, const char *inlabel_str,
|
|||||||
{
|
{
|
||||||
if (outlabel_str[0] == 'i')
|
if (outlabel_str[0] == 'i')
|
||||||
out_label = MPLS_IMP_NULL_LABEL;
|
out_label = MPLS_IMP_NULL_LABEL;
|
||||||
|
else if (outlabel_str[0] == 'e' && gtype == NEXTHOP_TYPE_IPV4)
|
||||||
|
out_label = MPLS_V4_EXP_NULL_LABEL;
|
||||||
|
else if (outlabel_str[0] == 'e' && gtype == NEXTHOP_TYPE_IPV6)
|
||||||
|
out_label = MPLS_V6_EXP_NULL_LABEL;
|
||||||
else
|
else
|
||||||
out_label = atoi(outlabel_str);
|
out_label = atoi(outlabel_str);
|
||||||
}
|
}
|
||||||
@ -150,13 +154,14 @@ zebra_mpls_transit_lsp (struct vty *vty, int add_cmd, const char *inlabel_str,
|
|||||||
|
|
||||||
DEFUN (mpls_transit_lsp,
|
DEFUN (mpls_transit_lsp,
|
||||||
mpls_transit_lsp_cmd,
|
mpls_transit_lsp_cmd,
|
||||||
"mpls lsp <16-1048575> (A.B.C.D|X:X::X:X) (<16-1048575>|implicit-null)",
|
"mpls lsp <16-1048575> (A.B.C.D|X:X::X:X) (<16-1048575>|explicit-null|implicit-null)",
|
||||||
MPLS_STR
|
MPLS_STR
|
||||||
"Establish label switched path\n"
|
"Establish label switched path\n"
|
||||||
"Incoming MPLS label\n"
|
"Incoming MPLS label\n"
|
||||||
"IPv4 gateway address\n"
|
"IPv4 gateway address\n"
|
||||||
"IPv6 gateway address\n"
|
"IPv6 gateway address\n"
|
||||||
"Outgoing MPLS label\n"
|
"Outgoing MPLS label\n"
|
||||||
|
"Use Explicit-Null label\n"
|
||||||
"Use Implicit-Null label\n")
|
"Use Implicit-Null label\n")
|
||||||
{
|
{
|
||||||
return zebra_mpls_transit_lsp (vty, 1, argv[0], argv[1], argv[2], NULL);
|
return zebra_mpls_transit_lsp (vty, 1, argv[0], argv[1], argv[2], NULL);
|
||||||
@ -177,7 +182,7 @@ DEFUN (no_mpls_transit_lsp,
|
|||||||
|
|
||||||
ALIAS (no_mpls_transit_lsp,
|
ALIAS (no_mpls_transit_lsp,
|
||||||
no_mpls_transit_lsp_out_label_cmd,
|
no_mpls_transit_lsp_out_label_cmd,
|
||||||
"no mpls lsp <16-1048575> (A.B.C.D|X:X::X:X) (<16-1048575>|implicit-null)",
|
"no mpls lsp <16-1048575> (A.B.C.D|X:X::X:X) (<16-1048575>|explicit-null|implicit-null)",
|
||||||
NO_STR
|
NO_STR
|
||||||
MPLS_STR
|
MPLS_STR
|
||||||
"Establish label switched path\n"
|
"Establish label switched path\n"
|
||||||
@ -185,6 +190,7 @@ ALIAS (no_mpls_transit_lsp,
|
|||||||
"IPv4 gateway address\n"
|
"IPv4 gateway address\n"
|
||||||
"IPv6 gateway address\n"
|
"IPv6 gateway address\n"
|
||||||
"Outgoing MPLS label\n"
|
"Outgoing MPLS label\n"
|
||||||
|
"Use Explicit-Null label\n"
|
||||||
"Use Implicit-Null label\n")
|
"Use Implicit-Null label\n")
|
||||||
|
|
||||||
DEFUN (no_mpls_transit_lsp_all,
|
DEFUN (no_mpls_transit_lsp_all,
|
||||||
|
Loading…
Reference in New Issue
Block a user