ReactOS  0.4.11-dev-765-g5e024bf
rosdhcp.h File Reference
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <winreg.h>
#include <ndk/rtlfuncs.h>
#include <dhcpcsdk.h>
#include <dhcp/rosdhcp_public.h>
#include "debug.h"
#include "dhcpd.h"
Include dependency graph for rosdhcp.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _DHCP_ADAPTER
 

Macros

#define WIN32_NO_STATUS
 
#define _INC_WINDOWS
 
#define COM_NO_WINDOWS_H
 
#define NTOS_MODE_USER
 
#define IFNAMSIZ   MAX_INTERFACE_NAME_LEN
 
#define DHCP_DISCOVER_INTERVAL   5
 
#define DHCP_REBOOT_TIMEOUT   10
 
#define DHCP_PANIC_TIMEOUT   20
 
#define DHCP_BACKOFF_MAX   300
 
#define DHCP_DEFAULT_LEASE_TIME   43200 /* 12 hours */
 
#define _PATH_DHCLIENT_PID   "\\systemroot\\system32\\drivers\\etc\\dhclient.pid"
 
#define _SSIZE_T_DEFINED
 
#define TIME   uintTIME
 
#define INLINE   inline
 
#define PROTO(x)   x
 
#define random   rand
 
#define srandom   srand
 

Typedefs

typedef voidVOIDPTR
 
typedef unsigned char u_int8_t
 
typedef unsigned short u_int16_t
 
typedef unsigned int u_int32_t
 
typedef charcaddr_t
 
typedef int ssize_t
 
typedef u_int32_t uintTIME
 
typedef void handler_t PROTO ((struct packet *))
 
typedef struct _DHCP_ADAPTER DHCP_ADAPTER
 
typedef struct _DHCP_ADAPTERPDHCP_ADAPTER
 
typedef DWORD(* PipeSendFunc )(COMM_DHCP_REPLY *Reply)
 

Functions

int init_client (void)
 
void stop_client (void)
 
void AdapterInit (VOID)
 
HANDLE StartAdapterDiscovery (VOID)
 
void AdapterStop (VOID)
 
PDHCP_ADAPTER AdapterGetFirst (VOID)
 
PDHCP_ADAPTER AdapterGetNext (PDHCP_ADAPTER)
 
PDHCP_ADAPTER AdapterFindIndex (unsigned int AdapterIndex)
 
PDHCP_ADAPTER AdapterFindInfo (struct interface_info *info)
 
PDHCP_ADAPTER AdapterFindByHardwareAddress (u_int8_t haddr[16], u_int8_t hlen)
 
HANDLE PipeInit (VOID)
 
VOID ApiInit (VOID)
 
VOID ApiFree (VOID)
 
VOID ApiLock (VOID)
 
VOID ApiUnlock (VOID)
 
DWORD DSQueryHWInfo (PipeSendFunc Send, COMM_DHCP_REQ *Req)
 
DWORD DSLeaseIpAddress (PipeSendFunc Send, COMM_DHCP_REQ *Req)
 
DWORD DSRenewIpAddressLease (PipeSendFunc Send, COMM_DHCP_REQ *Req)
 
DWORD DSReleaseIpAddressLease (PipeSendFunc Send, COMM_DHCP_REQ *Req)
 
DWORD DSStaticRefreshParams (PipeSendFunc Send, COMM_DHCP_REQ *Req)
 
DWORD DSGetAdapterInfo (PipeSendFunc Send, COMM_DHCP_REQ *Req)
 
int inet_aton (const char *s, struct in_addr *addr)
 
int warn (char *format,...)
 

Macro Definition Documentation

#define _INC_WINDOWS

Definition at line 7 of file rosdhcp.h.

#define _PATH_DHCLIENT_PID   "\\systemroot\\system32\\drivers\\etc\\dhclient.pid"

Definition at line 31 of file rosdhcp.h.

#define _SSIZE_T_DEFINED

Definition at line 39 of file rosdhcp.h.

#define COM_NO_WINDOWS_H

Definition at line 8 of file rosdhcp.h.

#define DHCP_BACKOFF_MAX   300

Definition at line 29 of file rosdhcp.h.

Referenced by AdapterDiscoveryThread().

