Hex Artifact Content

Not logged in

Artifact 0e036969485d7abef687d822309ee3cf80c90cca:


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                             );..}..