Message ID | 20220906150955.505100-8-v.v.mitrofanov@yadro.com |
---|---|
State | Superseded |
Delegated to: | Ramon Fried |
Headers | show |
Series | IPv6 support | expand |
On Tue, Sep 6, 2022 at 6:10 PM Viacheslav Mitrofanov <v.v.mitrofanov@yadro.com> wrote: > > Implement actions on ip6addr, gatewayip6, serverip6 varaibles. > on_ip6addr - convert IPv6 string addr to struct ip6_addr > on_gatewayip6 - convert IPv6 string addr to struct ip6_addr > on_serverip6 - convert IPv6 string addr to struct ip6_addr > > Signed-off-by: Viacheslav Mitrofanov <v.v.mitrofanov@yadro.com> > --- > net/net6.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 48 insertions(+) > > diff --git a/net/net6.c b/net/net6.c > index 7cd442e6e2..cfbd4f5827 100644 > --- a/net/net6.c > +++ b/net/net6.c > @@ -29,3 +29,51 @@ struct in6_addr net_server_ip6 = ZERO_IPV6_ADDR; > u32 net_prefix_length; > > bool use_ip6; > + > +static int on_ip6addr(const char *name, const char *value, enum env_op op, > + int flags) > +{ > + char *mask; > + size_t len; > + > + if (flags & H_PROGRAMMATIC) > + return 0; > + > + if (op == env_op_delete) { > + net_prefix_length = 0; > + net_copy_ip6(&net_ip6, &net_null_addr_ip6); > + return 0; > + } > + > + mask = strchr(value, '/'); > + len = strlen(value); > + > + if (mask) > + net_prefix_length = simple_strtoul(value + len, NULL, 10); > + > + return string_to_ip6(value, len, &net_ip6); > +} > + > +U_BOOT_ENV_CALLBACK(ip6addr, on_ip6addr); > + > +static int on_gatewayip6(const char *name, const char *value, enum env_op op, > + int flags) > +{ > + if (flags & H_PROGRAMMATIC) > + return 0; > + > + return string_to_ip6(value, strlen(value), &net_gateway6); > +} > + > +U_BOOT_ENV_CALLBACK(gatewayip6, on_gatewayip6); > + > +static int on_serverip6(const char *name, const char *value, enum env_op op, > + int flags) > +{ > + if (flags & H_PROGRAMMATIC) > + return 0; > + > + return string_to_ip6(value, strlen(value), &net_server_ip6); > +} > + > +U_BOOT_ENV_CALLBACK(serverip6, on_serverip6); > -- > 2.25.1 > Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
diff --git a/net/net6.c b/net/net6.c index 7cd442e6e2..cfbd4f5827 100644 --- a/net/net6.c +++ b/net/net6.c @@ -29,3 +29,51 @@ struct in6_addr net_server_ip6 = ZERO_IPV6_ADDR; u32 net_prefix_length; bool use_ip6; + +static int on_ip6addr(const char *name, const char *value, enum env_op op, + int flags) +{ + char *mask; + size_t len; + + if (flags & H_PROGRAMMATIC) + return 0; + + if (op == env_op_delete) { + net_prefix_length = 0; + net_copy_ip6(&net_ip6, &net_null_addr_ip6); + return 0; + } + + mask = strchr(value, '/'); + len = strlen(value); + + if (mask) + net_prefix_length = simple_strtoul(value + len, NULL, 10); + + return string_to_ip6(value, len, &net_ip6); +} + +U_BOOT_ENV_CALLBACK(ip6addr, on_ip6addr); + +static int on_gatewayip6(const char *name, const char *value, enum env_op op, + int flags) +{ + if (flags & H_PROGRAMMATIC) + return 0; + + return string_to_ip6(value, strlen(value), &net_gateway6); +} + +U_BOOT_ENV_CALLBACK(gatewayip6, on_gatewayip6); + +static int on_serverip6(const char *name, const char *value, enum env_op op, + int flags) +{ + if (flags & H_PROGRAMMATIC) + return 0; + + return string_to_ip6(value, strlen(value), &net_server_ip6); +} + +U_BOOT_ENV_CALLBACK(serverip6, on_serverip6);
Implement actions on ip6addr, gatewayip6, serverip6 varaibles. on_ip6addr - convert IPv6 string addr to struct ip6_addr on_gatewayip6 - convert IPv6 string addr to struct ip6_addr on_serverip6 - convert IPv6 string addr to struct ip6_addr Signed-off-by: Viacheslav Mitrofanov <v.v.mitrofanov@yadro.com> --- net/net6.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+)