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: Macnetworkprog Digest, Vol 5, Issue 9



If I'm right, I think the bug is in this line of code, where you're examining before the beginning of the array (0 based indices I assume). protoCount begins one too high, right? Do you want for (idx=0;idx< protoCount;++idx) ?

SCNetworkProtocolRef curProto = CFArrayGetValueAtIndex(protocols,  protoCount);

From docs:

The index of the value to retrieve. If the index is outside the index space of theArray (0 to N-1 inclusive (where N is the count of theArray), the behavior is undefined.


On Jan 12, 2008, at 3:05 PM, email@hidden wrote:

Message: 1

Date: Fri, 11 Jan 2008 23:27:11 -0800

From: Allan Nathanson <email@hidden>

Subject: Re: IPSec not a "supported" protocol for PPP interfaces?

To: Nathan Duran <email@hidden>

Cc: email@hidden

Message-ID: <email@hidden">email@hidden>

Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes


Sorry for the delay in responding (it's been a busy week for me).


You've found a a bug!  The IPSec configuration is actually associated  

with the interface and would be accessible via the  

SCNetworkInterface(Get|Set)ExtendedInterfaceConfiguration APIs.  Can  

you kindly file a bug report.


- Allan



On Jan 10, 2008, at 3:50 PM, Nathan Duran wrote:



On Dec 20, 2007, at 10:28 AM, Allan Nathanson wrote:


"IPSec" is not a protocol type.


OK, so why, when I call SCNetworkServiceCopyProtocols on an Apple  

created L2TP service, is there one named "IPSec" in the array that  

is returned?


CFArrayRef services = SCNetworkServiceCopyAll(prefs);

int serviceCount = CFArrayGetCount(services);


while ( serviceCount-- )

{

SCNetworkServiceRef curService = CFArrayGetValueAtIndex(services,  

serviceCount);

CFStringRef serviceName = SCNetworkServiceGetName(curService);

if ( CFEqual(serviceName, CFSTR("VPN (L2TP)")) )

{

SCNetworkInterfaceRef firstLayer =  

SCNetworkServiceGetInterface(curService);

CFArrayRef supportedProtocols =  

SCNetworkInterfaceGetSupportedProtocolTypes(firstLayer);


CFShow(supportedProtocols);


CFArrayRef protocols = SCNetworkServiceCopyProtocols(curService);

int protoCount = CFArrayGetCount(protocols);

while ( protoCount-- )

{

SCNetworkProtocolRef curProto = CFArrayGetValueAtIndex(protocols,  

protoCount);

CFStringRef protoName =  

SCNetworkProtocolGetProtocolType(curProto);

CFDictionaryRef protoConfig =  

SCNetworkProtocolGetConfiguration(curProto);

CFShow(protoName);  //Second element will be "IPSec"

CFShow(protoConfig);

}

}

}





 _______________________________________________
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



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.