From: Serhey Popovych Date: Fri, 19 Jan 2018 16:44:01 +0000 (+0200) Subject: iptnl/ip6tnl: Unify ttl/hoplimit parsing routines X-Git-Tag: v4.15.0~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c4743c4d9b73a1d2f4253d27ea6ef20fe7c53a6d;p=thirdparty%2Fiproute2.git iptnl/ip6tnl: Unify ttl/hoplimit parsing routines Handle "inherit" case properly for gre6 and ip6tnl. Use get_u8() in gre to parse ttl/hoplimit. Be consistent about "hlim" alias to ttl/hoplimit support. Signed-off-by: Serhey Popovych Signed-off-by: Stephen Hemminger --- diff --git a/ip/link_gre.c b/ip/link_gre.c index 6254e8875..009ddfc75 100644 --- a/ip/link_gre.c +++ b/ip/link_gre.c @@ -229,16 +229,12 @@ get_failed: exit(-1); } } else if (!matches(*argv, "ttl") || - !matches(*argv, "hoplimit")) { - unsigned int uval; - + !matches(*argv, "hoplimit") || + !matches(*argv, "hlim")) { NEXT_ARG(); if (strcmp(*argv, "inherit") != 0) { - if (get_unsigned(&uval, *argv, 0)) + if (get_u8(&ttl, *argv, 0)) invarg("invalid TTL\n", *argv); - if (uval > 255) - invarg("TTL must be <= 255\n", *argv); - ttl = uval; } else ttl = 0; } else if (!matches(*argv, "tos") || diff --git a/ip/link_gre6.c b/ip/link_gre6.c index 29ca3d137..3d02e1677 100644 --- a/ip/link_gre6.c +++ b/ip/link_gre6.c @@ -238,13 +238,14 @@ get_failed: exit(-1); } } else if (!matches(*argv, "ttl") || - !matches(*argv, "hoplimit")) { - __u8 uval; - + !matches(*argv, "hoplimit") || + !matches(*argv, "hlim")) { NEXT_ARG(); - if (get_u8(&uval, *argv, 0)) - invarg("invalid TTL", *argv); - hop_limit = uval; + if (strcmp(*argv, "inherit") != 0) { + if (get_u8(&hop_limit, *argv, 0)) + invarg("invalid HLIM\n", *argv); + } else + hop_limit = 0; } else if (!matches(*argv, "tos") || !matches(*argv, "tclass") || !matches(*argv, "dsfield")) { diff --git a/ip/link_ip6tnl.c b/ip/link_ip6tnl.c index 8f5c9bd74..f6c52acc8 100644 --- a/ip/link_ip6tnl.c +++ b/ip/link_ip6tnl.c @@ -196,15 +196,15 @@ get_failed: link = if_nametoindex(*argv); if (link == 0) invarg("\"dev\" is invalid", *argv); - } else if (strcmp(*argv, "hoplimit") == 0 || - strcmp(*argv, "ttl") == 0 || + } else if (strcmp(*argv, "ttl") == 0 || + strcmp(*argv, "hoplimit") == 0 || strcmp(*argv, "hlim") == 0) { - __u8 uval; - NEXT_ARG(); - if (get_u8(&uval, *argv, 0)) - invarg("invalid HLIM", *argv); - hop_limit = uval; + if (strcmp(*argv, "inherit") != 0) { + if (get_u8(&hop_limit, *argv, 0)) + invarg("invalid HLIM\n", *argv); + } else + hop_limit = 0; } else if (strcmp(*argv, "encaplimit") == 0) { NEXT_ARG(); if (strcmp(*argv, "none") == 0) { diff --git a/ip/link_iptnl.c b/ip/link_iptnl.c index ce3855c10..a6213d283 100644 --- a/ip/link_iptnl.c +++ b/ip/link_iptnl.c @@ -204,7 +204,8 @@ get_failed: if (link == 0) invarg("\"dev\" is invalid", *argv); } else if (strcmp(*argv, "ttl") == 0 || - strcmp(*argv, "hoplimit") == 0) { + strcmp(*argv, "hoplimit") == 0 || + strcmp(*argv, "hlim") == 0) { NEXT_ARG(); if (strcmp(*argv, "inherit") != 0) { if (get_u8(&ttl, *argv, 0))