[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