From: Klemens Nanni Subject: vmd: simpler ifaliasreq sockaddr filling To: OpenBSD tech Date: Thu, 21 Nov 2024 18:49:37 +0000 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;