#define DHCP_DEFAULT_LEASE_TIME   43200 /* 12 hours */

Definition at line 30 of file rosdhcp.h.

Referenced by dhcpack().

#define DHCP_DISCOVER_INTERVAL   5

Definition at line 26 of file rosdhcp.h.

Referenced by AdapterDiscoveryThread().

#define DHCP_PANIC_TIMEOUT   20

Definition at line 28 of file rosdhcp.h.

Referenced by AdapterDiscoveryThread().

#define DHCP_REBOOT_TIMEOUT   10

Definition at line 27 of file rosdhcp.h.

Referenced by AdapterDiscoveryThread().

Definition at line 20 of file rosdhcp.h.

#define INLINE   inline

Definition at line 56 of file rosdhcp.h.

#define NTOS_MODE_USER

Definition at line 13 of file rosdhcp.h.

#define PROTO (   x)    x

Definition at line 57 of file rosdhcp.h.

#define random   rand

Definition at line 81 of file rosdhcp.h.

Referenced by filesys_GetTempName(), getRandom(), and main().

#define srandom   srand

Definition at line 82 of file rosdhcp.h.

Referenced by main().

Definition at line 53 of file rosdhcp.h.

Referenced by inflate().

#define WIN32_NO_STATUS

Definition at line 6 of file rosdhcp.h.

Typedef Documentation

typedef char* caddr_t

Definition at line 36 of file rosdhcp.h.

typedef DWORD(* PipeSendFunc)(COMM_DHCP_REPLY *Reply)

Definition at line 79 of file rosdhcp.h.

typedef void handler_t PROTO((struct packet *))

Definition at line 59 of file rosdhcp.h.

typedef int ssize_t

Definition at line 48 of file rosdhcp.h.

typedef unsigned short u_int16_t

Definition at line 34 of file rosdhcp.h.

typedef unsigned int u_int32_t

Definition at line 35 of file rosdhcp.h.

typedef unsigned char u_int8_t

Definition at line 33 of file rosdhcp.h.

Definition at line 52 of file rosdhcp.h.

typedef void* VOIDPTR

Definition at line 32 of file rosdhcp.h.

Function Documentation

PDHCP_ADAPTER AdapterFindByHardwareAddress ( u_int8_t  haddr[16],
u_int8_t  hlen 
)

Definition at line 555 of file adapter.c.

Referenced by AdapterDiscoveryThread(), and got_one().

555  {
556  PDHCP_ADAPTER Adapter;
557  PLIST_ENTRY ListEntry;
558 
559  for(ListEntry = AdapterList.Flink;
560  ListEntry != &AdapterList;
561  ListEntry = ListEntry->Flink) {
562  Adapter = CONTAINING_RECORD( ListEntry, DHCP_ADAPTER, ListEntry );
563  if (Adapter->DhclientInfo.hw_address.hlen == hlen &&
564  !memcmp(Adapter->DhclientInfo.hw_address.haddr,
565  haddr,
566  hlen)) return Adapter;
567  }
568 
569  return NULL;
570 }
static LIST_ENTRY AdapterList
Definition: adapter.c:4
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
smooth NULL
Definition: ftsmooth.c:416
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
struct _LIST_ENTRY * Flink
Definition: typedefs.h:119
struct interface_info DhclientInfo
Definition: rosdhcp.h:71
Definition: typedefs.h:117
PDHCP_ADAPTER AdapterFindIndex ( unsigned int  AdapterIndex)

Definition at line 513 of file adapter.c.

Referenced by DSGetAdapterInfo(), DSLeaseIpAddress(), DSQueryHWInfo(), DSReleaseIpAddressLease(), DSRenewIpAddressLease(), and DSStaticRefreshParams().

513  {
514  PDHCP_ADAPTER Adapter;
515  PLIST_ENTRY ListEntry;
516 
517  for( ListEntry = AdapterList.Flink;
518  ListEntry != &AdapterList;
519  ListEntry = ListEntry->Flink ) {
520  Adapter = CONTAINING_RECORD( ListEntry, DHCP_ADAPTER, ListEntry );
521  if( Adapter->IfMib.dwIndex == indx ) return Adapter;
522  }
523 
524  return NULL;
525 }
static LIST_ENTRY AdapterList
Definition: adapter.c:4
MIB_IFROW IfMib
Definition: rosdhcp.h:66
smooth NULL
Definition: ftsmooth.c:416
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
struct _LIST_ENTRY * Flink
Definition: typedefs.h:119
Definition: typedefs.h:117
DWORD dwIndex
Definition: ifmib.h:38
PDHCP_ADAPTER AdapterFindInfo ( struct interface_info info)

