mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-12-08 11:16:21 +00:00
iproute: Add support for ttl-propagation attribute
Add support for setting and displaying the ttl-propagation attribute initially used by MPLS to control propagation of MPLS TTL to IPv4/IPv6 TTL/hop-limit on popping final label on a per-route basis. Signed-off-by: Robert Shearman <rshearma@brocade.com> Acked-by: David Ahern <dsa@cumulusnetworks.com>
This commit is contained in:
parent
19beb1aa16
commit
c44d18ea96
22
ip/iproute.c
22
ip/iproute.c
@ -77,6 +77,7 @@ static void usage(void)
|
|||||||
fprintf(stderr, "NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]\n");
|
fprintf(stderr, "NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]\n");
|
||||||
fprintf(stderr, " [ table TABLE_ID ] [ proto RTPROTO ]\n");
|
fprintf(stderr, " [ table TABLE_ID ] [ proto RTPROTO ]\n");
|
||||||
fprintf(stderr, " [ scope SCOPE ] [ metric METRIC ]\n");
|
fprintf(stderr, " [ scope SCOPE ] [ metric METRIC ]\n");
|
||||||
|
fprintf(stderr, " [ ttl-propagate { enabled | disabled } ]\n");
|
||||||
fprintf(stderr, "INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...\n");
|
fprintf(stderr, "INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...\n");
|
||||||
fprintf(stderr, "NH := [ encap ENCAPTYPE ENCAPHDR ] [ via [ FAMILY ] ADDRESS ]\n");
|
fprintf(stderr, "NH := [ encap ENCAPTYPE ENCAPHDR ] [ via [ FAMILY ] ADDRESS ]\n");
|
||||||
fprintf(stderr, " [ dev STRING ] [ weight NUMBER ] NHFLAGS\n");
|
fprintf(stderr, " [ dev STRING ] [ weight NUMBER ] NHFLAGS\n");
|
||||||
@ -715,6 +716,13 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
|
|||||||
fprintf(fp, "%u", pref);
|
fprintf(fp, "%u", pref);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (tb[RTA_TTL_PROPAGATE]) {
|
||||||
|
fprintf(fp, "ttl-propagate ");
|
||||||
|
if (rta_getattr_u8(tb[RTA_TTL_PROPAGATE]))
|
||||||
|
fprintf(fp, "enabled");
|
||||||
|
else
|
||||||
|
fprintf(fp, "disabled");
|
||||||
|
}
|
||||||
fprintf(fp, "\n");
|
fprintf(fp, "\n");
|
||||||
fflush(fp);
|
fflush(fp);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1185,6 +1193,20 @@ static int iproute_modify(int cmd, unsigned int flags, int argc, char **argv)
|
|||||||
|
|
||||||
if (rta->rta_len > RTA_LENGTH(0))
|
if (rta->rta_len > RTA_LENGTH(0))
|
||||||
addraw_l(&req.n, 1024, RTA_DATA(rta), RTA_PAYLOAD(rta));
|
addraw_l(&req.n, 1024, RTA_DATA(rta), RTA_PAYLOAD(rta));
|
||||||
|
} else if (strcmp(*argv, "ttl-propagate") == 0) {
|
||||||
|
__u8 ttl_prop;
|
||||||
|
|
||||||
|
NEXT_ARG();
|
||||||
|
if (matches(*argv, "enabled") == 0)
|
||||||
|
ttl_prop = 1;
|
||||||
|
else if (matches(*argv, "disabled") == 0)
|
||||||
|
ttl_prop = 0;
|
||||||
|
else
|
||||||
|
invarg("\"ttl-propagate\" value is invalid\n",
|
||||||
|
*argv);
|
||||||
|
|
||||||
|
addattr8(&req.n, sizeof(req), RTA_TTL_PROPAGATE,
|
||||||
|
ttl_prop);
|
||||||
} else {
|
} else {
|
||||||
int type;
|
int type;
|
||||||
inet_prefix dst;
|
inet_prefix dst;
|
||||||
|
|||||||
@ -75,7 +75,9 @@ replace " } "
|
|||||||
.B scope
|
.B scope
|
||||||
.IR SCOPE " ] [ "
|
.IR SCOPE " ] [ "
|
||||||
.B metric
|
.B metric
|
||||||
.IR METRIC " ]"
|
.IR METRIC " ] [ "
|
||||||
|
.B ttl-propagate
|
||||||
|
.RB "{ " enabled " | " disabled " } ]"
|
||||||
|
|
||||||
.ti -8
|
.ti -8
|
||||||
.IR INFO_SPEC " := " "NH OPTIONS FLAGS" " ["
|
.IR INFO_SPEC " := " "NH OPTIONS FLAGS" " ["
|
||||||
@ -710,6 +712,12 @@ is a set of encapsulation attributes specific to the
|
|||||||
the route will be deleted after the expires time.
|
the route will be deleted after the expires time.
|
||||||
.B Only
|
.B Only
|
||||||
support IPv6 at present.
|
support IPv6 at present.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.BR ttl-propagate " { " enabled " | " disabled " } "
|
||||||
|
Control whether TTL should be propagated from any encap into the
|
||||||
|
un-encapsulated packet, overriding any global configuration. Only
|
||||||
|
supported for MPLS at present.
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user