From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=bScF0DXB; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by passt.top (Postfix) with ESMTP id AF0725A0276 for ; Sun, 18 Aug 2024 17:45:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1723995901; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gy6bHD2Xv2yhtMbqyi2Cf/8wQzHzBFJaMN6mKnAqjjI=; b=bScF0DXBDy6qIqQubT8fTDOwzSlqSX32DBrvbIhsq3m0MCL3WuRZb6QBFYTbWZ1lROBpNc PXVZ8RPDLp1EFq3T9V4wbjFATybw/IqWqe8OZEWKTGL2n9htZhjcdDBmyImnSsSnKzPiZb HofCV1VtZi2Mbr+Laey2VtwdA76DPpY= Received: from mail-il1-f200.google.com (mail-il1-f200.google.com [209.85.166.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-645-wt-_P7XYOy-r-de0JIHStA-1; Sun, 18 Aug 2024 11:44:59 -0400 X-MC-Unique: wt-_P7XYOy-r-de0JIHStA-1 Received: by mail-il1-f200.google.com with SMTP id e9e14a558f8ab-39d465cd64bso9082395ab.0 for ; Sun, 18 Aug 2024 08:44:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723995899; x=1724600699; h=content-transfer-encoding:mime-version:organization:references :in-reply-to:message-id:subject:cc:to:from:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=gy6bHD2Xv2yhtMbqyi2Cf/8wQzHzBFJaMN6mKnAqjjI=; b=Sr2r2iC/AJNywrKs4edFG/8513RSIDeTrGOEeQ3cCiv1fovrWxGdi9m8t/D+ZUnItO ITpqEEneywF1gOslzERPRDnx6lZyU54iDwURCIYiApEOFXcedciEBBwEi/JW/LVCtU5v Ahr/foYU3ii5UY067hHmg4lGVVKA6cyWCbrMZ6YvBoZo9sjjYkNq97IjUrEKexslsD9D D8vi0K3BE/2FskPrUlIC7do0hHvJob4ZLBzbNzrVzXirJf4/siFUE2g+eJdB5t+vx4bx RS0cjNS+wB2N4WEx2PNNYAj0HlZcCWsslQp3H2zkhX2vgir8A/hG5nMVLtMr0eSd7BBk /6mg== X-Gm-Message-State: AOJu0YyqTI7hpLcfz4BFQvOhygy/E533GXvDtspxQVA63nUgCoD3nKrl 2x3zPL2iZWAIwFAq2Zlot7VHlTkns1ZTL+QBhefHEQ8xRePyNaqPuUFDzBNE8ddA5vogjIA67hX Piwhb0DKoymmPtZPip192tyNgrir/cZx8okSkIzpDOvBolADCdA== X-Received: by 2002:a05:6e02:154a:b0:39b:2daf:1b82 with SMTP id e9e14a558f8ab-39d26d04ca3mr109984505ab.16.1723995898863; Sun, 18 Aug 2024 08:44:58 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEjPEb1o2Cvwcu2qip1IhsA4piwxoltSp8lf0w8HKALWaN0sDyxPIjlt869lk/LF0s9tLuLnw== X-Received: by 2002:a05:6e02:154a:b0:39b:2daf:1b82 with SMTP id e9e14a558f8ab-39d26d04ca3mr109984425ab.16.1723995898515; Sun, 18 Aug 2024 08:44:58 -0700 (PDT) Received: from maya.myfinge.rs (ifcgrfdd.trafficplex.cloud. [2a10:fc81:a806:d6a9::1]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7c6b6364e81sm5395053a12.83.2024.08.18.08.44.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Aug 2024 08:44:58 -0700 (PDT) Date: Sun, 18 Aug 2024 17:44:55 +0200 From: Stefano Brivio To: David Gibson Subject: Re: [PATCH 02/22] util: Helper for formatting MAC addresses Message-ID: <20240818174455.67210442@elisabeth> In-Reply-To: <20240816054004.1335006-3-david@gibson.dropbear.id.au> References: <20240816054004.1335006-1-david@gibson.dropbear.id.au> <20240816054004.1335006-3-david@gibson.dropbear.id.au> Organization: Red Hat X-Mailer: Claws Mail 4.2.0 (GTK 3.24.41; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Message-ID-Hash: PRLS75LWUM62USZNZHCILBXU2JHJMVCP X-Message-ID-Hash: PRLS75LWUM62USZNZHCILBXU2JHJMVCP X-MailFrom: sbrivio@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top, Paul Holzinger X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: On Fri, 16 Aug 2024 15:39:43 +1000 David Gibson wrote: > 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 > --- > conf.c | 7 +++---- > dhcp.c | 5 ++--- > util.c | 19 +++++++++++++++++++ > util.h | 3 +++ > 4 files changed, 27 insertions(+), 7 deletions(-) > > diff --git a/conf.c b/conf.c > index ed097bdc..830f91a6 100644 > --- a/conf.c > +++ b/conf.c > @@ -921,7 +921,8 @@ pasta_opts: > */ > 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; > > 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("MAC:"); > - info(" host: %02x:%02x:%02x:%02x:%02x:%02x", > - c->mac[0], c->mac[1], c->mac[2], > - c->mac[3], c->mac[4], c->mac[5]); > + info(" host: %s", eth_ntop(c->mac, bufmac, sizeof(bufmac))); > > if (c->ifi4) { > if (!c->no_dhcp) { > diff --git a/dhcp.c b/dhcp.c > index aa9f59da..acc5b03e 100644 > --- a/dhcp.c > +++ b/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) > { > size_t mlen, dlen, offset = 0, opt_len, opt_off = 0; > + char macstr[ETH_ADDRSTRLEN]; > const struct ethhdr *eh; > const struct iphdr *iph; > const struct udphdr *uh; > @@ -340,9 +341,7 @@ int dhcp(const struct ctx *c, const struct pool *p) > return -1; > } > > - info(" from %02x:%02x:%02x:%02x:%02x:%02x", > - m->chaddr[0], m->chaddr[1], m->chaddr[2], > - m->chaddr[3], m->chaddr[4], m->chaddr[5]); > + info(" from %s", eth_ntop(m->chaddr, macstr, sizeof(macstr))); > > m->yiaddr = c->ip4.addr; > mask.s_addr = htonl(0xffffffff << (32 - c->ip4.prefix_len)); > diff --git a/util.c b/util.c > index 0b414045..892358b1 100644 > --- a/util.c > +++ b/util.c > @@ -676,6 +676,25 @@ const char *sockaddr_ntop(const void *sa, char *dst, socklen_t size) > 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 Nit: s/output/Output, s/size/Size > + * > + * 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 > * @ee: Socket extended error structure > * > diff --git a/util.h b/util.h > index cb4d181c..c1748074 100644 > --- a/util.h > +++ b/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 ETH_ADDRSTRLEN (ETH_ALEN * 3) The fact that this includes two digits plus separator for all non-last octets of a MAC address, and two digits plus NULL terminator for the last octet, looks a bit subtle to me. Defining this as sizeof("00:11:22:33:44:55") wouldn't scream "off-by-one" as much, to me. Not a strong preference. -- Stefano