mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-28 04:45:43 +01:00
There are a few places in the tree which compute the length of the string representation of a MAC address as 3 * ETH_ALEN - 1. Define a constant for this and use it where relevant. No functionality changes are expected. Signed-off-by: Uday Shankar <[email protected]> Reviewed-by: Michal Swiatkowski <[email protected]> Acked-by: Johannes Berg <[email protected]> Reviewed-by: Breno Leitao <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
28 lines
657 B
C
28 lines
657 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include <linux/string.h>
|
|
#include <linux/if_ether.h>
|
|
#include <linux/ctype.h>
|
|
#include <linux/export.h>
|
|
#include <linux/hex.h>
|
|
|
|
bool mac_pton(const char *s, u8 *mac)
|
|
{
|
|
int i;
|
|
|
|
if (strnlen(s, MAC_ADDR_STR_LEN) < MAC_ADDR_STR_LEN)
|
|
return false;
|
|
|
|
/* Don't dirty result unless string is valid MAC. */
|
|
for (i = 0; i < ETH_ALEN; i++) {
|
|
if (!isxdigit(s[i * 3]) || !isxdigit(s[i * 3 + 1]))
|
|
return false;
|
|
if (i != ETH_ALEN - 1 && s[i * 3 + 2] != ':')
|
|
return false;
|
|
}
|
|
for (i = 0; i < ETH_ALEN; i++) {
|
|
mac[i] = (hex_to_bin(s[i * 3]) << 4) | hex_to_bin(s[i * 3 + 1]);
|
|
}
|
|
return true;
|
|
}
|
|
EXPORT_SYMBOL(mac_pton);
|