Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Switching Airport of in code using SCF




On Feb 18, 2008, at 11:19 AM, Jonathan Guy wrote:

Hi
Thanks Allan that seemed to get the setting applied in the system config but Airport remains up after I run the tool and only comes down after a reboot.

Hmmm... You'd likely need some help from the AirPort team.

Is there any way I can force the interface down?

For AirPort, there should be two ways.  First would be to power off the interface (and I'm not sure why you're code is not working).  The second way would be to remove (or disable) any service that references the interface.  You could do this with SCNetworkServiceSetEnabled(service, FALSE);

I tried SCNetworkInterfaceForceConfigurationRefresh at the end of the code but that didn't work.

That API triggers a DHCP "renew".

- Allan



This is what I've done:

gPrefsRef = SCPreferencesCreate(nilCFSTR("InterfaceConfig2"), nil);
if (gPrefsRef == nil
errorAndExit("InterfaceConfig failure: SCPreferencesCreate failed");

if (!SCPreferencesLock(gPrefsRefYES)) 
errorAndExit("InterfaceConfig failure: SCPreferencesLock could not get a lock");


NSEnumerator *e = [(NSArray *)SCNetworkSetCopyServices(SCNetworkSetCopyCurrent(gPrefsRef)) objectEnumerator];
SCNetworkServiceRef service;

while (service = (SCNetworkServiceRef)[e nextObject]) {
interfaceRef = SCNetworkServiceGetInterface(service);
if (isInterfaceOfType(interfaceRef, kSCNetworkInterfaceTypeIEEE80211)) {
CFDictionaryRef dict = (CFMutableDictionaryRef)[NSMutableDictionary dictionaryWithObjectsAndKeys:(NSString *)kSCValNetAirPortJoinModeAutomatic,
 (NSString *)kSCPropNetAirPortJoinMode,
 [NSNumber numberWithInt:0],
 (NSString *)kSCPropNetAirPortPowerEnablednil];
if (SCNetworkInterfaceSetConfiguration(interfaceRef, dict) == NO) {
syslog(LOG_LOCAL7 | LOG_ALERT"InterfaceConfig failure: Could not set Airport interface settings");
}
}
}


if (SCPreferencesCommitChanges(gPrefsRef) == NO)
errorAndExit("InterfaceConfig failure: SCPreferencesCommitChanges failed");
if (SCPreferencesApplyChanges(gPrefsRef) == NO)
errorAndExit("InterfaceConfig failure: SCPreferencesApplyChanges failed");

SCPreferencesUnlock(gPrefsRef);
CFRelease(gPrefsRef);
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/macnetworkprog/email@hidden

This email sent to email@hidden

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/macnetworkprog/email@hidden

This email sent to email@hidden

References: 
 >Re: Switching Airport of in code using SCF (From: Jonathan Guy <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.