packages/net/aircrack-ng/patches/100-add-ignore-channel-negative-1.patch
jow cee6e1c9ce [packages] aircrack-ng: implement --ignore-negative-one option to cope with cfg80211 monitor mode channel issues
git-svn-id: svn://svn.openwrt.org/openwrt/packages@26910 3c298f89-4303-0410-b956-a3cf2f4a3e73
2011-05-16 12:33:32 +00:00

53 lines
1.8 KiB
Diff

--- 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 }
};