| 2370 | */ |
| 2371 | |
| 2372 | static CFStringRef /* O - Network ID */ |
| 2373 | appleCopyNetwork(void) |
| 2374 | { |
| 2375 | SCDynamicStoreRef dynamicStore; /* System configuration data */ |
| 2376 | CFStringRef key; /* Current network configuration key */ |
| 2377 | CFDictionaryRef ip_dict; /* Network configuration data */ |
| 2378 | CFStringRef network = NULL; /* Current network ID */ |
| 2379 | |
| 2380 | |
| 2381 | if ((dynamicStore = SCDynamicStoreCreate(NULL, CFSTR("libcups"), NULL, |
| 2382 | NULL)) != NULL) |
| 2383 | { |
| 2384 | /* |
| 2385 | * First use the IPv6 router address, if available, since that will generally |
| 2386 | * be a globally-unique link-local address. |
| 2387 | */ |
| 2388 | |
| 2389 | if ((key = SCDynamicStoreKeyCreateNetworkGlobalEntity( |
| 2390 | NULL, kSCDynamicStoreDomainState, kSCEntNetIPv6)) != NULL) |
| 2391 | { |
| 2392 | if ((ip_dict = SCDynamicStoreCopyValue(dynamicStore, key)) != NULL) |
| 2393 | { |
| 2394 | if ((network = CFDictionaryGetValue(ip_dict, |
| 2395 | kSCPropNetIPv6Router)) != NULL) |
| 2396 | CFRetain(network); |
| 2397 | |
| 2398 | CFRelease(ip_dict); |
| 2399 | } |
| 2400 | |
| 2401 | CFRelease(key); |
| 2402 | } |
| 2403 | |
| 2404 | /* |
| 2405 | * If that doesn't work, try the IPv4 router address. This isn't as unique |
| 2406 | * and will likely be a 10.x.y.z or 192.168.y.z address... |
| 2407 | */ |
| 2408 | |
| 2409 | if (!network) |
| 2410 | { |
| 2411 | if ((key = SCDynamicStoreKeyCreateNetworkGlobalEntity( |
| 2412 | NULL, kSCDynamicStoreDomainState, kSCEntNetIPv4)) != NULL) |
| 2413 | { |
| 2414 | if ((ip_dict = SCDynamicStoreCopyValue(dynamicStore, key)) != NULL) |
| 2415 | { |
| 2416 | if ((network = CFDictionaryGetValue(ip_dict, |
| 2417 | kSCPropNetIPv4Router)) != NULL) |
| 2418 | CFRetain(network); |
| 2419 | |
| 2420 | CFRelease(ip_dict); |
| 2421 | } |
| 2422 | |
| 2423 | CFRelease(key); |
| 2424 | } |
| 2425 | } |
| 2426 | |
| 2427 | CFRelease(dynamicStore); |
| 2428 | } |
| 2429 |
no outgoing calls
no test coverage detected