net: add mac_pton() for parsing MAC address
mac_pton() parses MAC address in form XX:XX:XX:XX:XX:XX and only in that form. mac_pton() doesn't dirty result until it's sure string representation is valid. mac_pton() doesn't care about characters _after_ last octet, it's up to caller to deal with it. mac_pton() diverges from 0/-E return value convention. Target usage: if (!mac_pton(str, whatever->mac)) return -EINVAL; /* ->mac being u8 [ETH_ALEN] is filled at this point. */ /* optionally check str[3 * ETH_ALEN - 1] for termination */ Use mac_pton() in pktgen and netconsole for start. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
99f823f98f
commit
4940fc889e
@@ -698,32 +698,8 @@ int netpoll_parse_options(struct netpoll *np, char *opt)
|
||||
|
||||
if (*cur != 0) {
|
||||
/* MAC address */
|
||||
if ((delim = strchr(cur, ':')) == NULL)
|
||||
if (!mac_pton(cur, np->remote_mac))
|
||||
goto parse_failed;
|
||||
*delim = 0;
|
||||
np->remote_mac[0] = simple_strtol(cur, NULL, 16);
|
||||
cur = delim + 1;
|
||||
if ((delim = strchr(cur, ':')) == NULL)
|
||||
goto parse_failed;
|
||||
*delim = 0;
|
||||
np->remote_mac[1] = simple_strtol(cur, NULL, 16);
|
||||
cur = delim + 1;
|
||||
if ((delim = strchr(cur, ':')) == NULL)
|
||||
goto parse_failed;
|
||||
*delim = 0;
|
||||
np->remote_mac[2] = simple_strtol(cur, NULL, 16);
|
||||
cur = delim + 1;
|
||||
if ((delim = strchr(cur, ':')) == NULL)
|
||||
goto parse_failed;
|
||||
*delim = 0;
|
||||
np->remote_mac[3] = simple_strtol(cur, NULL, 16);
|
||||
cur = delim + 1;
|
||||
if ((delim = strchr(cur, ':')) == NULL)
|
||||
goto parse_failed;
|
||||
*delim = 0;
|
||||
np->remote_mac[4] = simple_strtol(cur, NULL, 16);
|
||||
cur = delim + 1;
|
||||
np->remote_mac[5] = simple_strtol(cur, NULL, 16);
|
||||
}
|
||||
|
||||
netpoll_print_options(np);
|
||||
|
Reference in New Issue
Block a user