MCPcopy Create free account
hub / github.com/OpenPrinting/cups / appleCopyNetwork

Function appleCopyNetwork

cups/dest.c:2372–2431  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2370 */
2371
2372static CFStringRef /* O - Network ID */
2373appleCopyNetwork(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

Callers 2

Calls

no outgoing calls

Tested by

no test coverage detected