[kismac] [binaervarianz] r236 - in trunk/Sources: Core WaveDrivers
- From: svn@xxxxxxxxxxxxxxxx
- To: kismac@xxxxxxxxxxxxx
- Date: Tue, 24 Apr 2007 08:50:35 +0200
Author: themacuser
Date: 2007-04-24 08:50:28 +0200 (Tue, 24 Apr 2007)
New Revision: 236
Modified:
trunk/Sources/Core/WaveHelper.m
trunk/Sources/WaveDrivers/WaveDriverAirportExtreme.m
Log:
Patch from #187 (from Kevin Ballard). Fixes AP Extreme Monitor Mode on intel
iMac with Broadcom card.
Modified: trunk/Sources/Core/WaveHelper.m
===================================================================
--- trunk/Sources/Core/WaveHelper.m 2007-04-24 05:07:49 UTC (rev 235)
+++ trunk/Sources/Core/WaveHelper.m 2007-04-24 06:50:28 UTC (rev 236)
@@ -226,7 +226,7 @@
if (![self isServiceAvailable:"AiroJackDriver"]) return NO;
else return YES;
case 4:
- if ([self isServiceAvailable:"AirPortDriver"] || [self
isServiceAvailable:"AirPortPCI"] || [self isServiceAvailable:"AirPortPCI_MM"]
|| [WaveHelper isServiceAvailable:"AirPort_Athr5424"]) return YES;
+ if ([self isServiceAvailable:"AirPortDriver"] || [self
isServiceAvailable:"AirPortPCI"] || [self isServiceAvailable:"AirPortPCI_MM"]
|| [self isServiceAvailable:"AirPort_Brcm43xx"] || [WaveHelper
isServiceAvailable:"AirPort_Athr5424"]) return YES;
else return NO;
default:
return NO;
Modified: trunk/Sources/WaveDrivers/WaveDriverAirportExtreme.m
===================================================================
--- trunk/Sources/WaveDrivers/WaveDriverAirportExtreme.m 2007-04-24
05:07:49 UTC (rev 235)
+++ trunk/Sources/WaveDrivers/WaveDriverAirportExtreme.m 2007-04-24
06:50:28 UTC (rev 236)
@@ -30,8 +30,12 @@
#import "Apple80211.h"
static bool explicitlyLoadedAirportExtremeDriver = NO;
+static NSString *airportExtremeBundleID = nil;
WirelessContextPtr gWCtxt = NULL;
+static NSString *kAppleAirPort2Path =
@"/System/Library/Extensions/AppleAirPort2.kext/Contents/Info.plist";
+static NSString *kAppleAirPortBrcm4311Path =
@"/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AppleAirPortBrcm4311.kext/Contents/Info.plist";
+
@implementation WaveDriverAirportExtreme
+ (enum WaveDriverType) type {
@@ -69,13 +73,14 @@
NSDictionary *dict;
NSData *fileData;
- fileData = [NSData
dataWithContentsOfFile:@"/System/Library/Extensions/AppleAirPort2.kext/Contents/Info.plist"];
+ fileData = [NSData dataWithContentsOfFile:kAppleAirPort2Path];
dict = [NSPropertyListSerialization propertyListFromData:fileData
mutabilityOption:kCFPropertyListImmutable format:NULL errorDescription:Nil];
if ([[dict valueForKeyPath:@"IOKitPersonalities.Broadcom
PCI.APMonitorMode"] boolValue]) return YES;
- fileData = [NSData
dataWithContentsOfFile:@"/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AppleAirPortBrcm4311.kext/Contents/Info.plist"];
+ fileData = [NSData dataWithContentsOfFile:kAppleAirPortBrcm4311Path];
dict = [NSPropertyListSerialization propertyListFromData:fileData
mutabilityOption:kCFPropertyListImmutable format:NULL errorDescription:Nil];
- if ([[dict valueForKeyPath:@"IOKitPersonalities.Broadcom
PCI.APMonitorMode"] boolValue]) return YES;
+ if ([[dict valueForKeyPath:@"IOKitPersonalities.Broadcom
PCI.APMonitorMode"] boolValue] ||
+ [[[[dict objectForKey:@"IOKitPersonalities"]
objectForKey:@"Broadcom 802.11 PCI"] objectForKey:@"APMonitorMode"] boolValue])
return YES;
return NO;
}
@@ -87,7 +92,10 @@
[NSThread sleep:1.0];
NSDictionary *dict = [NSPropertyListSerialization
propertyListFromData:[NSData dataWithContentsOfFile:fileName]
mutabilityOption:kCFPropertyListMutableContainers format:NULL
errorDescription:Nil];
- [dict setValue:[NSNumber numberWithBool:enable]
forKeyPath:@"IOKitPersonalities.Broadcom PCI.APMonitorMode"];
+ if ([dict valueForKeyPath:@"IOKitPersonalities.Broadcom PCI"])
+ [dict setValue:[NSNumber numberWithBool:enable]
forKeyPath:@"IOKitPersonalities.Broadcom PCI.APMonitorMode"];
+ if ([[dict objectForKey:@"IOKitPersonalities"] objectForKey:@"Broadcom
802.11 PCI"])
+ [[[dict objectForKey:@"IOKitPersonalities"]
objectForKey:@"Broadcom 802.11 PCI"] setValue:[NSNumber numberWithBool:enable]
forKey:@"APMonitorMode"];
[[NSPropertyListSerialization dataFromPropertyList:dict
format:kCFPropertyListXMLFormat_v1_0 errorDescription:nil] writeToFile:fileName
atomically:NO];
[[BLAuthentication sharedInstance] executeCommand:@"/bin/chmod"
withArgs:[NSArray arrayWithObjects:@"0644", fileName, nil]];
@@ -100,8 +108,8 @@
NSUserDefaults *defs;
defs = [NSUserDefaults standardUserDefaults];
- [WaveDriverAirportExtreme setMonitorMode:enable
forFile:@"/System/Library/Extensions/AppleAirPort2.kext/Contents/Info.plist"];
- [WaveDriverAirportExtreme setMonitorMode:enable
forFile:@"/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AppleAirPortBrcm4311.kext/Contents/Info.plist"];
+ [WaveDriverAirportExtreme setMonitorMode:enable
forFile:kAppleAirPort2Path];
+ [WaveDriverAirportExtreme setMonitorMode:enable
forFile:kAppleAirPortBrcm4311Path];
if ([[defs objectForKey:@"aeForever"] boolValue]) {
[[BLAuthentication sharedInstance] executeCommand:@"/bin/rm"
withArgs:[NSArray arrayWithObject:@"/System/Library/Extensions.kextcache"]];
@@ -113,7 +121,6 @@
+ (int) initBackend {
BOOL ret;
int x;
- NSString *kextFile;
NSUserDefaults *defs;
@@ -127,7 +134,7 @@
return 2;
}
- if(![WaveHelper isServiceAvailable:"AirPortPCI_MM"]) {
+ if(![WaveHelper isServiceAvailable:"AirPortPCI_MM"] && ![WaveHelper
isServiceAvailable:"AirPort_Brcm43xx"]) {
NSLog(@"User has no Broadcom card.");
NSRunCriticalAlertPanel(
NSLocalizedString(@"Could not enable Monitor Mode for Airport
Extreme.", "Error dialog title"),
@@ -138,10 +145,10 @@
if([[NSFileManager defaultManager]
fileExistsAtPath:@"/System/Library/Extensions/IO80211Family.kext"]) {
NSLog(@"Enabling for new Intel Mac");
- kextFile =
@"/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AppleAirPortBrcm4311.kext";
+ airportExtremeBundleID = @"com.apple.driver.AirPortBrcm43xx";
} else {
NSLog(@"Enabling for Mac of the old school");
- kextFile = @"/System/Library/Extensions/AppleAirPort2.kext";
+ airportExtremeBundleID = @"com.apple.iokit.AppleAirPort2";
}
@@ -162,7 +169,7 @@
return 2;
}
- ret = [[BLAuthentication sharedInstance]
executeCommand:@"/sbin/kextunload" withArgs:[NSArray arrayWithObjects:@"-b",
@"com.apple.iokit.AppleAirPort2", nil]];
+ ret = [[BLAuthentication sharedInstance]
executeCommand:@"/sbin/kextunload" withArgs:[NSArray arrayWithObjects:@"-b",
airportExtremeBundleID, nil]];
if (!ret) {
NSLog(@"WARNING!!! User canceled password dialog for: kextunload");
return 2;
@@ -171,14 +178,14 @@
for (x=0; x<5; x++) {
[NSThread sleep:1.0];
- [[BLAuthentication sharedInstance]
executeCommand:@"/sbin/kextload" withArgs:[NSArray arrayWithObject:kextFile]];
+ [[BLAuthentication sharedInstance]
executeCommand:@"/sbin/kextload" withArgs:[NSArray arrayWithObjects:@"-b",
airportExtremeBundleID, nil]];
if ([WaveDriverAirportExtreme deviceAvailable]) return 0;
}
- [[BLAuthentication sharedInstance] executeCommand:@"/sbin/kextunload"
withArgs:[NSArray arrayWithObjects:@"-b", @"com.apple.iokit.AppleAirPort2",
nil]];
+ [[BLAuthentication sharedInstance] executeCommand:@"/sbin/kextunload"
withArgs:[NSArray arrayWithObjects:@"-b", airportExtremeBundleID, nil]];
for (x=0; x<5; x++) {
[NSThread sleep:1.0];
- [[BLAuthentication sharedInstance]
executeCommand:@"/sbin/kextload" withArgs:[NSArray arrayWithObject:kextFile]];
+ [[BLAuthentication sharedInstance]
executeCommand:@"/sbin/kextload" withArgs:[NSArray arrayWithObjects:@"-b",
airportExtremeBundleID, nil]];
if ([WaveDriverAirportExtreme deviceAvailable]) return 0;
}
@@ -223,21 +230,16 @@
+ (bool) unloadBackend {
BOOL ret;
- NSString *kextFile;
if (explicitlyLoadedAirportExtremeDriver) {
- ret = [[BLAuthentication sharedInstance]
executeCommand:@"/sbin/kextunload" withArgs:[NSArray arrayWithObjects:@"-b",
@"com.apple.iokit.AppleAirPort2", nil]];
+ ret = [[BLAuthentication sharedInstance]
executeCommand:@"/sbin/kextunload" withArgs:[NSArray arrayWithObjects:@"-b",
airportExtremeBundleID, nil]];
if (!ret) {
NSLog(@"WARNING!!! User canceled password dialog for:
kextunload");
return NO;
}
- if([[NSFileManager defaultManager]
fileExistsAtPath:@"/System/Library/Extensions/IO80211Family.kext"]) {
- kextFile =
@"/System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AppleAirPortBrcm4311.kext";
- } else {
- kextFile =
@"/System/Library/Extensions/AppleAirPort2.kext";
- }
+
[WaveDriverAirportExtreme setMonitorMode:NO];
- [[BLAuthentication sharedInstance]
executeCommand:@"/sbin/kextload" withArgs:[NSArray arrayWithObject:kextFile]];
+ [[BLAuthentication sharedInstance]
executeCommand:@"/sbin/kextload" withArgs:[NSArray arrayWithObjects:@"-b",
airportExtremeBundleID, nil]];
[NSThread sleep:1.0];
}
@@ -257,7 +259,7 @@
if([WaveHelper isServiceAvailable:"AirPort_Athr5424"]) {
_apeType = APExtTypeAth5414;
- } else if([WaveHelper isServiceAvailable:"AirPortPCI_MM"]) {
+ } else if([WaveHelper isServiceAvailable:"AirPortPCI_MM"] ||
[WaveHelper isServiceAvailable:"AirPort_Brcm43xx"]) {
_apeType = APExtTypeBcm;
} else {
_apeType = APExtTypeUnknown;
Other related posts:
- » [kismac] [binaervarianz] r236 - in trunk/Sources: Core WaveDrivers