version 1.4.4.3, 2011/05/17 20:25:20
|
version 1.6, 2011/10/31 13:53:51
|
Line 295 io_FreeNullTerm(char *** __restrict arr)
|
Line 295 io_FreeNullTerm(char *** __restrict arr)
|
*arr = NULL; |
*arr = NULL; |
} |
} |
} |
} |
|
|
|
/* |
|
* io_ether_ntoa() Convert ethernet address to string |
|
* @n = ethernet address structure, like struct ether_addr |
|
* @a = string |
|
* @len = string length |
|
* return: NULL error or !=NULL string a |
|
*/ |
|
inline char * |
|
io_ether_ntoa(const struct io_ether_addr *n, char * __restrict a, int len) |
|
{ |
|
if (!n || !a) |
|
return NULL; |
|
|
|
memset(a, 0, len); |
|
if (snprintf(a, len, "%02x:%02x:%02x:%02x:%02x:%02x", |
|
n->ether_addr_octet[0], n->ether_addr_octet[1], |
|
n->ether_addr_octet[2], n->ether_addr_octet[3], |
|
n->ether_addr_octet[4], n->ether_addr_octet[5]) < 17) |
|
return NULL; |
|
|
|
return a; |
|
} |
|
|
|
/* |
|
* io_ether_aton() Convert string to ethernet address |
|
* @a = string |
|
* @e = ethernet address structure, like struct ether_addr |
|
* return: NULL error or !=NULL ethernet address structure |
|
*/ |
|
inline struct io_ether_addr * |
|
io_ether_aton(const char *a, struct io_ether_addr *e) |
|
{ |
|
int i; |
|
u_int o0, o1, o2, o3, o4, o5; |
|
|
|
if (!a || !e) |
|
return NULL; |
|
|
|
i = sscanf(a, "%x:%x:%x:%x:%x:%x", &o0, &o1, &o2, &o3, &o4, &o5); |
|
if (i != 6) |
|
return NULL; |
|
|
|
e->ether_addr_octet[0] = o0; |
|
e->ether_addr_octet[1] = o1; |
|
e->ether_addr_octet[2] = o2; |
|
e->ether_addr_octet[3] = o3; |
|
e->ether_addr_octet[4] = o4; |
|
e->ether_addr_octet[5] = o5; |
|
|
|
return e; |
|
} |