Definition at line 541 of file adapter.c.

Referenced by bind_lease(), got_one(), send_request(), and state_panic().

541  {
542  PDHCP_ADAPTER Adapter;
543  PLIST_ENTRY ListEntry;
544 
545  for( ListEntry = AdapterList.Flink;
546  ListEntry != &AdapterList;
547  ListEntry = ListEntry->Flink ) {
548  Adapter = CONTAINING_RECORD( ListEntry, DHCP_ADAPTER, ListEntry );
549  if( ip == &Adapter->DhclientInfo ) return Adapter;
550  }
551 
552  return NULL;
553 }
static LIST_ENTRY AdapterList
Definition: adapter.c:4
smooth NULL
Definition: ftsmooth.c:416
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
struct _LIST_ENTRY * Flink
Definition: typedefs.h:119
Definition: dhcpd.h:61
struct interface_info DhclientInfo
Definition: rosdhcp.h:71
Definition: typedefs.h:117
PDHCP_ADAPTER AdapterGetFirst ( VOID  )
PDHCP_ADAPTER AdapterGetNext ( PDHCP_ADAPTER  )

Definition at line 579 of file adapter.c.

580 {
581  if( This->ListEntry.Flink == &AdapterList ) return NULL;
582  return CONTAINING_RECORD
583  ( This->ListEntry.Flink, DHCP_ADAPTER, ListEntry );
584 }
static LIST_ENTRY AdapterList
Definition: adapter.c:4
smooth NULL
Definition: ftsmooth.c:416
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
void AdapterInit ( VOID  )
void AdapterStop ( VOID  )
VOID ApiFree ( VOID  )
VOID ApiInit ( VOID  )
VOID ApiLock ( VOID  )
VOID ApiUnlock ( VOID  )
DWORD DSGetAdapterInfo ( PipeSendFunc  Send,
COMM_DHCP_REQ Req 
)

Definition at line 209 of file api.c.

Referenced by PipeThreadProc().

209  {
210  COMM_DHCP_REPLY Reply;
211  PDHCP_ADAPTER Adapter;
212 
213  ApiLock();
214 
215  Adapter = AdapterFindIndex( Req->AdapterIndex );
216 
217  Reply.Reply = Adapter ? 1 : 0;
218 
219  if( Adapter ) {
220  Reply.GetAdapterInfo.DhcpEnabled = (S_STATIC != Adapter->DhclientState.state);
221  if (S_BOUND == Adapter->DhclientState.state) {
222  if (sizeof(Reply.GetAdapterInfo.DhcpServer) ==
223  Adapter->DhclientState.active->serveraddress.len) {
224  memcpy(&Reply.GetAdapterInfo.DhcpServer,
225  Adapter->DhclientState.active->serveraddress.iabuf,
226  Adapter->DhclientState.active->serveraddress.len);
227  } else {
228  DPRINT1("Unexpected server address len %d\n",
229  Adapter->DhclientState.active->serveraddress.len);
230  Reply.GetAdapterInfo.DhcpServer = htonl(INADDR_NONE);
231  }
232  Reply.GetAdapterInfo.LeaseObtained = Adapter->DhclientState.active->obtained;
233  Reply.GetAdapterInfo.LeaseExpires = Adapter->DhclientState.active->expiry;
234  } else {
235  Reply.GetAdapterInfo.DhcpServer = htonl(INADDR_NONE);
236  Reply.GetAdapterInfo.LeaseObtained = 0;
237  Reply.GetAdapterInfo.LeaseExpires = 0;
238  }
239  }
240 
241  ApiUnlock();
242 
243  return Send( &Reply );
244 }
Definition: dhcpd.h:175
struct _COMM_DHCP_REPLY::@3289 GetAdapterInfo
#define htonl(x)
Definition: module.h:212
#define INADDR_NONE
Definition: tcp.c:42
PDHCP_ADAPTER AdapterFindIndex(unsigned int indx)
Definition: adapter.c:513
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
struct client_state DhclientState
Definition: rosdhcp.h:72
#define DPRINT1
Definition: precomp.h:8
VOID ApiUnlock()
Definition: api.c:26
VOID ApiLock()
Definition: api.c:22
DWORD DSLeaseIpAddress ( PipeSendFunc  Send,
COMM_DHCP_REQ Req 
)

