mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-10-17 10:33:13 +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, " [ table TABLE_ID ] [ proto RTPROTO ]\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, "NH := [ encap ENCAPTYPE ENCAPHDR ] [ via [ FAMILY ] ADDRESS ]\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);
|
||||
}
|
||||
}
|
||||
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");
|
||||
fflush(fp);
|
||||
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))
|
||||
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 {
|
||||
int type;
|
||||
inet_prefix dst;
|
||||
|
@ -75,7 +75,9 @@ replace " } "
|
||||
.B scope
|
||||
.IR SCOPE " ] [ "
|
||||
.B metric
|
||||
.IR METRIC " ]"
|
||||
.IR METRIC " ] [ "
|
||||
.B ttl-propagate
|
||||
.RB "{ " enabled " | " disabled " } ]"
|
||||
|
||||
.ti -8
|
||||
.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.
|
||||
.B Only
|
||||
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
|
||||
|
||||
.TP
|
||||
|
Loading…
Reference in New Issue
Block a user