00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _DHCPC_H
00027 #define _DHCPC_H
00028
00029 unsigned int DHCP_GetConfig( void );
00030 unsigned int DHCP_SendDiscover( unsigned int SOCKET, unsigned char * DHCPbuffer, unsigned char * Configbuffer );
00031 unsigned int DHCP_SendRequest( unsigned int SOCKET, unsigned char * DHCPbuffer, unsigned char * Configbuffer );
00032 unsigned int DHCP_AddOption( unsigned char Option, unsigned long ExtraData, unsigned char * Optionfield );
00033 unsigned int DHCP_PharseOption( void * Configbuffer, unsigned char * Optionfield );
00034 void DHCP_buildheader( unsigned char * DHCPbuffer );
00035
00039 union LONG_BYTE {
00040 unsigned char BYTE[4];
00041 unsigned long LONG;
00042 };
00043
00044 #define DHCP_CONFIG_LENGHT 24
00045
00049 struct DHCP_CONFIG {
00050 union LONG_BYTE Client_IP;
00051 union LONG_BYTE Router_IP;
00052 union LONG_BYTE Subnetmask;
00053 union LONG_BYTE DNS_IP;
00054 union LONG_BYTE Server_IP;
00055 union LONG_BYTE Leasetime;
00056 };
00057
00061 struct DHCP_HEADER {
00062 unsigned char Messages_Type;
00063 unsigned char Hardware_Type;
00064 unsigned char Hardware_Adress_Lenght;
00065 unsigned char Hops;
00066 unsigned long Transaction_ID;
00067 unsigned int Second_elapsed;
00068 unsigned int Bootp_Flags;
00069 union LONG_BYTE Client_IP;
00070 union LONG_BYTE Your_IP;
00071 union LONG_BYTE Server_IP;
00072 union LONG_BYTE Relay_IP;
00073 unsigned char Your_MACADRESS[16];
00074 unsigned char Servername[64];
00075 unsigned char Boot_Filename[128];
00076 unsigned long Magic_Cookie;
00077 unsigned char Options[96];
00078 };
00079
00080 #define DHCP_REQUEST_TIMEOUT 1000 // in 1/100 sekunden
00081
00082 #define SERVERNAME_LENGHT 64
00083 #define BOOT_FILENAME_LENGHT 128
00084 #define OPTION_LENGHT 96
00085
00086 #define DHCP_HEADER_LENGHT 336
00087
00088
00089 #define MAGIC_COOKIE 0x63538263
00090
00094 #define Option_SUBNETMASK 1
00095 #define Option_TIME_OFFSET 2
00096 #define Option_ROUTER 3
00097 #define Option_DOMAIN_NAME_SRVER 6
00098 #define Option_HOST_NAME 12
00099 #define Option_DOMAIN_NAME 15
00100 #define Option_BROADCAST_ADRESS 28
00101 #define Option_REQUESTET_IP_ADRESS 50
00102 #define Option_IP_ADRESS_LEASETIME 51
00103 #define Option_DHCP_MESSAGES_TYPE 53
00104 #define Option_SERVER_ID 54
00105 #define Option_OPTIONLIST 55
00106 #define Option_END 255
00107
00112 #define DHCP_DISCOVER 1
00113 #define DHCP_OFFER 2
00114 #define DHCP_REQUEST 3
00115 #define DHCP_ACK 5
00116
00118
00119 #define BOOT_REQUEST 1
00120 #define BOOT_REPLY 2
00121
00126 #define DHCPC_OK 0
00127 #define DHCPC_TIMEOUT 0xffff
00128
00130 #define HARDWARE_TYPE_ETHERNET 1
00131
00132 #endif