fix macro redefinition when compiling with msvc
[reactos.git] / reactos / lib / dhcpcapi / dhcpcapi.c
1 /* $Id: dllmain.c 12852 2005-01-06 13:58:04Z mf $
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: lib/dhcpcapi/dhcpcapi.c
6 * PURPOSE: Client API for DHCP
7 * PROGRAMMER: arty (ayerkes@speakeasy.net)
8 * UPDATE HISTORY:
9 * Created 12/04/2005
10 */
11
12 #include <roscfg.h>
13 #include <winsock2.h>
14 #include <dhcpcsdk.h>
15 #include <dhcp/rosdhcp_public.h>
16
17 #define DHCP_TIMEOUT 1000
18
19 DWORD APIENTRY DhcpCApiInitialize(LPDWORD Version) {
20 *Version = 2;
21 return 0;
22 }
23
24 VOID APIENTRY DhcpCApiCleanup() {
25 }
26
27 DWORD APIENTRY DhcpQueryHWInfo( DWORD AdapterIndex,
28 PDWORD MediaType,
29 PDWORD Mtu,
30 PDWORD Speed ) {
31 COMM_DHCP_REQ Req;
32 COMM_DHCP_REPLY Reply;
33 DWORD BytesRead;
34 BOOL Result;
35
36 Req.Type = DhcpReqQueryHWInfo;
37 Req.AdapterIndex = AdapterIndex;
38
39 Result = CallNamedPipe
40 ( DHCP_PIPE_NAME, &Req, sizeof(Req), &Reply, sizeof(Reply),
41 &BytesRead, DHCP_TIMEOUT );
42
43 if( !Reply.Reply ) return 0;
44 else {
45 *MediaType = Reply.QueryHWInfo.MediaType;
46 *Mtu = Reply.QueryHWInfo.Mtu;
47 *Speed = Reply.QueryHWInfo.Speed;
48 return 1;
49 }
50 }
51
52 DWORD APIENTRY DhcpLeaseIpAddress( DWORD AdapterIndex ) {
53 COMM_DHCP_REQ Req;
54 COMM_DHCP_REPLY Reply;
55 DWORD BytesRead;
56 BOOL Result;
57
58 Req.Type = DhcpReqLeaseIpAddress;
59 Req.AdapterIndex = AdapterIndex;
60
61 Result = CallNamedPipe
62 ( DHCP_PIPE_NAME, &Req, sizeof(Req), &Reply, sizeof(Reply),
63 &BytesRead, DHCP_TIMEOUT );
64
65 return Reply.Reply;
66 }
67
68 DWORD APIENTRY DhcpReleaseIpAddressLease( DWORD AdapterIndex ) {
69 COMM_DHCP_REQ Req;
70 COMM_DHCP_REPLY Reply;
71 DWORD BytesRead;
72 BOOL Result;
73
74 Req.Type = DhcpReqReleaseIpAddress;
75 Req.AdapterIndex = AdapterIndex;
76
77 Result = CallNamedPipe
78 ( DHCP_PIPE_NAME, &Req, sizeof(Req), &Reply, sizeof(Reply),
79 &BytesRead, DHCP_TIMEOUT );
80
81 return Reply.Reply;
82 }
83
84 DWORD APIENTRY DhcpRenewIpAddressLease( DWORD AdapterIndex ) {
85 COMM_DHCP_REQ Req;
86 COMM_DHCP_REPLY Reply;
87 DWORD BytesRead;
88 BOOL Result;
89
90 Req.Type = DhcpReqRenewIpAddress;
91 Req.AdapterIndex = AdapterIndex;
92
93 Result = CallNamedPipe
94 ( DHCP_PIPE_NAME, &Req, sizeof(Req), &Reply, sizeof(Reply),
95 &BytesRead, DHCP_TIMEOUT );
96
97 return Reply.Reply;
98 }
99
100 DWORD APIENTRY DhcpStaticRefreshParams( DWORD AdapterIndex,
101 DWORD Address,
102 DWORD Netmask ) {
103 COMM_DHCP_REQ Req;
104 COMM_DHCP_REPLY Reply;
105 DWORD BytesRead;
106 BOOL Result;
107
108 Req.Type = DhcpReqStaticRefreshParams;
109 Req.AdapterIndex = AdapterIndex;
110 Req.Body.StaticRefreshParams.IPAddress = Address;
111 Req.Body.StaticRefreshParams.Netmask = Netmask;
112
113 Result = CallNamedPipe
114 ( DHCP_PIPE_NAME, &Req, sizeof(Req), &Reply, sizeof(Reply),
115 &BytesRead, DHCP_TIMEOUT );
116
117 return Reply.Reply;
118 }
119
120 INT STDCALL
121 DllMain(PVOID hinstDll,
122 ULONG dwReason,
123 PVOID reserved)
124 {
125 switch (dwReason)
126 {
127 case DLL_PROCESS_ATTACH:
128 DisableThreadLibraryCalls(hinstDll);
129 break;
130
131 case DLL_PROCESS_DETACH:
132 break;
133 }
134
135 return TRUE;
136 }
137
138 /* EOF */