Download raw body.
vmd: simpler ifaliasreq sockaddr filling
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;
>
vmd: simpler ifaliasreq sockaddr filling