|
@@ -140,6 +140,7 @@ var (
|
|
|
procgetprotobyname = modws2_32.NewProc("getprotobyname")
|
|
procgetprotobyname = modws2_32.NewProc("getprotobyname")
|
|
|
procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
|
|
procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
|
|
|
procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree")
|
|
procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree")
|
|
|
|
|
+ procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W")
|
|
|
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
|
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
|
|
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
|
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
|
|
procGetIfEntry = modiphlpapi.NewProc("GetIfEntry")
|
|
procGetIfEntry = modiphlpapi.NewProc("GetIfEntry")
|
|
@@ -1635,6 +1636,12 @@ func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
|
|
|
|
|
+ r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
|
|
|
|
|
+ same = r0 != 0
|
|
|
|
|
+ return
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
|
|
func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
|
|
|
r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
|
|
r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
|
|
|
if r0 != 0 {
|
|
if r0 != 0 {
|