[Voyage-linux] How to compile hostapd-0.4.6 and
wpa_supplicant-0.4.6 for madwifi-ng (1314)
Beat Meier
bmeier at infovia.com.ar
Wed Nov 9 23:13:21 HKT 2005
Skipped content of type multipart/alternative-------------- next part --------------
--- old/Makefile 2005-10-28 00:28:33.000000000 -0300
+++ new/Makefile 2005-11-08 20:08:47.000000000 -0300
@@ -50,6 +50,10 @@
CONFIG_L2_PACKET=y
endif
+ifdef CONFIG_DRIVER_MADWIFI_NG
+CFLAGS += -DCONFIG_DRIVER_MADWIFI_NG
+endif
+
ifdef CONFIG_DRIVER_PRISM54
CFLAGS += -DCONFIG_DRIVER_PRISM54
OBJS += driver_prism54.o
@@ -192,7 +196,7 @@
fi
install: all
- for i in $(ALL); do cp $$i /usr/local/bin/$$i; done
+ for i in $(ALL); do cp $$i $(PREFIX)/sbin/$$i; done
hostapd: $(OBJS)
$(CC) -o hostapd $(OBJS) $(LIBS)
--- old/defconfig 2005-09-17 14:27:42.000000000 -0300
+++ new/defconfig 2005-11-08 20:11:30.000000000 -0300
@@ -15,8 +15,16 @@
# Driver interface for wired authenticator
#CONFIG_DRIVER_WIRED=y
-# Driver interface for madwifi driver
+# Driver interface for obsolete madwifi driver from http://sourceforge.net/projects/madwifi/
+# Must be enabled if CONFIG_DRIVER_MADWIFI_NG is used
#CONFIG_DRIVER_MADWIFI=y
+# Driver interface for new madwifi driver from http://www.madwifi.org
+# Don't forget to enable also CONFIG_DRIVER_MADWIFI
+#CONFIG_DRIVER_MADWIFI_NG=y
+#CFLAGS += -I../head # change to reflect local setup; directory for madwifi src
+
+# Driver interface for new madwifi driver from http://www.madwifi.org
+#CONFIG_DRIVER_MADWIFI_NG=y
#CFLAGS += -I../head # change to reflect local setup; directory for madwifi src
# Driver interface for Prism54 driver
--- old/driver_madwifi.c 2005-10-21 00:45:52.000000000 -0300
+++ ndw/driver_madwifi.c 2005-11-08 18:35:27.000000000 -0300
@@ -97,27 +97,50 @@
}
if (ioctl(drv->ioctl_sock, op, &iwr) < 0) {
+#ifndef CONFIG_DRIVER_MADWIFI_NG
+ static const char *opnames[] = {
+ "ioctl[IEEE80211_IOCTL_SETPARAM]",
+ "ioctl[IEEE80211_IOCTL_GETPARAM]",
+ "ioctl[IEEE80211_IOCTL_SETKEY]",
+ "ioctl[SIOCIWFIRSTPRIV+3]",
+ "ioctl[IEEE80211_IOCTL_DELKEY]",
+ "ioctl[SIOCIWFIRSTPRIV+5]",
+ "ioctl[IEEE80211_IOCTL_SETMLME]",
+ "ioctl[SIOCIWFIRSTPRIV+7]",
+ "ioctl[IEEE80211_IOCTL_SETOPTIE]",
+ "ioctl[IEEE80211_IOCTL_GETOPTIE]",
+ "ioctl[IEEE80211_IOCTL_ADDMAC]",
+ "ioctl[SIOCIWFIRSTPRIV+11]",
+ "ioctl[IEEE80211_IOCTL_DELMAC]",
+ "ioctl[SIOCIWFIRSTPRIV+13]",
+ "ioctl[IEEE80211_IOCTL_CHANLIST]",
+ "ioctl[SIOCIWFIRSTPRIV+15]",
+ "ioctl[IEEE80211_IOCTL_GETRSN]",
+ "ioctl[SIOCIWFIRSTPRIV+17]",
+ "ioctl[IEEE80211_IOCTL_GETKEY]",
+ };
+#else
static const char *opnames[] = {
"ioctl[IEEE80211_IOCTL_SETPARAM]",
"ioctl[IEEE80211_IOCTL_GETPARAM]",
"ioctl[IEEE80211_IOCTL_SETKEY]",
- "ioctl[SIOCIWFIRSTPRIV+3]",
+ "ioctl[IEEE80211_IOCTL_SETWMMPARAMS]",
"ioctl[IEEE80211_IOCTL_DELKEY]",
- "ioctl[SIOCIWFIRSTPRIV+5]",
+ "ioctl[IEEE80211_IOCTL_GETWMMPARAMS]",
"ioctl[IEEE80211_IOCTL_SETMLME]",
- "ioctl[SIOCIWFIRSTPRIV+7]",
+ "ioctl[IEEE80211_IOCTL_GETCHANINFO]",
"ioctl[IEEE80211_IOCTL_SETOPTIE]",
"ioctl[IEEE80211_IOCTL_GETOPTIE]",
"ioctl[IEEE80211_IOCTL_ADDMAC]",
"ioctl[SIOCIWFIRSTPRIV+11]",
"ioctl[IEEE80211_IOCTL_DELMAC]",
- "ioctl[SIOCIWFIRSTPRIV+13]",
- "ioctl[IEEE80211_IOCTL_CHANLIST]",
+ "ioctl[IEEE80211_IOCTL_GETCHANLIST]",
+ "ioctl[IEEE80211_IOCTL_SETCHANLIST]",
"ioctl[SIOCIWFIRSTPRIV+15]",
- "ioctl[IEEE80211_IOCTL_GETRSN]",
- "ioctl[SIOCIWFIRSTPRIV+17]",
- "ioctl[IEEE80211_IOCTL_GETKEY]",
+ "ioctl[IEEE80211_IOCTL_SETMODE]",
+ "ioctl[IEEE80211_IOCTL_GETMODE]",
};
+#endif
op -= SIOCIWFIRSTPRIV;
if (0 <= op && op < N(opnames))
perror(opnames[op]);
@@ -505,7 +528,11 @@
*/
memset(&stats, 0, sizeof(stats));
memcpy(stats.is_u.macaddr, addr, IEEE80211_ADDR_LEN);
- if (set80211priv(drv, IEEE80211_IOCTL_GETSTASTATS, &stats,
+#ifndef CONFIG_DRIVER_MADWIFI_NG
+ if (set80211priv(drv, IEEE80211_IOCTL_GETSTASTATS, &stats,
+#else
+ if (set80211priv(drv, IEEE80211_IOCTL_STA_STATS, &stats,
+#endif
sizeof(stats))) {
if (memcmp(addr, drv->acct_mac, ETH_ALEN) == 0) {
memcpy(data, &drv->acct_data, sizeof(*data));
-------------- next part --------------
--- old/Makefile 2005-10-28 00:28:30.000000000 -0300
+++ new/Makefile 2005-11-08 17:30:55.000000000 -0300
@@ -84,6 +84,12 @@
CONFIG_WIRELESS_EXTENSION=y
endif
+ifdef CONFIG_DRIVER_MADWIFI_NG
+CFLAGS += -DCONFIG_DRIVER_MADWIFI -DCONFIG_DRIVER_MADWIFI_NG
+OBJS_d += driver_madwifi.o
+CONFIG_WIRELESS_EXTENSION=y
+endif
+
ifdef CONFIG_DRIVER_ATMEL
CFLAGS += -DCONFIG_DRIVER_ATMEL
OBJS_d += driver_atmel.o
--- old/defconfig 2005-11-08 17:35:05.000000000 -0300
+++ new/defconfig 2005-11-08 17:37:58.000000000 -0300
@@ -44,11 +44,16 @@
#CFLAGS += -I../../hcf -I../../include -I../../include/hcf
#CFLAGS += -I../../include/wireless
-# Driver interface for madwifi driver
+# Driver interface for obsolete madwifi driver from http://sourceforge.net/projects/madwifi/
#CONFIG_DRIVER_MADWIFI=y
# Change include directories to match with the local setup
#CFLAGS += -I../madwifi/wpa
+# Driver interface for new madwifi driver from http://www.madwifi.org
+#CONFIG_DRIVER_MADWIFI_NG=y
+# Change include directories to match with the local setup
+#CFLAGS += -I../madwifi-ng/wpa
+
# Driver interface for Prism54 driver
# (Note: Prism54 is not yet supported, i.e., this will not work as-is and is
# for developers only)
--- old/driver_madwifi.c 2005-10-21 02:25:13.000000000 -0300
+++ new/driver_madwifi.c 2005-11-08 18:07:16.000000000 -0300
@@ -69,6 +69,7 @@
}
if (ioctl(drv->sock, op, &iwr) < 0) {
+#ifndef CONFIG_DRIVER_MADWIFI_NG
if (show_err) {
static const char *opnames[] = {
"ioctl[IEEE80211_IOCTL_SETPARAM]",
@@ -93,6 +94,35 @@
else
perror("ioctl[unknown???]");
}
+#else CONFIG_DRIVER_MADWIFI_NG
+ if (show_err) {
+ static const char *opnames[] = {
+ "ioctl[IEEE80211_IOCTL_SETPARAM]",
+ "ioctl[IEEE80211_IOCTL_GETPARAM]",
+ "ioctl[IEEE80211_IOCTL_SETKEY]",
+ "ioctl[IEEE80211_IOCTL_SETWMMPARAMS]",
+ "ioctl[IEEE80211_IOCTL_DELKEY]",
+ "ioctl[IEEE80211_IOCTL_GETWMMPARAMS]",
+ "ioctl[IEEE80211_IOCTL_SETMLME]",
+ "ioctl[IEEE80211_IOCTL_GETCHANINFO]",
+ "ioctl[IEEE80211_IOCTL_SETOPTIE]",
+ "ioctl[IEEE80211_IOCTL_GETOPTIE]",
+ "ioctl[IEEE80211_IOCTL_ADDMAC]",
+ NULL,
+ "ioctl[IEEE80211_IOCTL_DELMAC]",
+ "ioctl[IEEE80211_IOCTL_GETCHANLIST]",
+ "ioctl[IEEE80211_IOCTL_SETCHANLIST]",
+ NULL,
+ "ioctl[IEEE80211_IOCTL_SETMODE]",
+ "ioctl[IEEE80211_IOCTL_GETMODE]",
+ };
+ if (IEEE80211_IOCTL_SETPARAM <= op &&
+ op <= IEEE80211_IOCTL_GETMODE)
+ perror(opnames[op - SIOCIWFIRSTPRIV]);
+ else
+ perror("ioctl[unknown???]");
+ }
+#endif
return -1;
}
return 0;
@@ -356,23 +386,7 @@
wpa_driver_madwifi_scan(void *priv, const u8 *ssid, size_t ssid_len)
{
struct wpa_driver_madwifi_data *drv = priv;
- struct iwreq iwr;
-
- memset(&iwr, 0, sizeof(iwr));
- strncpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
-
- /* set desired ssid before scan */
- /* FIX: scan should not break the current association, so using
- * set_ssid may not be the best way of doing this.. */
- if (wpa_driver_wext_set_ssid(drv->wext, ssid, ssid_len) < 0)
- return -1;
-
- if (ioctl(drv->sock, SIOCSIWSCAN, &iwr) < 0) {
- perror("ioctl[SIOCSIWSCAN]");
- return -1;
- }
- /* NB: madwifi delivers a scan complete event so no need to poll */
- return 0;
+ return wpa_driver_wext_scan(drv->wext, ssid, ssid_len);
}
static int wpa_driver_madwifi_get_bssid(void *priv, u8 *bssid)
-------------- next part --------------
--- old/net80211/ieee80211_wireless.c 2005-11-09 10:23:36.000000000 -0300
+++ new/net80211/ieee80211_wireless.c 2005-11-08 15:36:21.000000000 -0300
@@ -2792,6 +2792,18 @@
ieee80211_node_unauthorize(ni);
ieee80211_free_node(ni);
break;
+ case IEEE80211_MLME_CLEAR_STATS:
+ if (vap->iv_opmode != IEEE80211_M_HOSTAP)
+ return -EINVAL;
+ ni = ieee80211_find_node(&ic->ic_sta, mlme->im_macaddr);
+ if (ni == NULL) {
+ return -ENOENT;
+ }
+ /* clear statistics */
+ memset(&ni->ni_stats, 0, sizeof(struct ieee80211_nodestats));
+ ieee80211_free_node(ni);
+ break;
+
default:
return -EINVAL;
}
--- old/net80211/ieee80211_ioctl.h 2005-11-09 10:23:36.000000000 -0300
+++ new/net80211/ieee80211_ioctl.h 2005-11-08 19:34:48.000000000 -0300
@@ -41,6 +41,10 @@
#include <net80211/ieee80211.h>
#include <net80211/ieee80211_crypto.h>
+#ifndef __KERNEL__
+#include <net/if.h>
+#endif
+
/*
* Per/node (station) statistics available when operating as an AP.
*/
@@ -238,6 +242,7 @@
#define IEEE80211_MLME_DEAUTH 3 /* deauthenticate station */
#define IEEE80211_MLME_AUTHORIZE 4 /* authorize station */
#define IEEE80211_MLME_UNAUTHORIZE 5 /* unauthorize station */
+#define IEEE80211_MLME_CLEAR_STATS 6 /* clear station statistic */
u_int16_t im_reason; /* 802.11 reason code */
u_int8_t im_macaddr[IEEE80211_ADDR_LEN];
};
More information about the Voyage-linux
mailing list