Index | Thread | Search

From:
Klemens Nanni <kn@openbsd.org>
Subject:
vmd: simpler ifaliasreq sockaddr filling
To:
OpenBSD tech <tech@openbsd.org>
Date:
Thu, 21 Nov 2024 18:49:37 +0000

Download raw body.

Thread
This is more than needed to fill the ioctl request struct's members,
so I suggest a more idiomatic approach.

Works for me.

Feedback? OK?

Index: priv.c
===================================================================
RCS file: /cvs/src/usr.sbin/vmd/priv.c,v
diff -u -p -r1.26 priv.c
--- priv.c	7 Oct 2024 04:29:01 -0000	1.26
+++ priv.c	7 Oct 2024 04:31:10 -0000
@@ -189,14 +189,10 @@ priv_dispatch_parent(int fd, struct priv
 		/* Set the interface address */
 		strlcpy(ifra.ifra_name, vfr.vfr_name, sizeof(ifra.ifra_name));
 
-		ifra.ifra_addr.sa_len =
-		    ifra.ifra_mask.sa_len =
-		    sizeof(struct sockaddr_in);
-
 		memcpy(&ifra.ifra_addr, &vfr.vfr_addr,
-		    ifra.ifra_addr.sa_len);
+		    sizeof(ifra.ifra_addr));
 		memcpy(&ifra.ifra_mask, &vfr.vfr_mask,
-		    ifra.ifra_mask.sa_len);
+		    sizeof(ifra.ifra_mask));
 
 		if (ioctl(env->vmd_fd, SIOCAIFADDR, &ifra) == -1)
 			log_warn("SIOCAIFADDR");
@@ -212,14 +208,10 @@ priv_dispatch_parent(int fd, struct priv
 		strlcpy(in6_ifra.ifra_name, vfr.vfr_name,
 		    sizeof(in6_ifra.ifra_name));
 
-		in6_ifra.ifra_addr.sin6_len =
-		    in6_ifra.ifra_prefixmask.sin6_len =
-		    sizeof(struct sockaddr_in6);
-
 		memcpy(&in6_ifra.ifra_addr, &vfr.vfr_addr,
-		    in6_ifra.ifra_addr.sin6_len);
+		    sizeof(in6_ifra.ifra_addr));
 		memcpy(&in6_ifra.ifra_prefixmask, &vfr.vfr_mask,
-		    in6_ifra.ifra_prefixmask.sin6_len);
+		    sizeof(in6_ifra.ifra_prefixmask));
 		in6_ifra.ifra_prefixmask.sin6_scope_id = 0;
 
 		in6_ifra.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME;