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