[PATCH] net: ipv6: IPv6 environment variable cleanup

From: Sean Edmond seanedmond@microsoft.com
Fix "setenv gatewayip6".
Synchronize IPv6 local variables with environment variables in netboot_update_env()
Signed-off-by: Sean Edmond seanedmond@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

On Thu, Feb 16, 2023 at 6:39 AM seanedmond@linux.microsoft.com wrote:
From: Sean Edmond seanedmond@microsoft.com
Fix "setenv gatewayip6".
Synchronize IPv6 local variables with environment variables in netboot_update_env()
Signed-off-by: Sean Edmond seanedmond@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,"
Why is this needed ?
#else #define NET6_FLAGS
#endif
2.39.0

-----Original Message----- From: Ramon Fried rfried.dev@gmail.com Sent: Saturday, February 18, 2023 12:10 PM To: seanedmond@linux.microsoft.com Cc: u-boot@lists.denx.de; joe.hershberger@ni.com; wd@denx.de; Sean Edmond seanedmond@microsoft.com Subject: [EXTERNAL] Re: [PATCH] net: ipv6: IPv6 environment variable cleanup
On Thu, Feb 16, 2023 at 6:39 AM seanedmond@linux.microsoft.com wrote:
From: Sean Edmond seanedmond@microsoft.com
Fix "setenv gatewayip6".
Synchronize IPv6 local variables with environment variables in netboot_update_env()
Signed-off-by: Sean Edmond seanedmond@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,"
Why is this needed ?
Without the comma, we see the following error when trying to set the gatewayip6 environment variable:
=> setenv gatewayip6 fe80::f0c7:7cff:fea9:c4ec ## Warning: Unknown environment variable access method 's' ## Error inserting "gatewayip6" variable, errno=3
#else #define NET6_FLAGS
#endif
2.39.0

Sat, Feb 18, 2023 at 10:09:56PM +0200, Ramon Fried wrote:
On Thu, Feb 16, 2023 at 6:39 AM seanedmond@linux.microsoft.com wrote:
From: Sean Edmond seanedmond@microsoft.com
Fix "setenv gatewayip6".
Synchronize IPv6 local variables with environment variables in netboot_update_env()
Signed-off-by: Sean Edmond seanedmond@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,"
Why is this needed ?
Without the comma, we see the following error when trying to set the gatewayip6 environment variable:
=> setenv gatewayip6 fe80::f0c7:7cff:fea9:c4ec ## Warning: Unknown environment variable access method 's' ## Error inserting "gatewayip6" variable, errno=3
#else #define NET6_FLAGS
#endif
2.39.0

On Wed, Feb 15, 2023 at 08:38:36PM -0800, seanedmond@linux.microsoft.com wrote:
From: Sean Edmond seanedmond@microsoft.com
Fix "setenv gatewayip6".
Synchronize IPv6 local variables with environment variables in netboot_update_env()
Signed-off-by: Sean Edmond seanedmond@microsoft.com
Applied to u-boot/master, thanks!
participants (5)
-
Ramon Fried
-
Sean Edmond
-
Sean Edmond
-
seanedmond@linux.microsoft.com
-
Tom Rini