Artifact 0e036969485d7abef687d822309ee3cf80c90cca:
- File
src/win32/iphlpapi.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a /*************** 0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0d 0a 2a 20 20 20 20 ********\..* 0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0060: 20 20 20 20 20 20 20 20 20 20 20 69 70 68 6c 70 iphlp 0070: 61 70 69 2e 64 20 20 20 20 20 20 20 20 20 20 20 api.d 0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0090: 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 20 20 *..* 00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0d *. 00e0: 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .* 00f0: 20 20 20 20 20 20 20 20 20 57 69 6e 64 6f 77 73 Windows 0100: 20 41 50 49 20 68 65 61 64 65 72 20 6d 6f 64 75 API header modu 0110: 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 le 0120: 20 20 20 20 20 20 20 20 20 2a 0d 0a 2a 20 20 20 *..* 0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0170: 20 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 20 *..* 0180: 20 20 20 20 20 20 20 20 20 54 72 61 6e 73 6c 61 Transla 0190: 74 65 64 20 66 72 6f 6d 20 4d 69 6e 47 57 20 57 ted from MinGW W 01a0: 69 6e 64 6f 77 73 20 68 65 61 64 65 72 73 20 20 indows headers 01b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a * 01c0: 0d 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..* 01d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 79 by 01e0: 20 53 74 65 77 61 72 74 20 47 6f 72 64 6f 6e 20 Stewart Gordon 01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0200: 20 20 20 20 20 20 20 20 20 20 2a 0d 0a 2a 20 20 *..* 0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0250: 20 20 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 *..* 0260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0270: 50 6c 61 63 65 64 20 69 6e 74 6f 20 70 75 62 6c Placed into publ 0280: 69 63 20 64 6f 6d 61 69 6e 20 20 20 20 20 20 20 ic domain 0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 02a0: 2a 0d 0a 5c 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a *..\************ 02b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 02c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 02d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 02e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 6d 6f ***********/..mo 02f0: 64 75 6c 65 20 77 69 6e 33 32 2e 69 70 68 6c 70 dule win32.iphlp 0300: 61 70 69 3b 0d 0a 0d 0a 69 6d 70 6f 72 74 20 77 api;....import w 0310: 69 6e 33 32 2e 69 70 65 78 70 6f 72 74 2c 20 77 in32.ipexport, w 0320: 69 6e 33 32 2e 69 70 72 74 72 6d 69 62 2c 20 77 in32.iprtrmib, w 0330: 69 6e 33 32 2e 69 70 74 79 70 65 73 3b 0d 0a 70 in32.iptypes;..p 0340: 72 69 76 61 74 65 20 69 6d 70 6f 72 74 20 77 69 rivate import wi 0350: 6e 33 32 2e 77 69 6e 62 61 73 65 2c 20 77 69 6e n32.winbase, win 0360: 33 32 2e 77 69 6e 64 65 66 3b 0d 0a 0d 0a 65 78 32.windef;....ex 0370: 74 65 72 6e 20 28 57 69 6e 64 6f 77 73 29 20 7b tern (Windows) { 0380: 0d 0a 09 44 57 4f 52 44 20 41 64 64 49 50 41 64 ...DWORD AddIPAd 0390: 64 72 65 73 73 28 49 50 41 64 64 72 2c 20 49 50 dress(IPAddr, IP 03a0: 4d 61 73 6b 2c 20 44 57 4f 52 44 2c 20 50 55 4c Mask, DWORD, PUL 03b0: 4f 4e 47 2c 20 50 55 4c 4f 4e 47 29 3b 0d 0a 09 ONG, PULONG);... 03c0: 44 57 4f 52 44 20 43 72 65 61 74 65 49 70 46 6f DWORD CreateIpFo 03d0: 72 77 61 72 64 45 6e 74 72 79 28 50 4d 49 42 5f rwardEntry(PMIB_ 03e0: 49 50 46 4f 52 57 41 52 44 52 4f 57 29 3b 0d 0a IPFORWARDROW);.. 03f0: 09 44 57 4f 52 44 20 43 72 65 61 74 65 49 70 4e .DWORD CreateIpN 0400: 65 74 45 6e 74 72 79 28 50 4d 49 42 5f 49 50 4e etEntry(PMIB_IPN 0410: 45 54 52 4f 57 29 3b 0d 0a 09 44 57 4f 52 44 20 ETROW);...DWORD 0420: 43 72 65 61 74 65 50 72 6f 78 79 41 72 70 45 6e CreateProxyArpEn 0430: 74 72 79 28 44 57 4f 52 44 2c 20 44 57 4f 52 44 try(DWORD, DWORD 0440: 2c 20 44 57 4f 52 44 29 3b 0d 0a 09 44 57 4f 52 , DWORD);...DWOR 0450: 44 20 44 65 6c 65 74 65 49 50 41 64 64 72 65 73 D DeleteIPAddres 0460: 73 28 55 4c 4f 4e 47 29 3b 0d 0a 09 44 57 4f 52 s(ULONG);...DWOR 0470: 44 20 44 65 6c 65 74 65 49 70 46 6f 72 77 61 72 D DeleteIpForwar 0480: 64 45 6e 74 72 79 28 50 4d 49 42 5f 49 50 46 4f dEntry(PMIB_IPFO 0490: 52 57 41 52 44 52 4f 57 29 3b 0d 0a 09 44 57 4f RWARDROW);...DWO 04a0: 52 44 20 44 65 6c 65 74 65 49 70 4e 65 74 45 6e RD DeleteIpNetEn 04b0: 74 72 79 28 50 4d 49 42 5f 49 50 4e 45 54 52 4f try(PMIB_IPNETRO 04c0: 57 29 3b 0d 0a 09 44 57 4f 52 44 20 44 65 6c 65 W);...DWORD Dele 04d0: 74 65 50 72 6f 78 79 41 72 70 45 6e 74 72 79 28 teProxyArpEntry( 04e0: 44 57 4f 52 44 2c 20 44 57 4f 52 44 2c 20 44 57 DWORD, DWORD, DW 04f0: 4f 52 44 29 3b 0d 0a 09 44 57 4f 52 44 20 45 6e ORD);...DWORD En 0500: 61 62 6c 65 52 6f 75 74 65 72 28 48 41 4e 44 4c ableRouter(HANDL 0510: 45 2a 2c 20 4f 56 45 52 4c 41 50 50 45 44 2a 29 E*, OVERLAPPED*) 0520: 3b 0d 0a 09 44 57 4f 52 44 20 46 6c 75 73 68 49 ;...DWORD FlushI 0530: 70 4e 65 74 54 61 62 6c 65 28 44 57 4f 52 44 29 pNetTable(DWORD) 0540: 3b 0d 0a 09 44 57 4f 52 44 20 47 65 74 41 64 61 ;...DWORD GetAda 0550: 70 74 65 72 49 6e 64 65 78 28 4c 50 57 53 54 52 pterIndex(LPWSTR 0560: 2c 20 50 55 4c 4f 4e 47 29 3b 0d 0a 09 44 57 4f , PULONG);...DWO 0570: 52 44 20 47 65 74 41 64 61 70 74 65 72 73 49 6e RD GetAdaptersIn 0580: 66 6f 28 50 49 50 5f 41 44 41 50 54 45 52 5f 49 fo(PIP_ADAPTER_I 0590: 4e 46 4f 2c 20 50 55 4c 4f 4e 47 29 3b 0d 0a 09 NFO, PULONG);... 05a0: 44 57 4f 52 44 20 47 65 74 42 65 73 74 49 6e 74 DWORD GetBestInt 05b0: 65 72 66 61 63 65 28 49 50 41 64 64 72 2c 20 50 erface(IPAddr, P 05c0: 44 57 4f 52 44 29 3b 0d 0a 09 44 57 4f 52 44 20 DWORD);...DWORD 05d0: 47 65 74 42 65 73 74 52 6f 75 74 65 28 44 57 4f GetBestRoute(DWO 05e0: 52 44 2c 20 44 57 4f 52 44 2c 20 50 4d 49 42 5f RD, DWORD, PMIB_ 05f0: 49 50 46 4f 52 57 41 52 44 52 4f 57 29 3b 0d 0a IPFORWARDROW);.. 0600: 09 44 57 4f 52 44 20 47 65 74 46 72 69 65 6e 64 .DWORD GetFriend 0610: 6c 79 49 66 49 6e 64 65 78 28 44 57 4f 52 44 29 lyIfIndex(DWORD) 0620: 3b 0d 0a 09 44 57 4f 52 44 20 47 65 74 49 63 6d ;...DWORD GetIcm 0630: 70 53 74 61 74 69 73 74 69 63 73 28 50 4d 49 42 pStatistics(PMIB 0640: 5f 49 43 4d 50 29 3b 0d 0a 09 44 57 4f 52 44 20 _ICMP);...DWORD 0650: 47 65 74 49 66 45 6e 74 72 79 28 50 4d 49 42 5f GetIfEntry(PMIB_ 0660: 49 46 52 4f 57 29 3b 0d 0a 09 44 57 4f 52 44 20 IFROW);...DWORD 0670: 47 65 74 49 66 54 61 62 6c 65 28 50 4d 49 42 5f GetIfTable(PMIB_ 0680: 49 46 54 41 42 4c 45 2c 20 50 55 4c 4f 4e 47 2c IFTABLE, PULONG, 0690: 20 42 4f 4f 4c 29 3b 0d 0a 09 44 57 4f 52 44 20 BOOL);...DWORD 06a0: 47 65 74 49 6e 74 65 72 66 61 63 65 49 6e 66 6f GetInterfaceInfo 06b0: 28 50 49 50 5f 49 4e 54 45 52 46 41 43 45 5f 49 (PIP_INTERFACE_I 06c0: 4e 46 4f 2c 20 50 55 4c 4f 4e 47 29 3b 0d 0a 09 NFO, PULONG);... 06d0: 44 57 4f 52 44 20 47 65 74 49 70 41 64 64 72 54 DWORD GetIpAddrT 06e0: 61 62 6c 65 28 50 4d 49 42 5f 49 50 41 44 44 52 able(PMIB_IPADDR 06f0: 54 41 42 4c 45 2c 20 50 55 4c 4f 4e 47 2c 20 42 TABLE, PULONG, B 0700: 4f 4f 4c 29 3b 0d 0a 09 44 57 4f 52 44 20 47 65 OOL);...DWORD Ge 0710: 74 49 70 46 6f 72 77 61 72 64 54 61 62 6c 65 28 tIpForwardTable( 0720: 50 4d 49 42 5f 49 50 46 4f 52 57 41 52 44 54 41 PMIB_IPFORWARDTA 0730: 42 4c 45 2c 20 50 55 4c 4f 4e 47 2c 20 42 4f 4f BLE, PULONG, BOO 0740: 4c 29 3b 0d 0a 09 44 57 4f 52 44 20 47 65 74 49 L);...DWORD GetI 0750: 70 4e 65 74 54 61 62 6c 65 28 50 4d 49 42 5f 49 pNetTable(PMIB_I 0760: 50 4e 45 54 54 41 42 4c 45 2c 20 50 55 4c 4f 4e PNETTABLE, PULON 0770: 47 2c 20 42 4f 4f 4c 29 3b 0d 0a 09 44 57 4f 52 G, BOOL);...DWOR 0780: 44 20 47 65 74 49 70 53 74 61 74 69 73 74 69 63 D GetIpStatistic 0790: 73 28 50 4d 49 42 5f 49 50 53 54 41 54 53 29 3b s(PMIB_IPSTATS); 07a0: 0d 0a 09 44 57 4f 52 44 20 47 65 74 4e 65 74 77 ...DWORD GetNetw 07b0: 6f 72 6b 50 61 72 61 6d 73 28 50 46 49 58 45 44 orkParams(PFIXED 07c0: 5f 49 4e 46 4f 2c 20 50 55 4c 4f 4e 47 29 3b 0d _INFO, PULONG);. 07d0: 0a 09 44 57 4f 52 44 20 47 65 74 4e 75 6d 62 65 ..DWORD GetNumbe 07e0: 72 4f 66 49 6e 74 65 72 66 61 63 65 73 28 50 44 rOfInterfaces(PD 07f0: 57 4f 52 44 29 3b 0d 0a 09 44 57 4f 52 44 20 47 WORD);...DWORD G 0800: 65 74 50 65 72 41 64 61 70 74 65 72 49 6e 66 6f etPerAdapterInfo 0810: 28 55 4c 4f 4e 47 2c 20 50 49 50 5f 50 45 52 5f (ULONG, PIP_PER_ 0820: 41 44 41 50 54 45 52 5f 49 4e 46 4f 2c 20 50 55 ADAPTER_INFO, PU 0830: 4c 4f 4e 47 29 3b 0d 0a 09 42 4f 4f 4c 20 47 65 LONG);...BOOL Ge 0840: 74 52 54 54 41 6e 64 48 6f 70 43 6f 75 6e 74 28 tRTTAndHopCount( 0850: 49 50 41 64 64 72 2c 20 50 55 4c 4f 4e 47 2c 20 IPAddr, PULONG, 0860: 55 4c 4f 4e 47 2c 20 50 55 4c 4f 4e 47 29 3b 0d ULONG, PULONG);. 0870: 0a 09 44 57 4f 52 44 20 47 65 74 54 63 70 53 74 ..DWORD GetTcpSt 0880: 61 74 69 73 74 69 63 73 28 50 4d 49 42 5f 54 43 atistics(PMIB_TC 0890: 50 53 54 41 54 53 29 3b 0d 0a 09 44 57 4f 52 44 PSTATS);...DWORD 08a0: 20 47 65 74 54 63 70 54 61 62 6c 65 28 50 4d 49 GetTcpTable(PMI 08b0: 42 5f 54 43 50 54 41 42 4c 45 2c 20 50 44 57 4f B_TCPTABLE, PDWO 08c0: 52 44 2c 20 42 4f 4f 4c 29 3b 0d 0a 09 44 57 4f RD, BOOL);...DWO 08d0: 52 44 20 47 65 74 55 6e 69 44 69 72 65 63 74 69 RD GetUniDirecti 08e0: 6f 6e 61 6c 41 64 61 70 74 65 72 49 6e 66 6f 28 onalAdapterInfo( 08f0: 50 49 50 5f 55 4e 49 44 49 52 45 43 54 49 4f 4e PIP_UNIDIRECTION 0900: 41 4c 5f 41 44 41 50 54 45 52 5f 41 44 44 52 45 AL_ADAPTER_ADDRE 0910: 53 53 2c 0d 0a 09 20 20 50 55 4c 4f 4e 47 29 3b SS,... PULONG); 0920: 0d 0a 09 44 57 4f 52 44 20 47 65 74 55 64 70 53 ...DWORD GetUdpS 0930: 74 61 74 69 73 74 69 63 73 28 50 4d 49 42 5f 55 tatistics(PMIB_U 0940: 44 50 53 54 41 54 53 29 3b 0d 0a 09 44 57 4f 52 DPSTATS);...DWOR 0950: 44 20 47 65 74 55 64 70 54 61 62 6c 65 28 50 4d D GetUdpTable(PM 0960: 49 42 5f 55 44 50 54 41 42 4c 45 2c 20 50 44 57 IB_UDPTABLE, PDW 0970: 4f 52 44 2c 20 42 4f 4f 4c 29 3b 0d 0a 09 44 57 ORD, BOOL);...DW 0980: 4f 52 44 20 49 70 52 65 6c 65 61 73 65 41 64 64 ORD IpReleaseAdd 0990: 72 65 73 73 28 50 49 50 5f 41 44 41 50 54 45 52 ress(PIP_ADAPTER 09a0: 5f 49 4e 44 45 58 5f 4d 41 50 29 3b 0d 0a 09 44 _INDEX_MAP);...D 09b0: 57 4f 52 44 20 49 70 52 65 6e 65 77 41 64 64 72 WORD IpRenewAddr 09c0: 65 73 73 28 50 49 50 5f 41 44 41 50 54 45 52 5f ess(PIP_ADAPTER_ 09d0: 49 4e 44 45 58 5f 4d 41 50 29 3b 0d 0a 09 44 57 INDEX_MAP);...DW 09e0: 4f 52 44 20 4e 6f 74 69 66 79 41 64 64 72 43 68 ORD NotifyAddrCh 09f0: 61 6e 67 65 28 50 48 41 4e 44 4c 45 2c 20 4c 50 ange(PHANDLE, LP 0a00: 4f 56 45 52 4c 41 50 50 45 44 29 3b 0d 0a 09 44 OVERLAPPED);...D 0a10: 57 4f 52 44 20 4e 6f 74 69 66 79 52 6f 75 74 65 WORD NotifyRoute 0a20: 43 68 61 6e 67 65 28 50 48 41 4e 44 4c 45 2c 20 Change(PHANDLE, 0a30: 4c 50 4f 56 45 52 4c 41 50 50 45 44 29 3b 0d 0a LPOVERLAPPED);.. 0a40: 09 44 57 4f 52 44 20 53 65 6e 64 41 52 50 28 49 .DWORD SendARP(I 0a50: 50 41 64 64 72 2c 20 49 50 41 64 64 72 2c 20 50 PAddr, IPAddr, P 0a60: 55 4c 4f 4e 47 2c 20 50 55 4c 4f 4e 47 29 3b 0d ULONG, PULONG);. 0a70: 0a 09 44 57 4f 52 44 20 53 65 74 49 66 45 6e 74 ..DWORD SetIfEnt 0a80: 72 79 28 50 4d 49 42 5f 49 46 52 4f 57 29 3b 0d ry(PMIB_IFROW);. 0a90: 0a 09 44 57 4f 52 44 20 53 65 74 49 70 46 6f 72 ..DWORD SetIpFor 0aa0: 77 61 72 64 45 6e 74 72 79 28 50 4d 49 42 5f 49 wardEntry(PMIB_I 0ab0: 50 46 4f 52 57 41 52 44 52 4f 57 29 3b 0d 0a 09 PFORWARDROW);... 0ac0: 44 57 4f 52 44 20 53 65 74 49 70 4e 65 74 45 6e DWORD SetIpNetEn 0ad0: 74 72 79 28 50 4d 49 42 5f 49 50 4e 45 54 52 4f try(PMIB_IPNETRO 0ae0: 57 29 3b 0d 0a 09 44 57 4f 52 44 20 53 65 74 49 W);...DWORD SetI 0af0: 70 53 74 61 74 69 73 74 69 63 73 28 50 4d 49 42 pStatistics(PMIB 0b00: 5f 49 50 53 54 41 54 53 29 3b 0d 0a 09 44 57 4f _IPSTATS);...DWO 0b10: 52 44 20 53 65 74 49 70 54 54 4c 28 55 49 4e 54 RD SetIpTTL(UINT 0b20: 29 3b 0d 0a 09 44 57 4f 52 44 20 53 65 74 54 63 );...DWORD SetTc 0b30: 70 45 6e 74 72 79 28 50 4d 49 42 5f 54 43 50 52 pEntry(PMIB_TCPR 0b40: 4f 57 29 3b 0d 0a 09 44 57 4f 52 44 20 55 6e 65 OW);...DWORD Une 0b50: 6e 61 62 6c 65 52 6f 75 74 65 72 28 4f 56 45 52 nableRouter(OVER 0b60: 4c 41 50 50 45 44 2a 2c 20 4c 50 44 57 4f 52 44 LAPPED*, LPDWORD 0b70: 29 3b 0d 0a 7d 0d 0a );..}..