2005-10-19 21:22:28 +00:00
|
|
|
#ifndef ROSDHCP_H
|
|
|
|
#define ROSDHCP_H
|
|
|
|
|
2005-11-18 23:19:48 +00:00
|
|
|
#define WIN32_NO_STATUS
|
2006-01-08 08:17:38 +00:00
|
|
|
#include <winsock2.h>
|
2005-10-19 21:22:28 +00:00
|
|
|
#define NTOS_MODE_USER
|
|
|
|
#include <ndk/ntndk.h>
|
|
|
|
#include <iprtrmib.h>
|
|
|
|
#include <iphlpapi.h>
|
|
|
|
#include <dhcpcsdk.h>
|
|
|
|
#include <stdio.h>
|
2006-12-07 08:54:16 +00:00
|
|
|
#include <io.h>
|
2005-10-19 21:22:28 +00:00
|
|
|
#include "stdint.h"
|
|
|
|
#include "predec.h"
|
|
|
|
#include <dhcp/rosdhcp_public.h>
|
|
|
|
#include "debug.h"
|
|
|
|
#define IFNAMSIZ MAX_INTERFACE_NAME_LEN
|
|
|
|
#undef interface /* wine/objbase.h -- Grrr */
|
|
|
|
|
|
|
|
#undef IGNORE
|
|
|
|
#undef ACCEPT
|
|
|
|
#undef PREFER
|
|
|
|
#define DHCP_DISCOVER_INTERVAL 15
|
|
|
|
#define DHCP_REBOOT_TIMEOUT 300
|
|
|
|
#define DHCP_PANIC_TIMEOUT DHCP_REBOOT_TIMEOUT * 3
|
|
|
|
#define DHCP_BACKOFF_MAX 300
|
2009-07-10 21:32:02 +00:00
|
|
|
#define DHCP_DEFAULT_LEASE_TIME 43200 /* 12 hours */
|
2005-10-19 21:22:28 +00:00
|
|
|
#define _PATH_DHCLIENT_PID "\\systemroot\\system32\\drivers\\etc\\dhclient.pid"
|
|
|
|
typedef void *VOIDPTR;
|
|
|
|
|
2008-12-22 20:25:44 +00:00
|
|
|
#ifndef _SSIZE_T_DEFINED
|
|
|
|
#define _SSIZE_T_DEFINED
|
|
|
|
#undef ssize_t
|
|
|
|
#ifdef _WIN64
|
|
|
|
#if defined(__GNUC__) && defined(__STRICT_ANSI__)
|
|
|
|
typedef int ssize_t __attribute__ ((mode (DI)));
|
|
|
|
#else
|
|
|
|
typedef __int64 ssize_t;
|
|
|
|
#endif
|
|
|
|
#else
|
|
|
|
typedef int ssize_t;
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
2005-10-19 21:22:28 +00:00
|
|
|
typedef u_int32_t uintTIME;
|
|
|
|
#define TIME uintTIME
|
|
|
|
#include "dhcpd.h"
|
|
|
|
|
|
|
|
#define INLINE inline
|
|
|
|
#define PROTO(x) x
|
|
|
|
|
|
|
|
typedef void (*handler_t) PROTO ((struct packet *));
|
|
|
|
|
|
|
|
typedef struct _DHCP_ADAPTER {
|
|
|
|
LIST_ENTRY ListEntry;
|
|
|
|
MIB_IFROW IfMib;
|
2009-07-10 21:32:02 +00:00
|
|
|
MIB_IPFORWARDROW RouterMib;
|
2005-10-19 21:22:28 +00:00
|
|
|
MIB_IPADDRROW IfAddr;
|
|
|
|
SOCKADDR Address;
|
|
|
|
ULONG NteContext,NteInstance;
|
|
|
|
struct interface_info DhclientInfo;
|
|
|
|
struct client_state DhclientState;
|
|
|
|
struct client_config DhclientConfig;
|
|
|
|
struct sockaddr_in ListenAddr;
|
|
|
|
unsigned int BindStatus;
|
|
|
|
unsigned char recv_buf[1];
|
|
|
|
} DHCP_ADAPTER, *PDHCP_ADAPTER;
|
|
|
|
|
|
|
|
typedef DWORD (*PipeSendFunc)( COMM_DHCP_REPLY *Reply );
|
|
|
|
|
|
|
|
#define random rand
|
|
|
|
#define srandom srand
|
|
|
|
|
|
|
|
void AdapterInit(VOID);
|
2009-08-08 03:18:41 +00:00
|
|
|
BOOLEAN AdapterDiscover(VOID);
|
|
|
|
void AdapterStop(VOID);
|
2005-10-19 21:22:28 +00:00
|
|
|
HANDLE PipeInit(VOID);
|
2009-07-04 03:36:19 +00:00
|
|
|
extern PDHCP_ADAPTER AdapterGetFirst();
|
|
|
|
extern PDHCP_ADAPTER AdapterGetNext(PDHCP_ADAPTER);
|
2005-10-19 21:22:28 +00:00
|
|
|
extern PDHCP_ADAPTER AdapterFindIndex( unsigned int AdapterIndex );
|
|
|
|
extern PDHCP_ADAPTER AdapterFindInfo( struct interface_info *info );
|
2009-07-10 01:15:51 +00:00
|
|
|
extern PDHCP_ADAPTER AdapterFindByHardwareAddress( u_int8_t haddr[16], u_int8_t hlen );
|
2005-10-19 21:22:28 +00:00
|
|
|
extern VOID ApiInit();
|
|
|
|
extern VOID ApiLock();
|
|
|
|
extern VOID ApiUnlock();
|
|
|
|
extern DWORD DSQueryHWInfo( PipeSendFunc Send, COMM_DHCP_REQ *Req );
|
|
|
|
extern DWORD DSLeaseIpAddress( PipeSendFunc Send, COMM_DHCP_REQ *Req );
|
|
|
|
extern DWORD DSRenewIpAddressLease( PipeSendFunc Send, COMM_DHCP_REQ *Req );
|
|
|
|
extern DWORD DSReleaseIpAddressLease( PipeSendFunc Send, COMM_DHCP_REQ *Req );
|
2006-01-08 22:14:26 +00:00
|
|
|
extern DWORD DSStaticRefreshParams( PipeSendFunc Send, COMM_DHCP_REQ *Req );
|
|
|
|
extern DWORD DSGetAdapterInfo( PipeSendFunc Send, COMM_DHCP_REQ *Req );
|
2005-10-22 20:02:03 +00:00
|
|
|
extern int inet_aton(const char *s, struct in_addr *addr);
|
2005-10-19 21:22:28 +00:00
|
|
|
int warn( char *format, ... );
|
|
|
|
#endif/*ROSDHCP_H*/
|