Definition at line 36 of file api.c.

Referenced by PipeThreadProc().

36  {
37  COMM_DHCP_REPLY Reply;
38  PDHCP_ADAPTER Adapter;
39  struct protocol* proto;
40 
41  ApiLock();
42 
43  Adapter = AdapterFindIndex( Req->AdapterIndex );
44 
45  Reply.Reply = Adapter ? 1 : 0;
46 
47  if( Adapter ) {
48  proto = find_protocol_by_adapter( &Adapter->DhclientInfo );
49  if (proto)
50  remove_protocol(proto);
51 
52  add_protocol( Adapter->DhclientInfo.name,
53  Adapter->DhclientInfo.rfdesc, got_one,
54  &Adapter->DhclientInfo );
55 
56  Adapter->DhclientInfo.client->state = S_INIT;
57  state_reboot(&Adapter->DhclientInfo);
58 
61  }
62 
63  ApiUnlock();
64 
65  return Send( &Reply );
66 }
void state_reboot(void *ipp)
Definition: dhclient.c:180
Definition: dhcpd.h:172
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:679
void got_one(struct protocol *l)
Definition: dispatch.c:195
void remove_protocol(struct protocol *proto)
Definition: dispatch.c:360
smooth NULL
Definition: ftsmooth.c:416
struct protocol * find_protocol_by_adapter(struct interface_info *info)
Definition: dispatch.c:413
void add_protocol(char *name, int fd, void(*handler)(struct protocol *), void *local)
Definition: dispatch.c:343
PDHCP_ADAPTER AdapterFindIndex(unsigned int indx)
Definition: adapter.c:513
struct interface_info DhclientInfo
Definition: rosdhcp.h:71
VOID ApiUnlock()
Definition: api.c:26
HANDLE AdapterStateChangedEvent
Definition: dispatch.c:51
VOID ApiLock()
Definition: api.c:22
DWORD DSQueryHWInfo ( PipeSendFunc  Send,
COMM_DHCP_REQ Req 
)

Definition at line 68 of file api.c.

Referenced by PipeThreadProc().

68  {
69  COMM_DHCP_REPLY Reply;
70  PDHCP_ADAPTER Adapter;
71 
72  ApiLock();
73 
74  Adapter = AdapterFindIndex( Req->AdapterIndex );
75 
76  Reply.Reply = Adapter ? 1 : 0;
77 
78  if (Adapter) {
79  Reply.QueryHWInfo.AdapterIndex = Req->AdapterIndex;
80  Reply.QueryHWInfo.MediaType = Adapter->IfMib.dwType;
81  Reply.QueryHWInfo.Mtu = Adapter->IfMib.dwMtu;
82  Reply.QueryHWInfo.Speed = Adapter->IfMib.dwSpeed;
83  }
84 
85  ApiUnlock();
86 
87  return Send( &Reply );
88 }
MIB_IFROW IfMib
Definition: rosdhcp.h:66
DWORD dwType
Definition: ifmib.h:39
DWORD dwSpeed
Definition: ifmib.h:41
struct _COMM_DHCP_REPLY::@3288 QueryHWInfo
PDHCP_ADAPTER AdapterFindIndex(unsigned int indx)
Definition: adapter.c:513
VOID ApiUnlock()
Definition: api.c:26
DWORD dwMtu
Definition: ifmib.h:40
VOID ApiLock()
Definition: api.c:22
DWORD DSReleaseIpAddressLease ( PipeSendFunc  Send,
COMM_DHCP_REQ Req 
)

Definition at line 90 of file api.c.

Referenced by PipeThreadProc().

