This problem has already occured in NetBSD.
http://lists.shmoo.com/pipermail/hostap/2009-August/020080.html
I have created a new diff for OpenBSD patch-driver_wired_c
(wpa_supplicant) which works fine.
--- original/driver_wired.c Sun Dec 31 04:28:05 2006
+++ driver_wired.c Fri May 18 02:06:07 2007
@@ -18,7 +18,7 @@
#ifdef __linux__
#include <netpacket/packet.h>
#endif /* __linux__ */
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__OpenBSD__)
#include <net/if_dl.h>
#endif /* __FreeBSD__ */
@@ -132,6 +132,15 @@
os_memcpy(LLADDR(dlp), addr, ETH_ALEN);
}
#endif /* __FreeBSD__ */
+#ifdef __OpenBSD__
+ {
+ struct sockaddr *sap;
+ sap = (struct sockaddr *) &ifr.ifr_addr;
+ sap->sa_len = sizeof(struct sockaddr);
+ sap->sa_family = AF_UNSPEC;
+ os_memcpy(sap->sa_data, addr, ETH_ALEN);
+ }
+#endif /* __OpenBSD __ */
if (ioctl(s, add ? SIOCADDMULTI : SIOCDELMULTI, (caddr_t) &ifr) < 0) {
perror("ioctl[SIOC{ADD/DEL}MULTI]");