Hi York,

I didn't know that SPL uses net/eth.c . Could you please suggest a place for 
eth_validate_ethaddr_str()?

Thanks and best regards,
Codrin

> -----Original Message-----
> From: Sun York-R58495
> Sent: Saturday, August 08, 2015 3:31 AM
> To: Ciubotariu Codrin Constantin-B43658; u-boot@lists.denx.de
> Cc: joe.hershber...@ni.com; Kushwaha Prabhakar-B32579
> Subject: Re: [PATCH v3 11/16] net/eth.c: Add function to validate a MAC 
> address
> 
> 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

Reply via email to