90  {
91  COMM_DHCP_REPLY Reply;
92  PDHCP_ADAPTER Adapter;
93  struct protocol* proto;
94 
95  ApiLock();
96 
97  Adapter = AdapterFindIndex( Req->AdapterIndex );
98 
99  Reply.Reply = Adapter ? 1 : 0;
100 
101  if( Adapter ) {
102  if (Adapter->NteContext)
103  {
104  DeleteIPAddress( Adapter->NteContext );
105  Adapter->NteContext = 0;
106  }
107  if (Adapter->RouterMib.dwForwardNextHop)
108  {
109  DeleteIpForwardEntry( &Adapter->RouterMib );
110  Adapter->RouterMib.dwForwardNextHop = 0;
111  }
112 
113  proto = find_protocol_by_adapter( &Adapter->DhclientInfo );
114  if (proto)
115  remove_protocol(proto);
116 
117  Adapter->DhclientInfo.client->active = NULL;
118  Adapter->DhclientInfo.client->state = S_INIT;
119 
122  }
123 
124  ApiUnlock();
125 
126  return Send( &Reply );
127 }
DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW pRoute)
ULONG NteContext
Definition: rosdhcp.h:70
Definition: dhcpd.h:172
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:679
void remove_protocol(struct protocol *proto)
Definition: dispatch.c:360
smooth NULL
Definition: ftsmooth.c:416
MIB_IPFORWARDROW RouterMib
Definition: rosdhcp.h:67
struct protocol * find_protocol_by_adapter(struct interface_info *info)
Definition: dispatch.c:413
DWORD dwForwardNextHop
Definition: ipmib.h:74
PDHCP_ADAPTER AdapterFindIndex(unsigned int indx)
Definition: adapter.c:513
struct interface_info DhclientInfo
Definition: rosdhcp.h:71
DWORD WINAPI DeleteIPAddress(ULONG NTEContext)
VOID ApiUnlock()
Definition: api.c:26
HANDLE AdapterStateChangedEvent
Definition: dispatch.c:51
VOID ApiLock()
Definition: api.c:22
DWORD DSRenewIpAddressLease ( PipeSendFunc  Send,
COMM_DHCP_REQ Req 
)

Definition at line 129 of file api.c.

Referenced by PipeThreadProc().

129  {
130  COMM_DHCP_REPLY Reply;
131  PDHCP_ADAPTER Adapter;
132  struct protocol* proto;
133 
134  ApiLock();
135 
136  Adapter = AdapterFindIndex( Req->AdapterIndex );
137 
138  if( !Adapter || Adapter->DhclientState.state == S_STATIC ) {
139  Reply.Reply = 0;
140  ApiUnlock();
141  return Send( &Reply );
142  }
143 
144  Reply.Reply = 1;
145 
146  proto = find_protocol_by_adapter( &Adapter->DhclientInfo );
147  if (proto)
148  remove_protocol(proto);
149 
150  add_protocol( Adapter->DhclientInfo.name,
151  Adapter->DhclientInfo.rfdesc, got_one,
152  &Adapter->DhclientInfo );
153 
154  Adapter->DhclientInfo.client->state = S_INIT;
155  state_reboot(&Adapter->DhclientInfo);
156 
159 
160  ApiUnlock();
161 
162  return Send( &Reply );
163 }
void state_reboot(void *ipp)
Definition: dhclient.c:180
Definition: dhcpd.h:172
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:679
void got_one(struct protocol *l)
Definition: dispatch.c:195
void remove_protocol(struct protocol *proto)
Definition: dispatch.c:360
smooth NULL
Definition: ftsmooth.c:416
struct protocol * find_protocol_by_adapter(struct interface_info *info)
Definition: dispatch.c:413
void add_protocol(char *name, int fd, void(*handler)(struct protocol *), void *local)
Definition: dispatch.c:343
PDHCP_ADAPTER AdapterFindIndex(unsigned int indx)
Definition: adapter.c:513
struct interface_info DhclientInfo
Definition: rosdhcp.h:71
struct client_state DhclientState
Definition: rosdhcp.h:72
VOID ApiUnlock()
Definition: api.c:26
HANDLE AdapterStateChangedEvent
Definition: dispatch.c:51
VOID ApiLock()
Definition: api.c:22
DWORD DSStaticRefreshParams ( PipeSendFunc  Send,
COMM_DHCP_REQ Req 
)

