util: Add compact MAC address formatting/parsing
The P2P DBus interface will use addresses for DBus paths, and uses them without any separators. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
d750b7e699
commit
0c11c63375
2 changed files with 31 additions and 0 deletions
|
@ -69,6 +69,30 @@ int hwaddr_aton(const char *txt, u8 *addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* hwaddr_compact_aton - Convert ASCII string to MAC address (no colon delimitors format)
|
||||||
|
* @txt: MAC address as a string (e.g., "001122334455")
|
||||||
|
* @addr: Buffer for the MAC address (ETH_ALEN = 6 bytes)
|
||||||
|
* Returns: 0 on success, -1 on failure (e.g., string not a MAC address)
|
||||||
|
*/
|
||||||
|
int hwaddr_compact_aton(const char *txt, u8 *addr)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < 6; i++) {
|
||||||
|
int a, b;
|
||||||
|
|
||||||
|
a = hex2num(*txt++);
|
||||||
|
if (a < 0)
|
||||||
|
return -1;
|
||||||
|
b = hex2num(*txt++);
|
||||||
|
if (b < 0)
|
||||||
|
return -1;
|
||||||
|
*addr++ = (a << 4) | b;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hwaddr_aton2 - Convert ASCII string to MAC address (in any known format)
|
* hwaddr_aton2 - Convert ASCII string to MAC address (in any known format)
|
||||||
|
|
|
@ -402,6 +402,12 @@ void perror(const char *s);
|
||||||
#ifndef MAC2STR
|
#ifndef MAC2STR
|
||||||
#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
|
#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
|
||||||
#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
|
#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compact form for string representation of MAC address
|
||||||
|
* To be used, e.g., for constructing dbus paths for P2P Devices
|
||||||
|
*/
|
||||||
|
#define COMPACT_MACSTR "%02x%02x%02x%02x%02x%02x"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef BIT
|
#ifndef BIT
|
||||||
|
@ -436,6 +442,7 @@ typedef u64 __bitwise le64;
|
||||||
#endif /* __must_check */
|
#endif /* __must_check */
|
||||||
|
|
||||||
int hwaddr_aton(const char *txt, u8 *addr);
|
int hwaddr_aton(const char *txt, u8 *addr);
|
||||||
|
int hwaddr_compact_aton(const char *txt, u8 *addr);
|
||||||
int hwaddr_aton2(const char *txt, u8 *addr);
|
int hwaddr_aton2(const char *txt, u8 *addr);
|
||||||
int hex2byte(const char *hex);
|
int hex2byte(const char *hex);
|
||||||
int hexstr2bin(const char *hex, u8 *buf, size_t len);
|
int hexstr2bin(const char *hex, u8 *buf, size_t len);
|
||||||
|
|
Loading…
Reference in a new issue