]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: ipv6: Fix IPv6 netmask parsing
authorSean Edmond <seanedmond@microsoft.com>
Fri, 6 Jan 2023 22:22:55 +0000 (14:22 -0800)
committerTom Rini <trini@konsulko.com>
Thu, 2 Feb 2023 19:44:53 +0000 (14:44 -0500)
It should be possible to specify a netmask when
setting a static IPv6 address.  For example:
setenv ip6addr 2001:cafe:cafe:cafe::100/64

The net_prefix_length and net_ip6 should be updated
properly.

Signed-off-by: Sean Edmond <seanedmond@microsoft.com>
Reviewed-by: Viacheslav Mitrofanov <v.v.mitrofanov@yadro.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
net/net6.c

index fdea0787885e48e1a7ccdee97743df43620a8aeb..75577bcea17b9d663fa0af157fbd63203c6be9c8 100644 (file)
@@ -47,10 +47,13 @@ static int on_ip6addr(const char *name, const char *value, enum env_op op,
        }
 
        mask = strchr(value, '/');
-       len = strlen(value);
 
-       if (mask)
-               net_prefix_length = simple_strtoul(value + len, NULL, 10);
+       if (mask) {
+               net_prefix_length = simple_strtoul(mask + 1, NULL, 10);
+               len = mask - value;
+       } else {
+               len = strlen(value);
+       }
 
        return string_to_ip6(value, len, &net_ip6);
 }