diff options
author | Odin Ugedal <odin@ugedal.com> | 2020-04-15 16:39:34 +0200 |
---|---|---|
committer | Stephen Hemminger <stephen@networkplumber.org> | 2020-04-20 09:33:15 -0700 |
commit | 6f883f168cf9e1f3be208a10d671a54d781e75a5 (patch) | |
tree | 9c96cebbc7c1d11127ad6ed014ba671911703b3d | |
parent | e07c57e94e27d2f15bfb9de4db7ca3ab9d9368ed (diff) | |
download | iproute2-6f883f168cf9e1f3be208a10d671a54d781e75a5.tar.gz |
q_cake: Make fwmark uint instead of int
This will help avoid overflow, since setting it to 0xffffffff would
result in -1 when converted to integer, resulting in being "-1", setting
the fwmark to 0x00.
Signed-off-by: Odin Ugedal <odin@ugedal.com>
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r-- | tc/q_cake.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/tc/q_cake.c b/tc/q_cake.c index 3c78b1767..9ebb270c1 100644 --- a/tc/q_cake.c +++ b/tc/q_cake.c @@ -97,6 +97,7 @@ static int cake_parse_opt(struct qdisc_util *qu, int argc, char **argv, unsigned int interval = 0; unsigned int diffserv = 0; unsigned int memlimit = 0; + unsigned int fwmark = 0; unsigned int target = 0; __u64 bandwidth = 0; int ack_filter = -1; @@ -107,7 +108,6 @@ static int cake_parse_opt(struct qdisc_util *qu, int argc, char **argv, int autorate = -1; int ingress = -1; int overhead = 0; - int fwmark = -1; int wash = -1; int nat = -1; int atm = -1; @@ -335,15 +335,12 @@ static int cake_parse_opt(struct qdisc_util *qu, int argc, char **argv, return -1; } } else if (strcmp(*argv, "fwmark") == 0) { - unsigned int fwm; - NEXT_ARG(); - if (get_u32(&fwm, *argv, 0)) { + if (get_u32(&fwmark, *argv, 0)) { fprintf(stderr, "Illegal value for \"fwmark\": \"%s\"\n", *argv); return -1; } - fwmark = fwm; } else if (strcmp(*argv, "help") == 0) { explain(); return -1; @@ -388,7 +385,7 @@ static int cake_parse_opt(struct qdisc_util *qu, int argc, char **argv, if (memlimit) addattr_l(n, 1024, TCA_CAKE_MEMORY, &memlimit, sizeof(memlimit)); - if (fwmark != -1) + if (fwmark) addattr_l(n, 1024, TCA_CAKE_FWMARK, &fwmark, sizeof(fwmark)); if (nat != -1) |