First instance of DHCP client API. Not tested yet. Next, the control

panel.

svn path=/trunk/; revision=14600
This commit is contained in:
Art Yerkes 2005-04-12 23:25:14 +00:00
parent 1df2f8903a
commit d91b173cb3
4 changed files with 190 additions and 0 deletions

View file

@ -0,0 +1,140 @@
/* $Id: dllmain.c 12852 2005-01-06 13:58:04Z mf $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: lib/dhcpcapi/dhcpcapi.c
* PURPOSE: Client API for DHCP
* PROGRAMMER: arty (ayerkes@speakeasy.net)
* UPDATE HISTORY:
* Created 12/04/2005
*/
#include <roscfg.h>
#include <winsock2.h>
#include <dhcpcsdk.h>
#include <rosdhcp_public.h>
#define DHCP_TIMEOUT 1000
#define EXPORT __declspec(dllexport) WINAPI
DWORD EXPORT DhcpCApiInitialize(LPDWORD Version) {
*Version = 2;
return 0;
}
VOID EXPORT DhcpCApiCleanup() {
}
DWORD EXPORT DhcpQueryHWInfo( DWORD AdapterIndex,
PDWORD MediaType,
PDWORD Mtu,
PDWORD Speed ) {
COMM_DHCP_REQ Req;
COMM_DHCP_REPLY Reply;
DWORD BytesRead;
BOOL Result;
Req.Type = DhcpReqQueryHWInfo;
Req.AdapterIndex = AdapterIndex;
Result = CallNamedPipe
( DHCP_PIPE_NAME, &Req, sizeof(Req), &Reply, sizeof(Reply),
&BytesRead, DHCP_TIMEOUT );
if( !Reply.Reply ) return 0;
else {
*MediaType = Reply.QueryHWInfo.MediaType;
*Mtu = Reply.QueryHWInfo.Mtu;
*Speed = Reply.QueryHWInfo.Speed;
return 1;
}
}
DWORD EXPORT DhcpLeaseIpAddress( DWORD AdapterIndex ) {
COMM_DHCP_REQ Req;
COMM_DHCP_REPLY Reply;
DWORD BytesRead;
BOOL Result;
Req.Type = DhcpReqLeaseIpAddress;
Req.AdapterIndex = AdapterIndex;
Result = CallNamedPipe
( DHCP_PIPE_NAME, &Req, sizeof(Req), &Reply, sizeof(Reply),
&BytesRead, DHCP_TIMEOUT );
return Reply.Reply;
}
DWORD EXPORT DhcpReleaseIpAddressLease( DWORD AdapterIndex ) {
COMM_DHCP_REQ Req;
COMM_DHCP_REPLY Reply;
DWORD BytesRead;
BOOL Result;
Req.Type = DhcpReqReleaseIpAddress;
Req.AdapterIndex = AdapterIndex;
Result = CallNamedPipe
( DHCP_PIPE_NAME, &Req, sizeof(Req), &Reply, sizeof(Reply),
&BytesRead, DHCP_TIMEOUT );
return Reply.Reply;
}
DWORD EXPORT DhcpRenewIpAddressLease( DWORD AdapterIndex ) {
COMM_DHCP_REQ Req;
COMM_DHCP_REPLY Reply;
DWORD BytesRead;
BOOL Result;
Req.Type = DhcpReqRenewIpAddress;
Req.AdapterIndex = AdapterIndex;
Result = CallNamedPipe
( DHCP_PIPE_NAME, &Req, sizeof(Req), &Reply, sizeof(Reply),
&BytesRead, DHCP_TIMEOUT );
return Reply.Reply;
}
DWORD EXPORT DhcpStaticRefreshParams( DWORD AdapterIndex,
DWORD Address,
DWORD Netmask ) {
COMM_DHCP_REQ Req;
COMM_DHCP_REPLY Reply;
DWORD BytesRead;
BOOL Result;
Req.Type = DhcpReqStaticRefreshParams;
Req.AdapterIndex = AdapterIndex;
Req.Body.StaticRefreshParams.IPAddress = Address;
Req.Body.StaticRefreshParams.Netmask = Netmask;
Result = CallNamedPipe
( DHCP_PIPE_NAME, &Req, sizeof(Req), &Reply, sizeof(Reply),
&BytesRead, DHCP_TIMEOUT );
return Reply.Reply;
}
INT STDCALL
DllMain(PVOID hinstDll,
ULONG dwReason,
PVOID reserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinstDll);
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
/* EOF */

View file

@ -0,0 +1,16 @@
; $Id: dhcpcapi.def 14337 2005-03-26 22:10:04Z $
;
; dhcpcapi.def
;
; ReactOS Operating System
;
LIBRARY dhcpcapi.dll
EXPORTS
DhcpCApiInitialize@4
DhcpCApiCleanup@0
DhcpQueryHWInfo@16
DhcpLeaseIpAddress@4
DhcpReleaseIpAddressLease@4
DhcpRenewIpAddressLease@4
DhcpStaticRefreshParams@12
; EOF

View file

@ -0,0 +1,7 @@
#include <defines.h>
#define REACTOS_VERSION_DLL
#define REACTOS_STR_FILE_DESCRIPTION "DHCP Client API\0"
#define REACTOS_STR_INTERNAL_NAME "dhcpcapi\0"
#define REACTOS_STR_ORIGINAL_FILENAME "dhcpcapi.dll\0"
#include <reactos/version.rc>

View file

@ -0,0 +1,27 @@
# $Id: makefile 12852 2005-01-06 13:58:04Z mf $
PATH_TO_TOP = ../..
TARGET_TYPE = dynlink
TARGET_NAME = dhcpcapi
TARGET_CFLAGS = -Wall -Werror \
-D__USE_W32API \
-D_WIN32_IE=0x0500 \
-D_WIN32_WINNT=0x501 \
-DWINVER=0x600 \
TARGET_LFLAGS = -nostartfiles -nostdlib
TARGET_SDKLIBS = ntdll.a kernel32.a
TARGET_OBJECTS = dhcpcapi.o
DEP_OBJECTS = $(TARGET_OBJECTS)
include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk
include $(TOOLS_PATH)/depend.mk