VirtualBox

Changeset 52591 in vbox for trunk/src


Ignore:
Timestamp:
Sep 3, 2014 6:47:31 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
95863
Message:

NAT: Darwin host: extra logging for DNS update events.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/DrvNAT.cpp

    r50951 r52591  
    970970    PDRVNAT pThis = (PDRVNAT)pvUser;
    971971
    972     LogRel(("NAT: DNS servers changed, triggering reconnect\n"));
    973 
    974     CFDictionaryRef hDnsDict = (CFDictionaryRef)SCDynamicStoreCopyValue(hDynStor, CFSTR("State:/Network/Global/DNS"));
    975     if (hDnsDict)
    976     {
    977         CFArrayRef hArrAddresses = (CFArrayRef)CFDictionaryGetValue(hDnsDict, kSCPropNetDNSServerAddresses);
    978         if (hArrAddresses)
     972    LogRel(("NAT: System configuration has changed\n"));
     973
     974    /* Check if any of parameters we are interested in were actually changed. If the size
     975     * of hChangedKeys is 0, it means that SCDynamicStore has been restarted. */
     976    if (hChangedKeys && CFArrayGetCount(hChangedKeys) > 0)
     977    {
     978        /* Look to the updated parameters in particular. */
     979        CFStringRef pDNSKey = CFSTR("State:/Network/Global/DNS");
     980
     981        if (CFArrayContainsValue(hChangedKeys, CFRangeMake(0, CFArrayGetCount(hChangedKeys)), pDNSKey))
     982        {
     983            LogRel(("NAT: DNS servers changed, triggering reconnect\n"));
     984
     985            CFDictionaryRef hDnsDict = (CFDictionaryRef)SCDynamicStoreCopyValue(hDynStor, pDNSKey);
     986            if (hDnsDict)
     987            {
     988                CFArrayRef hArrAddresses = (CFArrayRef)CFDictionaryGetValue(hDnsDict, kSCPropNetDNSServerAddresses);
     989                if (hArrAddresses && CFArrayGetCount(hArrAddresses) > 0)
     990                {
     991#if 1
     992                    /* Dump DNS servers list. */
     993                    for (int i = 0; i < CFArrayGetCount(hArrAddresses); i++)
     994                    {
     995                        CFStringRef pDNSAddrStr = (CFStringRef)CFArrayGetValueAtIndex(hArrAddresses, i);
     996                        const char *pszDNSAddr  =  pDNSAddrStr ? CFStringGetCStringPtr(pDNSAddrStr, CFStringGetSystemEncoding()) : NULL;
     997                        LogRel(("NAT: New DNS server#%d: %s\n", i, pszDNSAddr ? pszDNSAddr : "None"));
     998                    }
     999#endif
     1000                }
     1001                else
     1002                    LogRel(("NAT: DNS server list is empty (1)\n"));
     1003
     1004                CFRelease(hDnsDict);
     1005            }
     1006            else
     1007                LogRel(("NAT: DNS server list is empty (2)\n"));
     1008
    9791009            drvNATUpdateDNS(pThis, /* fFlapLink */ true);
    980 
    981         CFRelease(hDnsDict);
    982     }
     1010        }
     1011        else
     1012            LogRel(("NAT: No DNS changes detected\n"));
     1013    }
     1014    else
     1015        LogRel(("NAT: SCDynamicStore has been restarted\n"));
    9831016}
    9841017#endif
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette