On 07/24/2015 06:55 AM, Codrin Ciubotariu wrote: > The code from common/env_flags.c that checks if a > string has the format of a MAC address has been moved > in net/eth.c as a separate function called > eth_validate_ethaddr_str(). > > Signed-off-by: Codrin Ciubotariu <codrin.ciubota...@freescale.com> > --- > > Changes for v3: > - none, new patch; > > common/env_flags.c | 15 ++------------- > include/net.h | 1 + > net/eth.c | 30 ++++++++++++++++++++++++++++++ > 3 files changed, 33 insertions(+), 13 deletions(-) > > diff --git a/common/env_flags.c b/common/env_flags.c > index 5189f5b..3e39fd1 100644 > --- a/common/env_flags.c > +++ b/common/env_flags.c > @@ -239,19 +239,8 @@ static int _env_flags_validate_type(const char *value, > } > break; > case env_flags_vartype_macaddr: > - cur = value; > - for (i = 0; i < 6; i++) { > - skip_num(1, cur, &end, 2); > - if (cur == end) > - return -1; > - if (cur + 2 == end && is_hex_prefix(cur)) > - return -1; > - if (i != 5 && *end != ':') > - return -1; > - if (i == 5 && *end != '\0') > - return -1; > - cur = end + 1; > - } > + if (eth_validate_ethaddr_str(value)) > + return -1; > break; > #endif > case env_flags_vartype_end: > diff --git a/include/net.h b/include/net.h > index d17173d..c487aa7 100644 > --- a/include/net.h > +++ b/include/net.h > @@ -218,6 +218,7 @@ void eth_try_another(int first_restart); /* Change the > device */ > void eth_set_current(void); /* set nterface to ethcur var */ > > int eth_get_dev_index(void); /* get the device index */ > +int eth_validate_ethaddr_str(const char *addr); > void eth_parse_enetaddr(const char *addr, uchar *enetaddr); > int eth_getenv_enetaddr(char *name, uchar *enetaddr); > int eth_setenv_enetaddr(char *name, const uchar *enetaddr); > diff --git a/net/eth.c b/net/eth.c > index 953b731..a6fdf1b 100644 > --- a/net/eth.c > +++ b/net/eth.c > @@ -7,6 +7,7 @@ > */ > > #include <common.h> > +#include <linux/ctype.h> > #include <command.h> > #include <dm.h> > #include <environment.h> > @@ -19,6 +20,35 @@ > > DECLARE_GLOBAL_DATA_PTR; > > +int eth_validate_ethaddr_str(const char *addr) > +{ > + unsigned long val; > + int i; > + const char *cur; > + char *end; > + > + if (!addr) > + return -1; > + > + cur = addr; > + for (i = 0; i < 6; i++) { > + val = simple_strtoul(cur, &end, 16); > + if (cur + 1 != end && cur + 2 != end) > + return -1; > + if (val > 0xff) > + return -1; > + if (cur + 2 >= end && tolower(*(cur + 1)) == 'x') > + return -1; > + if (i != 5 && *end != ':') > + return -1; > + if (i == 5 && *end != '\0') > + return -1; > + cur = end + 1; > + } > + > + return 0; > +} > + > void eth_parse_enetaddr(const char *addr, uchar *enetaddr) > { > char *end; >
Codrin, This patch breaks most SPL targets. Please reconsider the location of eth_validate_ethaddr_str(). York _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot