From: Mike Larkin Subject: Re: vmd: simpler ifaliasreq sockaddr filling To: Klemens Nanni Cc: OpenBSD tech Date: Thu, 21 Nov 2024 13:14:03 -0800 On Thu, Nov 21, 2024 at 06:49:37PM +0000, Klemens Nanni wrote: > 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? sure > > 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; >