From 80cc6bf6d0f9b86603e5181cdf11d984dded89cc Mon Sep 17 00:00:00 2001 From: Masashi Honma Date: Wed, 26 Aug 2009 23:40:51 +0300 Subject: [PATCH] OpenBSD: wired IEEE 802.1X for OpenBSD 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 | 4 ++-- src/utils/common.h | 11 +++++++++-- src/utils/os_unix.c | 3 ++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/drivers/driver_wired.c b/src/drivers/driver_wired.c index 29812644f..2fd46457e 100644 --- a/src/drivers/driver_wired.c +++ b/src/drivers/driver_wired.c @@ -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]"); diff --git a/src/utils/common.h b/src/utils/common.h index d0a2eb3e6..e6a0f899d 100644 --- a/src/utils/common.h +++ b/src/utils/common.h @@ -22,17 +22,24 @@ #include #endif /* __linux__ */ -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || \ + defined(__OpenBSD__) #include #include #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 diff --git a/src/utils/os_unix.c b/src/utils/os_unix.c index 060892d40..bc2fc40dd 100644 --- a/src/utils/os_unix.c +++ b/src/utils/os_unix.c @@ -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