Commit 0118e83b authored by Codrin Ciubotariu's avatar Codrin Ciubotariu Committed by York Sun

common/env_flags.c: Add function to validate a MAC address

The code that checks if a string has the format of a MAC address has been
moved to a separate function called eth_validate_ethaddr_str().

This has been done to allow other components (such as vsc9953 driver)
to validate a MAC address.
Signed-off-by: default avatarCodrin Ciubotariu <codrin.ciubotariu@freescale.com>
Acked-by: default avatarJoe Hershberger <joe.hershberger@ni.com>
Reviewed-by: default avatarYork Sun <yorksun@freescale.com>
parent 68c929da
......@@ -187,6 +187,31 @@ static void skip_num(int hex, const char *value, const char **end,
*end = value;
}
#ifdef CONFIG_CMD_NET
int eth_validate_ethaddr_str(const char *addr)
{
const char *end;
const char *cur;
int i;
cur = addr;
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;
}
return 0;
}
#endif
/*
* Based on the declared type enum, validate that the value string complies
* with that format
......@@ -239,19 +264,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:
......
......@@ -109,6 +109,13 @@ enum env_flags_varaccess env_flags_parse_varaccess(const char *flags);
*/
enum env_flags_varaccess env_flags_parse_varaccess_from_binflags(int binflags);
#ifdef CONFIG_CMD_NET
/*
* Check if a string has the format of an Ethernet MAC address
*/
int eth_validate_ethaddr_str(const char *addr);
#endif
#ifdef USE_HOSTCC
/*
* Look up the type of a variable directly from the .flags var.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment