システムネットワークにmacvpnクライアントを作成したいのですが、「VPN接続を介してすべてのトラフィックを送信する」という名前の設定があります。コードで設定するにはどうすればよいですか?SCNetworkConfigurationにはないと思います。
1144 次
2 に答える
1
これが私が以前に使用した方法です。これは、現在のipv4ディクショナリを取得して変更し、元に戻す方法を非常に簡単に示しています。必要に応じて、CFSTR( "1")を0または1に変更します
#define GetCasted(value, type) ((value) && (CFGetTypeID(value) == type##GetTypeID()) ? ((type##Ref)value) : NULL)
-(void)setIPv4Stuff:(SCNetworkServiceRef)service{
SCNetworkProtocolRef protoR = SCNetworkServiceCopyProtocol(service, kSCNetworkProtocolTypeIPv4);
CFDictionaryRef proxyDictR = SCNetworkProtocolGetConfiguration(protoR);
const void *configMethodP = proxyDictR ? CFDictionaryGetValue(proxyDictR, kSCPropNetIPv4ConfigMethod) : NULL;
CFStringRef configMethod = GetCasted(configMethodP, CFString);
CFMutableDictionaryRef newProxyDictR;
newProxyDictR = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(newProxyDictR, kSCPropNetIPv4ConfigMethod, configMethod);
CFDictionarySetValue(newProxyDictR, kSCPropNetOverridePrimary, CFSTR("1"));
SCNetworkProtocolSetConfiguration(protoR, newProxyDictR);
CFRelease(newProxyDictR);
}
于 2014-10-03T10:53:41.527 に答える
0
kSCPropNetOverridePrimaryを0にすると、これが無効になります(ipv4ディクショナリでそのキーを検索できます)。
そのフラグを無効または有効にするには、そのキーを0または1に設定してipv4プロトコルのプロトコル構成を設定する必要があります。
于 2013-07-07T14:45:17.597 に答える