Definition at line 165 of file api.c.

Referenced by PipeThreadProc().

165  {
167  COMM_DHCP_REPLY Reply;
168  PDHCP_ADAPTER Adapter;
169  struct protocol* proto;
170 
171  ApiLock();
172 
173  Adapter = AdapterFindIndex( Req->AdapterIndex );
174 
175  Reply.Reply = Adapter ? 1 : 0;
176 
177  if( Adapter ) {
178  if (Adapter->NteContext)
179  {
180  DeleteIPAddress( Adapter->NteContext );
181  Adapter->NteContext = 0;
182  }
183  if (Adapter->RouterMib.dwForwardNextHop)
184  {
185  DeleteIpForwardEntry( &Adapter->RouterMib );
186  Adapter->RouterMib.dwForwardNextHop = 0;
187  }
188 
189  Adapter->DhclientState.state = S_STATIC;
190  proto = find_protocol_by_adapter( &Adapter->DhclientInfo );
191  if (proto)
192  remove_protocol(proto);
193  Status = AddIPAddress( Req->Body.StaticRefreshParams.IPAddress,
194  Req->Body.StaticRefreshParams.Netmask,
195  Req->AdapterIndex,
196  &Adapter->NteContext,
197  &Adapter->NteInstance );
198  Reply.Reply = NT_SUCCESS(Status);
199 
202  }
203 
204  ApiUnlock();
205 
206  return Send( &Reply );
207 }
ULONG NteInstance
Definition: rosdhcp.h:70
DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW pRoute)
ULONG NteContext
Definition: rosdhcp.h:70
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:679
union _COMM_DHCP_REQ::@3283 Body
void remove_protocol(struct protocol *proto)
Definition: dispatch.c:360
smooth NULL
Definition: ftsmooth.c:416
MIB_IPFORWARDROW RouterMib
Definition: rosdhcp.h:67
struct protocol * find_protocol_by_adapter(struct interface_info *info)
Definition: dispatch.c:413
DWORD WINAPI AddIPAddress(IPAddr Address, IPMask Netmask, DWORD IfIndex, PULONG NteContext, PULONG NteInstance)
Definition: iphlpapi_main.c:69
LONG NTSTATUS
Definition: precomp.h:26
DWORD dwForwardNextHop
Definition: ipmib.h:74
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:24
PDHCP_ADAPTER AdapterFindIndex(unsigned int indx)
Definition: adapter.c:513
struct interface_info DhclientInfo
Definition: rosdhcp.h:71
struct client_state DhclientState
Definition: rosdhcp.h:72
Status
Definition: gdiplustypes.h:24
DWORD WINAPI DeleteIPAddress(ULONG NTEContext)
VOID ApiUnlock()
Definition: api.c:26
HANDLE AdapterStateChangedEvent
Definition: dispatch.c:51
struct _COMM_DHCP_REQ::@3283::@3287 StaticRefreshParams
VOID ApiLock()
Definition: api.c:22
int inet_aton ( const char s,
struct in_addr addr 
)

Definition at line 32 of file compat.c.

34 {
35  ULONG Octets[4] = {0,0,0,0};
36  ULONG i = 0;
37 
38  if(!cp)
39  return 0;
40 
41  while(*cp)
42  {
43  CHAR c = *cp;
44  cp++;
45 
46  if(c == '.')
47  {
48  i++;
49  continue;
50  }
51 
52  if(c < '0' || c > '9')
53  return 0;
54 
55  Octets[i] *= 10;
56  Octets[i] += (c - '0');
57 
58  if(Octets[i] > 255)
59  return 0;
60  }
61 
62  inp->S_un.S_addr = (Octets[3] << 24) + (Octets[2] << 16) + (Octets[1] << 8) + Octets[0];
63  return 1;
64 }
char CHAR
Definition: xmlstorage.h:175
GLenum GLclampf GLint i
Definition: glfuncs.h:14
const GLubyte * c
Definition: glext.h:8905
POINT cp
Definition: magnifier.c:60
unsigned int ULONG
Definition: retypes.h:1
int init_client ( void  )

