Make a way to get DNS server ips on Windows
parent
67fa5080f4
commit
f981b6db3c
|
@ -734,6 +734,13 @@ ERROR: windows-error n string ;
|
||||||
: win32-error<0 ( n -- ) 0 < [ win32-error ] when ;
|
: win32-error<0 ( n -- ) 0 < [ win32-error ] when ;
|
||||||
: win32-error<>0 ( n -- ) zero? [ win32-error ] unless ;
|
: win32-error<>0 ( n -- ) zero? [ win32-error ] unless ;
|
||||||
|
|
||||||
|
: n>win32-error-check ( n -- )
|
||||||
|
dup ERROR_SUCCESS = [
|
||||||
|
drop
|
||||||
|
] [
|
||||||
|
dup n>win32-error-string windows-error
|
||||||
|
] if ;
|
||||||
|
|
||||||
: check-invalid-handle ( handle -- handle )
|
: check-invalid-handle ( handle -- handle )
|
||||||
dup INVALID_HANDLE_VALUE = [ win32-error-string throw ] when ;
|
dup INVALID_HANDLE_VALUE = [ win32-error-string throw ] when ;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Doug Coleman
|
|
@ -0,0 +1,75 @@
|
||||||
|
! Copyright (C) 2010 Doug Coleman.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: accessors alien alien.c-types alien.syntax
|
||||||
|
classes.struct io.encodings.string io.encodings.utf8 kernel
|
||||||
|
make sequences windows.errors windows.types ;
|
||||||
|
IN: windows.iphlpapi
|
||||||
|
|
||||||
|
LIBRARY: iphlpapi
|
||||||
|
|
||||||
|
<<
|
||||||
|
CONSTANT: DEFAULT_MINIMUM_ENTITIES 32
|
||||||
|
CONSTANT: MAX_ADAPTER_ADDRESS_LENGTH 8
|
||||||
|
CONSTANT: MAX_ADAPTER_DESCRIPTION_LENGTH 128
|
||||||
|
CONSTANT: MAX_ADAPTER_NAME_LENGTH 256
|
||||||
|
CONSTANT: MAX_DOMAIN_NAME_LEN 128
|
||||||
|
CONSTANT: MAX_HOSTNAME_LEN 128
|
||||||
|
CONSTANT: MAX_SCOPE_ID_LEN 256
|
||||||
|
CONSTANT: BROADCAST_NODETYPE 1
|
||||||
|
CONSTANT: PEER_TO_PEER_NODETYPE 2
|
||||||
|
CONSTANT: MIXED_NODETYPE 4
|
||||||
|
CONSTANT: HYBRID_NODETYPE 8
|
||||||
|
CONSTANT: IF_OTHER_ADAPTERTYPE 0
|
||||||
|
CONSTANT: IF_ETHERNET_ADAPTERTYPE 1
|
||||||
|
CONSTANT: IF_TOKEN_RING_ADAPTERTYPE 2
|
||||||
|
CONSTANT: IF_FDDI_ADAPTERTYPE 3
|
||||||
|
CONSTANT: IF_PPP_ADAPTERTYPE 4
|
||||||
|
CONSTANT: IF_LOOPBACK_ADAPTERTYPE 5
|
||||||
|
>>
|
||||||
|
|
||||||
|
CONSTANT: MAX_DOMAIN_NAME_LEN+4 132
|
||||||
|
CONSTANT: MAX_HOSTNAME_LEN+4 132
|
||||||
|
CONSTANT: MAX_SCOPE_ID_LEN+4 260
|
||||||
|
|
||||||
|
STRUCT: IP_ADDRESS_STRING
|
||||||
|
{ String char[16] } ;
|
||||||
|
|
||||||
|
TYPEDEF: IP_ADDRESS_STRING* PIP_ADDRESS_STRING
|
||||||
|
TYPEDEF: IP_ADDRESS_STRING IP_MASK_STRING
|
||||||
|
TYPEDEF: IP_MASK_STRING* PIP_MASK_STRING
|
||||||
|
|
||||||
|
STRUCT: IP_ADDR_STRING
|
||||||
|
{ Next IP_ADDR_STRING* }
|
||||||
|
{ IpAddress IP_ADDRESS_STRING }
|
||||||
|
{ IpMask IP_MASK_STRING }
|
||||||
|
{ Context DWORD } ;
|
||||||
|
|
||||||
|
TYPEDEF: IP_ADDR_STRING* PIP_ADDR_STRING
|
||||||
|
|
||||||
|
STRUCT: FIXED_INFO
|
||||||
|
{ HostName char[MAX_HOSTNAME_LEN+4] }
|
||||||
|
{ DomainName char[MAX_DOMAIN_NAME_LEN+4] }
|
||||||
|
{ CurrentDnsServer PIP_ADDR_STRING }
|
||||||
|
{ DnsServerList IP_ADDR_STRING }
|
||||||
|
{ NodeType UINT }
|
||||||
|
{ ScopeId char[MAX_SCOPE_ID_LEN+4] }
|
||||||
|
{ EnableRouting UINT }
|
||||||
|
{ EnableProxy UINT }
|
||||||
|
{ EnableDns UINT }
|
||||||
|
{ ExtraSpace char[4096] } ;
|
||||||
|
|
||||||
|
TYPEDEF: FIXED_INFO* PFIXED_INFO
|
||||||
|
|
||||||
|
FUNCTION: DWORD GetNetworkParams ( PFIXED_INFO pFixedInfo, PULONG pOutBufLen ) ;
|
||||||
|
|
||||||
|
: get-fixed-info ( -- FIXED_INFO )
|
||||||
|
FIXED_INFO <struct> dup byte-length <ulong>
|
||||||
|
[ GetNetworkParams n>win32-error-check ] 2keep drop ;
|
||||||
|
|
||||||
|
: dns-server-ips ( -- sequence )
|
||||||
|
get-fixed-info DnsServerList>> [
|
||||||
|
[
|
||||||
|
[ IpAddress>> String>> [ 0 = ] trim-tail utf8 decode , ]
|
||||||
|
[ Next>> ] bi dup
|
||||||
|
] loop drop
|
||||||
|
] { } make ;
|
|
@ -0,0 +1 @@
|
||||||
|
windows
|
|
@ -14,6 +14,7 @@ CONSTANT: MAX_UNICODE_PATH 32768
|
||||||
{ "winsock" "ws2_32.dll" stdcall }
|
{ "winsock" "ws2_32.dll" stdcall }
|
||||||
{ "mswsock" "mswsock.dll" stdcall }
|
{ "mswsock" "mswsock.dll" stdcall }
|
||||||
{ "shell32" "shell32.dll" stdcall }
|
{ "shell32" "shell32.dll" stdcall }
|
||||||
|
{ "iphlpapi" "iphlpapi.dll" stdcall }
|
||||||
{ "libc" "msvcrt.dll" cdecl }
|
{ "libc" "msvcrt.dll" cdecl }
|
||||||
{ "libm" "msvcrt.dll" cdecl }
|
{ "libm" "msvcrt.dll" cdecl }
|
||||||
{ "gl" "opengl32.dll" stdcall }
|
{ "gl" "opengl32.dll" stdcall }
|
||||||
|
|
Loading…
Reference in New Issue