public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Stefano Brivio <sbrivio@redhat.com>, passt-dev@passt.top
Cc: David Gibson <david@gibson.dropbear.id.au>
Subject: [PATCH 5/8] util: Improve sockaddr initialisation in sock_l4()
Date: Fri,  8 Dec 2023 01:31:37 +1100	[thread overview]
Message-ID: <20231207143140.1851378-6-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20231207143140.1851378-1-david@gibson.dropbear.id.au>

Currently we initialise the address field of the sockaddrs we construct
to the any/unspecified address, but not in a very clear way: we use
explicit 0 values, which is only interpretable if you know the order of
fields in the sockaddr structures.  Use explicit field names, and explicit
initialiser macros for the address.

Because we initialise to this default value, we don't need to explicitly
set the any/unspecified address later on if the caller didn't pass an
overriding bind address.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 util.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/util.c b/util.c
index d465e48..0152ae6 100644
--- a/util.c
+++ b/util.c
@@ -105,12 +105,12 @@ int sock_l4(const struct ctx *c, int af, uint8_t proto,
 	struct sockaddr_in addr4 = {
 		.sin_family = AF_INET,
 		.sin_port = htons(port),
-		{ 0 }, { 0 },
+		.sin_addr = IN4ADDR_ANY_INIT,
 	};
 	struct sockaddr_in6 addr6 = {
 		.sin6_family = AF_INET6,
 		.sin6_port = htons(port),
-		0, IN6ADDR_ANY_INIT, 0,
+		.sin6_addr = IN6ADDR_ANY_INIT,
 	};
 	const struct sockaddr *sa;
 	bool dual_stack = false;
@@ -162,8 +162,6 @@ int sock_l4(const struct ctx *c, int af, uint8_t proto,
 	if (af == AF_INET) {
 		if (bind_addr)
 			addr4.sin_addr.s_addr = *(in_addr_t *)bind_addr;
-		else
-			addr4.sin_addr.s_addr = htonl(INADDR_ANY);
 
 		sa = (const struct sockaddr *)&addr4;
 		sl = sizeof(addr4);
@@ -174,8 +172,6 @@ int sock_l4(const struct ctx *c, int af, uint8_t proto,
 			if (!memcmp(bind_addr, &c->ip6.addr_ll,
 			    sizeof(c->ip6.addr_ll)))
 				addr6.sin6_scope_id = c->ifi6;
-		} else {
-			addr6.sin6_addr = in6addr_any;
 		}
 
 		sa = (const struct sockaddr *)&addr6;
-- 
@@ -105,12 +105,12 @@ int sock_l4(const struct ctx *c, int af, uint8_t proto,
 	struct sockaddr_in addr4 = {
 		.sin_family = AF_INET,
 		.sin_port = htons(port),
-		{ 0 }, { 0 },
+		.sin_addr = IN4ADDR_ANY_INIT,
 	};
 	struct sockaddr_in6 addr6 = {
 		.sin6_family = AF_INET6,
 		.sin6_port = htons(port),
-		0, IN6ADDR_ANY_INIT, 0,
+		.sin6_addr = IN6ADDR_ANY_INIT,
 	};
 	const struct sockaddr *sa;
 	bool dual_stack = false;
@@ -162,8 +162,6 @@ int sock_l4(const struct ctx *c, int af, uint8_t proto,
 	if (af == AF_INET) {
 		if (bind_addr)
 			addr4.sin_addr.s_addr = *(in_addr_t *)bind_addr;
-		else
-			addr4.sin_addr.s_addr = htonl(INADDR_ANY);
 
 		sa = (const struct sockaddr *)&addr4;
 		sl = sizeof(addr4);
@@ -174,8 +172,6 @@ int sock_l4(const struct ctx *c, int af, uint8_t proto,
 			if (!memcmp(bind_addr, &c->ip6.addr_ll,
 			    sizeof(c->ip6.addr_ll)))
 				addr6.sin6_scope_id = c->ifi6;
-		} else {
-			addr6.sin6_addr = in6addr_any;
 		}
 
 		sa = (const struct sockaddr *)&addr6;
-- 
2.43.0


  parent reply	other threads:[~2023-12-07 14:31 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-07 14:31 [PATCH 0/8] Small cleanups related to addresses and binding David Gibson
2023-12-07 14:31 ` [PATCH 1/8] tcp: Fix address type for tcp_sock_init_af() David Gibson
2023-12-27 20:25   ` Stefano Brivio
2023-12-28  2:42     ` David Gibson
2023-12-28 10:11       ` Stefano Brivio
2024-01-07  5:35         ` David Gibson
2024-01-13 22:50           ` Stefano Brivio
2023-12-07 14:31 ` [PATCH 2/8] treewide: Use IN4ADDR_LOOPBACK_INIT more widely David Gibson
2023-12-07 14:31 ` [PATCH 3/8] treewide: Add IN4ADDR_ANY_INIT macro David Gibson
2023-12-07 14:31 ` [PATCH 4/8] util: Use htonl_constant() in more places David Gibson
2023-12-07 14:31 ` David Gibson [this message]
2023-12-27 20:25   ` [PATCH 5/8] util: Improve sockaddr initialisation in sock_l4() Stefano Brivio
2024-01-07  5:34     ` David Gibson
2023-12-07 14:31 ` [PATCH 6/8] icmp: Avoid unnecessary handling of unspecified bind address David Gibson
2023-12-07 14:31 ` [PATCH 7/8] treewide: Avoid in_addr_t David Gibson
2023-12-07 14:31 ` [PATCH 8/8] util: Make sock_l4() treat empty string ifname like NULL David Gibson
2023-12-27 20:25 ` [PATCH 0/8] Small cleanups related to addresses and binding Stefano Brivio

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231207143140.1851378-6-david@gibson.dropbear.id.au \
    --to=david@gibson.dropbear.id.au \
    --cc=passt-dev@passt.top \
    --cc=sbrivio@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).