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