OpenBSD: wired IEEE 802.1X for OpenBSD
authorMasashi Honma <honma@ictec.co.jp>
Wed, 26 Aug 2009 20:40:51 +0000 (23:40 +0300)
committerJouni Malinen <j@w1.fi>
Wed, 26 Aug 2009 20:40:51 +0000 (23:40 +0300)
This is a patch for OpenBSD wired IEEE 802.1X. This is only for wired,
not wireless, because OpenBSD uses wpa_supplicant only on wired now.

http://www.openbsd.org/cgi-bin/cvsweb/ports/security/wpa_supplicant/

I have tested with these.
OS : OpenBSD 4.5
EAP : EAP-TLS
Switch : CentreCOM 8724SL

src/drivers/driver_wired.c
src/utils/common.h
src/utils/os_unix.c

index 2981264..2fd4645 100644 (file)
@@ -474,7 +474,7 @@ 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__
+#if defined(__NetBSD__) || defined(__OpenBSD__)
        {
                struct sockaddr *sap;
                sap = (struct sockaddr *) &ifr.ifr_addr;
@@ -482,7 +482,7 @@ static int wpa_driver_wired_multi(const char *ifname, const u8 *addr, int add)
                sap->sa_family = AF_UNSPEC;
                os_memcpy(sap->sa_data, addr, ETH_ALEN);
        }
-#endif /* __NetBSD__ */
+#endif /* defined(__NetBSD__) || defined(__OpenBSD__) */
 
        if (ioctl(s, add ? SIOCADDMULTI : SIOCDELMULTI, (caddr_t) &ifr) < 0) {
                perror("ioctl[SIOC{ADD/DEL}MULTI]");
index d0a2eb3..e6a0f89 100644 (file)
 #include <byteswap.h>
 #endif /* __linux__ */
 
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || \
+    defined(__OpenBSD__)
 #include <sys/types.h>
 #include <sys/endian.h>
 #define __BYTE_ORDER   _BYTE_ORDER
 #define        __LITTLE_ENDIAN _LITTLE_ENDIAN
 #define        __BIG_ENDIAN    _BIG_ENDIAN
+#ifdef __OpenBSD__
+#define bswap_16 swap16
+#define bswap_32 swap32
+#define bswap_64 swap64
+#else /* __OpenBSD__ */
 #define bswap_16 bswap16
 #define bswap_32 bswap32
 #define bswap_64 bswap64
+#endif /* __OpenBSD__ */
 #endif /* defined(__FreeBSD__) || defined(__NetBSD__) ||
-       * defined(__DragonFly__) */
+       * defined(__DragonFly__) || defined(__OpenBSD__) */
 
 #ifdef __APPLE__
 #include <sys/types.h>
index 060892d..bc2fc40 100644 (file)
@@ -227,7 +227,8 @@ int os_setenv(const char *name, const char *value, int overwrite)
 
 int os_unsetenv(const char *name)
 {
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__)
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) || \
+    defined(__OpenBSD__)
        unsetenv(name);
        return 0;
 #else