Definition at line 111 of file dhclient.c.

Referenced by ServiceMain().

112 {
113  ApiInit();
114  AdapterInit();
115 
116  tzset();
117 
119  sockaddr_broadcast.sin_family = AF_INET;
121  sockaddr_broadcast.sin_addr.s_addr = INADDR_BROADCAST;
122  inaddr_any.s_addr = INADDR_ANY;
124 
126  {
127  DbgPrint("DHCPCSVC: PipeInit() failed!\n");
128  AdapterStop();
129  ApiFree();
130  return 0; // FALSE
131  }
132 
133  return 1; // TRUE
134 }
_CRTIMP void __cdecl tzset(void)
#define INADDR_BROADCAST
Definition: winsock.h:313
#define DbgPrint
Definition: loader.c:25
#define REMOTE_PORT
Definition: dhcpd.h:113
void AdapterInit()
Definition: adapter.c:187
#define INVALID_HANDLE_VALUE
Definition: compat.h:391
#define INADDR_ANY
Definition: StrAddr.c:4
VOID ApiFree()
Definition: api.c:30
HANDLE PipeInit()
Definition: pipe.c:90
VOID ApiInit()
Definition: api.c:18
void do_packet(struct interface_info *interface, struct dhcp_packet *packet, int len, unsigned int from_port, struct iaddr from, struct hardware *hfrom)
Definition: options.c:687
void AdapterStop()
Definition: adapter.c:500
struct sockaddr_in sockaddr_broadcast
Definition: dhclient.c:82
struct in_addr inaddr_any
Definition: dhclient.c:81
#define AF_INET
Definition: tcpip.h:117
#define htons(x)
Definition: module.h:213
#define memset(x, y, z)
Definition: compat.h:39
void(* bootp_packet_handler)(struct interface_info *, struct dhcp_packet *, int, unsigned int, struct iaddr, struct hardware *)
Definition: dispatch.c:55
HANDLE PipeInit ( VOID  )
HANDLE StartAdapterDiscovery ( VOID  )

Definition at line 471 of file adapter.c.

Referenced by dispatch().

471  {
472  HANDLE ThreadHandle, EventHandle;
473 
474  EventHandle = CreateEvent(NULL,
475  FALSE,
476  FALSE,
477  NULL);
478 
479  if (EventHandle == NULL)
480  return NULL;
481 
482  ThreadHandle = CreateThread(NULL,
483  0,
485  (LPVOID)EventHandle,
486  0,
487  NULL);
488 
489  if (ThreadHandle == NULL)
490  {
491  CloseHandle(EventHandle);
492  return NULL;
493  }
494 
495  CloseHandle(ThreadHandle);
496 
497  return EventHandle;
498 }
#define CreateEvent
Definition: winbase.h:3562
#define CloseHandle
Definition: compat.h:398
#define FALSE
Definition: types.h:117
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:112
smooth NULL
Definition: ftsmooth.c:416
DWORD *typedef HANDLE
Definition: winlogon.h:61
DWORD WINAPI AdapterDiscoveryThread(LPVOID Context)
Definition: adapter.c:286
_Out_ PHANDLE EventHandle
Definition: iofuncs.h:855
void stop_client ( void  )

Definition at line 137 of file dhclient.c.

Referenced by ServiceMain().

138 {
139  // AdapterStop();
140  // ApiFree();
141  /* FIXME: Close pipe and kill pipe thread */
142 }
int warn ( char format,
  ... 
)

Definition at line 42 of file util.c.

Referenced by read_client_conf().

42  {
43  char buf[0x100];
44  int ret;
45  va_list arg_begin;
46  va_start( arg_begin, format );
47 
48  ret = _vsnprintf( buf, sizeof(buf), format, arg_begin );
49 
50  va_end( arg_begin );
51 
52  DPRINT("WARN: %s\n", buf);
53 
54  return ret;
55 }
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
#define va_end(ap)
Definition: acmsvcex.h:90
char * va_list
Definition: acmsvcex.h:78
void DPRINT(...)
Definition: polytest.cpp:61
int ret
#define va_start(ap, A)
Definition: acmsvcex.h:91
#define _vsnprintf
Definition: xmlstorage.h:202