blob: c59d554566236e7a15e90ed5ccc0181c459b8560 [file] [log] [blame]
Austin Schuh75263e32022-02-22 18:05:32 -08001// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
4
5#include "DynamicDns.h"
6
7using namespace wpi;
8
9DynamicDns& DynamicDns::GetDynamicDns() {
10 static DynamicDns dns;
11 return dns;
12}
13
14DynamicDns::DynamicDns() {
15 HMODULE library = LoadLibraryW(L"dnsapi");
16
17 if (library == nullptr) {
18 return;
19 }
20
21 DnsServiceFreeInstancePtr = (DnsServiceFreeInstanceFunc)GetProcAddress(
22 library, "DnsServiceFreeInstance");
23 DnsServiceConstructInstancePtr =
24 (DnsServiceConstructInstanceFunc)GetProcAddress(
25 library, "DnsServiceConstructInstance");
26 DnsServiceRegisterPtr =
27 (DnsServiceRegisterFunc)GetProcAddress(library, "DnsServiceRegister");
28 DnsServiceDeRegisterPtr =
29 (DnsServiceDeRegisterFunc)GetProcAddress(library, "DnsServiceDeRegister");
30
31 CanDnsAnnounce = DnsServiceFreeInstancePtr &&
32 DnsServiceConstructInstancePtr && DnsServiceRegisterPtr &&
33 DnsServiceDeRegisterPtr;
34
35 DnsServiceBrowsePtr =
36 (DnsServiceBrowseFunc)GetProcAddress(library, "DnsServiceBrowse");
37 DnsServiceBrowseCancelPtr = (DnsServiceBrowseCancelFunc)GetProcAddress(
38 library, "DnsServiceBrowseCancel");
39
40 CanDnsResolve = DnsServiceBrowsePtr && DnsServiceBrowseCancelPtr;
41}