From: Sean Edmond <seanedm...@microsoft.com>

Fix "setenv gatewayip6".

Synchronize IPv6 local variables with environment variables
in netboot_update_env()

Signed-off-by: Sean Edmond <seanedm...@microsoft.com>
---
 cmd/net.c           | 23 ++++++++++++++++++++++-
 include/env_flags.h |  2 +-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/cmd/net.c b/cmd/net.c
index 88d53d14d5..0161c87529 100644
--- a/cmd/net.c
+++ b/cmd/net.c
@@ -208,7 +208,7 @@ U_BOOT_CMD(
 
 static void netboot_update_env(void)
 {
-       char tmp[22];
+       char tmp[44];
 
        if (net_gateway.s_addr) {
                ip_to_string(net_gateway, tmp);
@@ -269,6 +269,27 @@ static void netboot_update_env(void)
                env_set("ntpserverip", tmp);
        }
 #endif
+
+       if (IS_ENABLED(CONFIG_IPV6)) {
+               if (!ip6_is_unspecified_addr(&net_ip6) ||
+                   net_prefix_length != 0) {
+                       sprintf(tmp, "%pI6c", &net_ip6);
+                       if (net_prefix_length != 0)
+                               sprintf(tmp, "%s/%d", tmp, net_prefix_length);
+
+                       env_set("ip6addr", tmp);
+               }
+
+               if (!ip6_is_unspecified_addr(&net_server_ip6)) {
+                       sprintf(tmp, "%pI6c", &net_server_ip6);
+                       env_set("serverip6", tmp);
+               }
+
+               if (!ip6_is_unspecified_addr(&net_gateway6)) {
+                       sprintf(tmp, "%pI6c", &net_gateway6);
+                       env_set("gatewayip6", tmp);
+               }
+       }
 }
 
 /**
diff --git a/include/env_flags.h b/include/env_flags.h
index 6bd574c2bd..7df40c59be 100644
--- a/include/env_flags.h
+++ b/include/env_flags.h
@@ -71,7 +71,7 @@ enum env_flags_varaccess {
 #define NET6_FLAGS \
        "ip6addr:s," \
        "serverip6:s," \
-       "gatewayip6:s"
+       "gatewayip6:s,"
 #else
 #define NET6_FLAGS
 #endif
-- 
2.39.0

Reply via email to