From: Stephen Hemminger Date: Fri, 15 Dec 2017 02:22:56 +0000 (-0800) Subject: iplink: add definitions for GSO_MAX X-Git-Tag: v4.16.0~106 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08f9d166c31470ca56b654ffd24c78c34ddf7786;p=thirdparty%2Fiproute2.git iplink: add definitions for GSO_MAX Until kernel exports these, add GSO_MAX values into iplink rather than assuming they are UINT_MAX + 1 Signed-off-by: Stephen Hemminger --- diff --git a/ip/iplink.c b/ip/iplink.c index 62bf713d4..8ea5a99a1 100644 --- a/ip/iplink.c +++ b/ip/iplink.c @@ -39,6 +39,14 @@ #define LIBDIR "/usr/lib" #endif +#ifndef GSO_MAX_SIZE +#define GSO_MAX_SIZE 65536 +#endif +#ifndef GSO_MAX_SEGS +#define GSO_MAX_SEGS 65535 +#endif + + static void usage(void) __attribute__((noreturn)); static int iplink_have_newlink(void); @@ -854,18 +862,21 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req, NEXT_ARG(); if (get_unsigned(&max_size, *argv, 0) || - max_size > UINT16_MAX + 1) + max_size > GSO_MAX_SIZE) invarg("Invalid \"gso_max_size\" value\n", *argv); - addattr32(&req->n, sizeof(*req), IFLA_GSO_MAX_SIZE, max_size); + addattr32(&req->n, sizeof(*req), + IFLA_GSO_MAX_SIZE, max_size); } else if (strcmp(*argv, "gso_max_segs") == 0) { unsigned int max_segs; NEXT_ARG(); - if (get_unsigned(&max_segs, *argv, 0) || max_segs > UINT16_MAX) + if (get_unsigned(&max_segs, *argv, 0) || + max_segs > GSO_MAX_SEGS) invarg("Invalid \"gso_max_segs\" value\n", *argv); - addattr32(&req->n, sizeof(*req), IFLA_GSO_MAX_SEGS, max_segs); + addattr32(&req->n, sizeof(*req), + IFLA_GSO_MAX_SEGS, max_segs); } else { if (matches(*argv, "help") == 0) usage();