# -*- coding: binary -*-
module Rex
module Post
module Meterpreter
module Extensions
module Stdapi
module Railgun
module Def

class Def_iphlpapi

	def self.create_dll(dll_path = 'iphlpapi')
		dll = DLL.new(dll_path, ApiConstants.manager)

		dll.add_function('CancelIPChangeNotify', 'BOOL',[
			["PBLOB","notifyOverlapped","in"],
			])

		dll.add_function('CreateProxyArpEntry', 'DWORD',[
			["DWORD","dwAddress","in"],
			["DWORD","dwMask","in"],
			["DWORD","dwIfIndex","in"],
			])

		dll.add_function('DeleteIPAddress', 'DWORD',[
			["DWORD","NTEContext","in"],
			])

		dll.add_function('DeleteProxyArpEntry', 'DWORD',[
			["DWORD","dwAddress","in"],
			["DWORD","dwMask","in"],
			["DWORD","dwIfIndex","in"],
			])

		dll.add_function('FlushIpNetTable', 'DWORD',[
			["DWORD","dwIfIndex","in"],
			])

		dll.add_function('GetAdapterIndex', 'DWORD',[
			["PWCHAR","AdapterName","in"],
			["PDWORD","IfIndex","inout"],
			])

		dll.add_function('GetBestInterface', 'DWORD',[
			["DWORD","dwDestAddr","in"],
			["PDWORD","pdwBestIfIndex","inout"],
			])

		dll.add_function('GetBestInterfaceEx', 'DWORD',[
			["PBLOB","pDestAddr","in"],
			["PDWORD","pdwBestIfIndex","inout"],
			])

		dll.add_function('GetFriendlyIfIndex', 'DWORD',[
			["DWORD","IfIndex","in"],
			])

		dll.add_function('GetNumberOfInterfaces', 'DWORD',[
			["PDWORD","pdwNumIf","inout"],
			])

		dll.add_function('GetRTTAndHopCount', 'BOOL',[
			["DWORD","DestIpAddress","in"],
			["PDWORD","HopCount","inout"],
			["DWORD","MaxHops","in"],
			["PDWORD","RTT","inout"],
			])

		dll.add_function('NotifyAddrChange', 'DWORD',[
			["PDWORD","Handle","inout"],
			["PBLOB","overlapped","in"],
			])

		dll.add_function('NotifyRouteChange', 'DWORD',[
			["PDWORD","Handle","inout"],
			["PBLOB","overlapped","in"],
			])

		dll.add_function('SendARP', 'DWORD',[
			["DWORD","DestIP","in"],
			["DWORD","SrcIP","in"],
			["PBLOB","pMacAddr","out"],
			["PDWORD","PhyAddrLen","inout"],
			])

		dll.add_function('SetIpTTL', 'DWORD',[
			["DWORD","nTTL","in"],
			])

		return dll
	end

end

end; end; end; end; end; end; end


