Build a karma variant of madwifi
SVN-Revision: 9316
This commit is contained in:
parent
58b8ecdf0d
commit
93c450a043
2 changed files with 116 additions and 0 deletions
|
@ -103,6 +103,17 @@ define KernelPackage/madwifi/description
|
|||
This package contains a driver for Atheros 802.11a/b/g chipsets.
|
||||
endef
|
||||
|
||||
define KernelPackage/madwifi-karma
|
||||
$(call KernelPackage/madwifi)
|
||||
TITLE:=Madwifi for Karma support
|
||||
URL:=http://www.digininja.org/
|
||||
endef
|
||||
|
||||
define KernelPackage/madwifi-karma/description
|
||||
This package contains a modified driver to be used with
|
||||
the Karma software for Atheros 802.11a/b/g chipsets.
|
||||
endef
|
||||
|
||||
MAKE_ARGS:= \
|
||||
PATH="$(TARGET_PATH)" \
|
||||
ARCH="$(LINUX_KARCH)" \
|
||||
|
@ -135,6 +146,9 @@ endif
|
|||
|
||||
define Build/Configure
|
||||
$(SED) 's,-E[LB] ,,g' $(PKG_BUILD_DIR)/hal/public/*.inc
|
||||
ifneq ($(CONFIG_PACKAGE_kmod-madwifi-karma),)
|
||||
$(PATCH) $(PKG_BUILD_DIR) ./files
|
||||
endif
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
|
@ -160,4 +174,12 @@ define KernelPackage/madwifi/install
|
|||
$(CP) $(PKG_BUILD_DIR)/tools/{madwifi_multi,80211stats,athchans,athctrl,athkey,athstats,wlanconfig} $(1)/usr/sbin/
|
||||
endef
|
||||
|
||||
define KernelPackage/madwifi-karma/install
|
||||
$(INSTALL_DIR) $(1)/lib/wifi
|
||||
$(INSTALL_DATA) ./files/lib/wifi/madwifi.sh $(1)/lib/wifi
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(CP) $(PKG_BUILD_DIR)/tools/{madwifi_multi,80211stats,athchans,athctrl,athkey,athstats,wlanconfig} $(1)/usr/sbin/
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,madwifi))
|
||||
$(eval $(call KernelPackage,madwifi-karma))
|
||||
|
|
94
package/madwifi/files/karma.patch
Normal file
94
package/madwifi/files/karma.patch
Normal file
|
@ -0,0 +1,94 @@
|
|||
diff -urN madwifi-ng-r2568-20070710/net80211/ieee80211_input.c madwifi-ng-r2568-20070710.new/net80211/ieee80211_input.c
|
||||
--- madwifi-ng-r2568-20070710/net80211/ieee80211_input.c 2007-10-14 12:52:10.000000000 +0200
|
||||
+++ madwifi-ng-r2568-20070710.new/net80211/ieee80211_input.c 2007-10-14 12:57:27.000000000 +0200
|
||||
@@ -1625,7 +1625,8 @@
|
||||
} while (0)
|
||||
|
||||
#ifdef IEEE80211_DEBUG
|
||||
-static void
|
||||
+/* Not used by karma
|
||||
+ * static void
|
||||
ieee80211_ssid_mismatch(struct ieee80211vap *vap, const char *tag,
|
||||
u_int8_t mac[IEEE80211_ADDR_LEN], u_int8_t *ssid)
|
||||
{
|
||||
@@ -1634,7 +1635,7 @@
|
||||
ieee80211_print_essid(ssid + 2, ssid[1]);
|
||||
printf("\n");
|
||||
}
|
||||
-
|
||||
+*/
|
||||
#define IEEE80211_VERIFY_SSID(_ni, _ssid) do { \
|
||||
if ((_ssid)[1] != 0 && \
|
||||
((_ssid)[1] != (_ni)->ni_esslen || \
|
||||
@@ -2993,7 +2994,8 @@
|
||||
return;
|
||||
IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_MAXSIZE);
|
||||
IEEE80211_VERIFY_ELEMENT(ssid, IEEE80211_NWID_LEN);
|
||||
- IEEE80211_VERIFY_SSID(vap->iv_bss, ssid);
|
||||
+ // KARMA: Don't verify SSID on Probe Requests
|
||||
+ //IEEE80211_VERIFY_SSID(vap->iv_bss, ssid);
|
||||
if ((vap->iv_flags & IEEE80211_F_HIDESSID) && ssid[1] == 0) {
|
||||
IEEE80211_DISCARD(vap, IEEE80211_MSG_INPUT,
|
||||
wh, ieee80211_mgt_subtype_name[subtype >>
|
||||
@@ -3041,6 +3043,12 @@
|
||||
IEEE80211_FC0_SUBTYPE_SHIFT],
|
||||
"%s", "recv'd rate set invalid");
|
||||
} else {
|
||||
+ // KARMA: Print the probe response if in adhoc mode
|
||||
+ if (vap->iv_opmode == IEEE80211_M_IBSS) {
|
||||
+ printf ("KARMA: Probe response for [");
|
||||
+ ieee80211_print_essid(ssid + 2, ssid[1]);
|
||||
+ printf ("]\n");
|
||||
+ }
|
||||
IEEE80211_SEND_MGMT(ni,
|
||||
IEEE80211_FC0_SUBTYPE_PROBE_RESP, 0);
|
||||
}
|
||||
@@ -3229,7 +3237,8 @@
|
||||
return;
|
||||
IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_MAXSIZE);
|
||||
IEEE80211_VERIFY_ELEMENT(ssid, IEEE80211_NWID_LEN);
|
||||
- IEEE80211_VERIFY_SSID(vap->iv_bss, ssid);
|
||||
+ // KARMA: Don't verify SSID on Association Requests
|
||||
+ //IEEE80211_VERIFY_SSID(vap->iv_bss, ssid);
|
||||
|
||||
if (ni == vap->iv_bss) {
|
||||
IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_ANY, wh->i_addr2,
|
||||
@@ -3408,6 +3417,13 @@
|
||||
|
||||
/* Send TGf L2UF frame on behalf of newly associated station */
|
||||
ieee80211_deliver_l2uf(ni);
|
||||
+
|
||||
+ // KARMA: Log SSID that client thinks they are associating to
|
||||
+ printf("KARMA: Node [%s] associating to ssid [",
|
||||
+ ether_sprintf(wh->i_addr2));
|
||||
+ ieee80211_print_essid(ssid + 2, ssid[1]);
|
||||
+ printf("]\n");
|
||||
+
|
||||
ieee80211_node_join(ni, resp);
|
||||
#ifdef ATH_SUPERG_XR
|
||||
if (ni->ni_prev_vap &&
|
||||
diff -urN madwifi-ng-r2568-20070710/net80211/ieee80211_output.c madwifi-ng-r2568-20070710.new/net80211/ieee80211_output.c
|
||||
--- madwifi-ng-r2568-20070710/net80211/ieee80211_output.c 2007-10-14 12:52:10.000000000 +0200
|
||||
+++ madwifi-ng-r2568-20070710.new/net80211/ieee80211_output.c 2007-10-14 12:58:53.000000000 +0200
|
||||
@@ -1876,10 +1876,17 @@
|
||||
*(__le16 *)frm = htole16(capinfo);
|
||||
frm += 2;
|
||||
|
||||
- /* ssid */
|
||||
- frm = ieee80211_add_ssid(frm, vap->iv_bss->ni_essid,
|
||||
- vap->iv_bss->ni_esslen);
|
||||
-
|
||||
+ // KARMA: If argument is specified, on PROBE_RESP, it is
|
||||
+ // the SSID to use in the response which is the same SSID
|
||||
+ // has the client sent).
|
||||
+ if (arg) {
|
||||
+ u_int8_t* ssid = (u_int8_t*)arg;
|
||||
+ frm = ieee80211_add_ssid(frm, ssid + 2, ssid[1]);
|
||||
+ } else {
|
||||
+ /* ssid */
|
||||
+ frm = ieee80211_add_ssid(frm, vap->iv_bss->ni_essid,
|
||||
+ vap->iv_bss->ni_esslen);
|
||||
+ }
|
||||
/* supported rates */
|
||||
frm = ieee80211_add_rates(frm, &ni->ni_rates);
|
||||
|
Loading…
Reference in a new issue