NetBSD: Fix wired IEEE 802.1X problem
authorMasashi Honma <honma@ictec.co.jp>
Sat, 15 Aug 2009 17:59:16 +0000 (20:59 +0300)
committerJouni Malinen <j@w1.fi>
Sat, 15 Aug 2009 17:59:16 +0000 (20:59 +0300)
On NetBSD 5.0, when I use wired 802.1X, "Invalid argument" occurs
on SIOCADDMULTI ioctl and 802.1X fails.

I tried FreeBSD code, but "Address family not supported by protocol family"
occurs on SIOCADDMULTI ioctl and 802.1X fails, too.

This patch solves this issue.

I have tested with these:
OS : NetBSD 5.0
EAP : EAP-MD5
Switch : CentreCOM 8724SL

src/drivers/driver_wired.c

index a3657e5..2981264 100644 (file)
@@ -474,6 +474,15 @@ static int wpa_driver_wired_multi(const char *ifname, const u8 *addr, int add)
                os_memcpy(LLADDR(dlp), addr, ETH_ALEN);
        }
 #endif /* __FreeBSD__ */
+#ifdef __NetBSD__
+       {
+               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 /* __NetBSD__ */
 
        if (ioctl(s, add ? SIOCADDMULTI : SIOCDELMULTI, (caddr_t) &ifr) < 0) {
                perror("ioctl[SIOC{ADD/DEL}MULTI]");