util: Helper for formatting MAC addresses
There are a couple of places where we somewhat messily open code formatting an Ethernet like MAC address for display. Add an eth_ntop() helper for this. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
e6feb5a892
commit
066e69986b
4 changed files with 27 additions and 7 deletions
7
conf.c
7
conf.c
|
@ -921,7 +921,8 @@ pasta_opts:
|
||||||
*/
|
*/
|
||||||
static void conf_print(const struct ctx *c)
|
static void conf_print(const struct ctx *c)
|
||||||
{
|
{
|
||||||
char buf4[INET_ADDRSTRLEN], buf6[INET6_ADDRSTRLEN], ifn[IFNAMSIZ];
|
char buf4[INET_ADDRSTRLEN], buf6[INET6_ADDRSTRLEN];
|
||||||
|
char bufmac[ETH_ADDRSTRLEN], ifn[IFNAMSIZ];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
info("Template interface: %s%s%s%s%s",
|
info("Template interface: %s%s%s%s%s",
|
||||||
|
@ -955,9 +956,7 @@ static void conf_print(const struct ctx *c)
|
||||||
info("Namespace interface: %s", c->pasta_ifn);
|
info("Namespace interface: %s", c->pasta_ifn);
|
||||||
|
|
||||||
info("MAC:");
|
info("MAC:");
|
||||||
info(" host: %02x:%02x:%02x:%02x:%02x:%02x",
|
info(" host: %s", eth_ntop(c->mac, bufmac, sizeof(bufmac)));
|
||||||
c->mac[0], c->mac[1], c->mac[2],
|
|
||||||
c->mac[3], c->mac[4], c->mac[5]);
|
|
||||||
|
|
||||||
if (c->ifi4) {
|
if (c->ifi4) {
|
||||||
if (!c->no_dhcp) {
|
if (!c->no_dhcp) {
|
||||||
|
|
5
dhcp.c
5
dhcp.c
|
@ -276,6 +276,7 @@ static void opt_set_dns_search(const struct ctx *c, size_t max_len)
|
||||||
int dhcp(const struct ctx *c, const struct pool *p)
|
int dhcp(const struct ctx *c, const struct pool *p)
|
||||||
{
|
{
|
||||||
size_t mlen, dlen, offset = 0, opt_len, opt_off = 0;
|
size_t mlen, dlen, offset = 0, opt_len, opt_off = 0;
|
||||||
|
char macstr[ETH_ADDRSTRLEN];
|
||||||
const struct ethhdr *eh;
|
const struct ethhdr *eh;
|
||||||
const struct iphdr *iph;
|
const struct iphdr *iph;
|
||||||
const struct udphdr *uh;
|
const struct udphdr *uh;
|
||||||
|
@ -340,9 +341,7 @@ int dhcp(const struct ctx *c, const struct pool *p)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
info(" from %02x:%02x:%02x:%02x:%02x:%02x",
|
info(" from %s", eth_ntop(m->chaddr, macstr, sizeof(macstr)));
|
||||||
m->chaddr[0], m->chaddr[1], m->chaddr[2],
|
|
||||||
m->chaddr[3], m->chaddr[4], m->chaddr[5]);
|
|
||||||
|
|
||||||
m->yiaddr = c->ip4.addr;
|
m->yiaddr = c->ip4.addr;
|
||||||
mask.s_addr = htonl(0xffffffff << (32 - c->ip4.prefix_len));
|
mask.s_addr = htonl(0xffffffff << (32 - c->ip4.prefix_len));
|
||||||
|
|
19
util.c
19
util.c
|
@ -676,6 +676,25 @@ const char *sockaddr_ntop(const void *sa, char *dst, socklen_t size)
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** eth_ntop() - Convert an Ethernet MAC address to text format
|
||||||
|
* @mac: MAC address
|
||||||
|
* @dst: Output buffer, minimum ETH_ADDRSTRLEN bytes
|
||||||
|
* @size: Size of buffer at @dst
|
||||||
|
*
|
||||||
|
* Return: On success, a non-null pointer to @dst, NULL on failure
|
||||||
|
*/
|
||||||
|
const char *eth_ntop(const unsigned char *mac, char *dst, size_t size)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
|
||||||
|
len = snprintf(dst, size, "%02x:%02x:%02x:%02x:%02x:%02x",
|
||||||
|
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||||
|
if (len < 0 || (size_t)len >= size)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
/** str_ee_origin() - Convert socket extended error origin to a string
|
/** str_ee_origin() - Convert socket extended error origin to a string
|
||||||
* @ee: Socket extended error structure
|
* @ee: Socket extended error structure
|
||||||
*
|
*
|
||||||
|
|
3
util.h
3
util.h
|
@ -215,9 +215,12 @@ static inline const char *af_name(sa_family_t af)
|
||||||
|
|
||||||
#define SOCKADDR_STRLEN MAX(SOCKADDR_INET_STRLEN, SOCKADDR_INET6_STRLEN)
|
#define SOCKADDR_STRLEN MAX(SOCKADDR_INET_STRLEN, SOCKADDR_INET6_STRLEN)
|
||||||
|
|
||||||
|
#define ETH_ADDRSTRLEN (sizeof("00:11:22:33:44:55"))
|
||||||
|
|
||||||
struct sock_extended_err;
|
struct sock_extended_err;
|
||||||
|
|
||||||
const char *sockaddr_ntop(const void *sa, char *dst, socklen_t size);
|
const char *sockaddr_ntop(const void *sa, char *dst, socklen_t size);
|
||||||
|
const char *eth_ntop(const unsigned char *mac, char *dst, size_t size);
|
||||||
const char *str_ee_origin(const struct sock_extended_err *ee);
|
const char *str_ee_origin(const struct sock_extended_err *ee);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue