HostDnsServiceWin.cpp revision 510b14148124a664875cdb3a996433bd92c9324e
510b14148124a664875cdb3a996433bd92c9324evboxsync/* -*- indent-tabs-mode: nil; -*- */
510b14148124a664875cdb3a996433bd92c9324evboxsyncstatic inline int registerNotification(const HKEY& hKey, HANDLE& hEvent)
510b14148124a664875cdb3a996433bd92c9324evboxsync ("Failed to register event on the key. Please debug me!"),
510b14148124a664875cdb3a996433bd92c9324evboxsyncHostDnsServiceWin::HostDnsServiceWin():HostDnsMonitor(true), m(NULL)
510b14148124a664875cdb3a996433bd92c9324evboxsync m->haDataEvent[DATA_DNS_UPDATE_EVENT] = CreateEvent(NULL,
510b14148124a664875cdb3a996433bd92c9324evboxsync AssertReleaseMsg(m->haDataEvent[DATA_DNS_UPDATE_EVENT],
510b14148124a664875cdb3a996433bd92c9324evboxsync ("Failed to create event for DNS event (%d)\n", GetLastError()));
510b14148124a664875cdb3a996433bd92c9324evboxsync m->haDataEvent[DATA_SHUTDOWN_EVENT] = CreateEvent(NULL,
510b14148124a664875cdb3a996433bd92c9324evboxsync AssertReleaseMsg(m->haDataEvent[DATA_SHUTDOWN_EVENT],
510b14148124a664875cdb3a996433bd92c9324evboxsync ("Failed to create event for Shutdown signal (%d)\n", GetLastError()));
510b14148124a664875cdb3a996433bd92c9324evboxsync TEXT("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"),
510b14148124a664875cdb3a996433bd92c9324evboxsync ("Failed to open Registry Key for read and update notifications (%d)\n",
510b14148124a664875cdb3a996433bd92c9324evboxsync CloseHandle(m->haDataEvent[DATA_DNS_UPDATE_EVENT]);
510b14148124a664875cdb3a996433bd92c9324evboxsync while (true)
510b14148124a664875cdb3a996433bd92c9324evboxsync ("WaitForMultipleObjects failed (%d) to wait! Please debug",
510b14148124a664875cdb3a996433bd92c9324evboxsync if ((dwRc - WAIT_OBJECT_0) == DATA_DNS_UPDATE_EVENT)
510b14148124a664875cdb3a996433bd92c9324evboxsync else if ((dwRc - WAIT_OBJECT_0) == DATA_SHUTDOWN_EVENT)
510b14148124a664875cdb3a996433bd92c9324evboxsync ("WaitForMultipleObjects returns out of bound index %d. Please debug!",
510b14148124a664875cdb3a996433bd92c9324evboxsync hrc = RegEnumValueA(m->hKeyTcpipParameters, regIndex, keyName, &cbKeyName, 0,
510b14148124a664875cdb3a996433bd92c9324evboxsync else if ( RTStrICmp("DhcpNameServer", keyName) == 0
510b14148124a664875cdb3a996433bd92c9324evboxsync /* OK, now parse and update DNS structures. */
510b14148124a664875cdb3a996433bd92c9324evboxsync /* domain name */
510b14148124a664875cdb3a996433bd92c9324evboxsync /* server list */
510b14148124a664875cdb3a996433bd92c9324evboxsync /* search list */
510b14148124a664875cdb3a996433bd92c9324evboxsync strList2List(info.searchList, (char *)abSearchList);
510b14148124a664875cdb3a996433bd92c9324evboxsyncvoid HostDnsServiceWin::strList2List(std::vector<std::string>& lst, char *strLst)