#
-# Copyright (C) 2006-2010 OpenWrt.org
+# Copyright (C) 2006-2011 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=aircrack-ng
PKG_VERSION:=1.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.aircrack-ng.org/ \
--- /dev/null
+--- a/src/aireplay-ng.c
++++ b/src/aireplay-ng.c
+@@ -200,7 +200,9 @@ char usage[] =
+ "\n"
+ " Miscellaneous options:\n"
+ "\n"
+-" -R : disable /dev/rtc usage\n"
++" -R : disable /dev/rtc usage\n"
++" --ignore-negative-one : if the interface's channel can't be determined,\n"
++" ignore the mismatch, needed for unpatched cfg80211\n"
+ "\n"
+ " Attack modes (numbers can still be used):\n"
+ "\n"
+@@ -268,6 +270,7 @@ struct options
+ int bittest;
+
+ int nodetect;
++ int ignore_negative_one;
+ int rtc;
+ }
+ opt;
+@@ -715,6 +718,13 @@ int attack_check(uchar* bssid, char* ess
+
+ iface_chan = wi_get_channel(wi);
+
++ if(iface_chan == -1 && !opt.ignore_negative_one)
++ {
++ PCT; printf("Couldn't determine current channel for %s, you should either force the operation with --ignore-negative-one or apply a kernel patch\n",
++ wi_get_ifname(wi));
++ return -1;
++ }
++
+ if(bssid != NULL)
+ {
+ ap_chan = wait_for_beacon(bssid, capa, essid);
+@@ -723,7 +733,7 @@ int attack_check(uchar* bssid, char* ess
+ PCT; printf("No such BSSID available.\n");
+ return -1;
+ }
+- if(ap_chan != iface_chan)
++ if((ap_chan != iface_chan) && (iface_chan != -1 || !opt.ignore_negative_one))
+ {
+ PCT; printf("%s is on channel %d, but the AP uses channel %d\n", wi_get_ifname(wi), iface_chan, ap_chan);
+ return -1;
+@@ -5765,6 +5775,7 @@ int main( int argc, char *argv[] )
+ {"help", 0, 0, 'H'},
+ {"fast", 0, 0, 'F'},
+ {"bittest", 0, 0, 'B'},
++ {"ignore-negative-one", 0, &opt.ignore_negative_one, 1},
+ {0, 0, 0, 0 }
+ };
+