From: Ido Subject: Re: ia_sockmask.sin_family is not set correctly To: Claudio Jeker Cc: tech@openbsd.org Date: Mon, 22 Jun 2026 13:21:08 -0400 On 2026-06-22, Ido wrote: > However, I suspect it might actually be sufficient to set it only in the two > if (ai == NULL) { > } > blocks, in in_ioctl_set_ifaddr() and in_ioctl_change_ifaddr() where we allocate > a new in_ifaddr. I'll follow up with an alternative diff that does just that. diff --git sys/netinet/in.c sys/netinet/in.c index 4edd8573071..77e7db0f68e 100644 --- sys/netinet/in.c +++ sys/netinet/in.c @@ -390,6 +390,7 @@ in_ioctl_set_ifaddr(u_long cmd, caddr_t data, struct ifnet *ifp) ia->ia_ifa.ifa_addr = sintosa(&ia->ia_addr); ia->ia_ifa.ifa_dstaddr = sintosa(&ia->ia_dstaddr); ia->ia_ifa.ifa_netmask = sintosa(&ia->ia_sockmask); + ia->ia_sockmask.sin_family = AF_INET; ia->ia_sockmask.sin_len = 8; if (ifp->if_flags & IFF_BROADCAST) { ia->ia_broadaddr.sin_len = sizeof(ia->ia_addr); @@ -484,6 +485,7 @@ in_ioctl_change_ifaddr(u_long cmd, caddr_t data, struct ifnet *ifp) ia->ia_ifa.ifa_addr = sintosa(&ia->ia_addr); ia->ia_ifa.ifa_dstaddr = sintosa(&ia->ia_dstaddr); ia->ia_ifa.ifa_netmask = sintosa(&ia->ia_sockmask); + ia->ia_sockmask.sin_family = AF_INET; ia->ia_sockmask.sin_len = 8; if (ifp->if_flags & IFF_BROADCAST) { ia->ia_broadaddr.sin_len = sizeof(ia->ia_addr);