Select one of the symbols to view example projects that use it.
 
Outline
#define LWIP_HDR_PROT_DHCP_H
#include "lwip/opt.h"
#include "lwip/arch.h"
#include "lwip/prot/ip4.h"
#define DHCP_CHADDR_LEN
#define DHCP_SNAME_OFS
#define DHCP_SNAME_LEN
#define DHCP_FILE_OFS
#define DHCP_FILE_LEN
#define DHCP_MSG_LEN
#define DHCP_OPTIONS_OFS
#include "arch/bpstruct.h"
dhcp_msg
#include "arch/epstruct.h"
dhcp_state_enum_t
#define DHCP_BOOTREQUEST
#define DHCP_BOOTREPLY
#define DHCP_DISCOVER
#define DHCP_OFFER
#define DHCP_REQUEST
#define DHCP_DECLINE
#define DHCP_ACK
#define DHCP_NAK
#define DHCP_RELEASE
#define DHCP_INFORM
#define DHCP_MAGIC_COOKIE
#define DHCP_OPTION_PAD
#define DHCP_OPTION_SUBNET_MASK
#define DHCP_OPTION_ROUTER
#define DHCP_OPTION_DNS_SERVER
#define DHCP_OPTION_HOSTNAME
#define DHCP_OPTION_IP_TTL
#define DHCP_OPTION_MTU
#define DHCP_OPTION_BROADCAST
#define DHCP_OPTION_TCP_TTL
#define DHCP_OPTION_NTP
#define DHCP_OPTION_END
#define DHCP_OPTION_REQUESTED_IP
#define DHCP_OPTION_LEASE_TIME
#define DHCP_OPTION_OVERLOAD
#define DHCP_OPTION_MESSAGE_TYPE
#define DHCP_OPTION_MESSAGE_TYPE_LEN
#define DHCP_OPTION_SERVER_ID
#define DHCP_OPTION_PARAMETER_REQUEST_LIST
#define DHCP_OPTION_MAX_MSG_SIZE
#define DHCP_OPTION_MAX_MSG_SIZE_LEN
#define DHCP_OPTION_T1
#define DHCP_OPTION_T2
#define DHCP_OPTION_US
#define DHCP_OPTION_CLIENT_ID
#define DHCP_OPTION_TFTP_SERVERNAME
#define DHCP_OPTION_BOOTFILE
#define DHCP_OVERLOAD_NONE
#define DHCP_OVERLOAD_FILE
#define DHCP_OVERLOAD_SNAME
#define DHCP_OVERLOAD_SNAME_FILE
Files
loading...
CodeScopeSTM32 Libraries and SamplesLwIPsrc/include/lwip/prot/dhcp.h
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/** * @file * DHCP protocol definitions *//* ... */ /* * Copyright (c) 2001-2004 Leon Woestenberg <leon.woestenberg@gmx.net> * Copyright (c) 2001-2004 Axon Digital Design B.V., The Netherlands. * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * This file is part of the lwIP TCP/IP stack. * * Author: Leon Woestenberg <leon.woestenberg@gmx.net> * *//* ... */ #ifndef LWIP_HDR_PROT_DHCP_H #define LWIP_HDR_PROT_DHCP_H #include "lwip/opt.h" #include "lwip/arch.h" #include "lwip/prot/ip4.h" #ifdef __cplusplus extern "C" { #endif /* DHCP message item offsets and length */ #define DHCP_CHADDR_LEN 16U #define DHCP_SNAME_OFS 44U #define DHCP_SNAME_LEN 64U #define DHCP_FILE_OFS 108U #define DHCP_FILE_LEN 128U #define DHCP_MSG_LEN 236U #define DHCP_OPTIONS_OFS (DHCP_MSG_LEN + 4U) /* 4 byte: cookie */ 7 defines #ifdef PACK_STRUCT_USE_INCLUDES # include "arch/bpstruct.h" #endif PACK_STRUCT_BEGIN /** minimum set of fields of any DHCP message */ struct dhcp_msg { PACK_STRUCT_FLD_8(u8_t op); PACK_STRUCT_FLD_8(u8_t htype); PACK_STRUCT_FLD_8(u8_t hlen); PACK_STRUCT_FLD_8(u8_t hops); PACK_STRUCT_FIELD(u32_t xid); PACK_STRUCT_FIELD(u16_t secs); PACK_STRUCT_FIELD(u16_t flags); PACK_STRUCT_FLD_S(ip4_addr_p_t ciaddr); PACK_STRUCT_FLD_S(ip4_addr_p_t yiaddr); PACK_STRUCT_FLD_S(ip4_addr_p_t siaddr); PACK_STRUCT_FLD_S(ip4_addr_p_t giaddr); PACK_STRUCT_FLD_8(u8_t chaddr[DHCP_CHADDR_LEN]); PACK_STRUCT_FLD_8(u8_t sname[DHCP_SNAME_LEN]); PACK_STRUCT_FLD_8(u8_t file[DHCP_FILE_LEN]); PACK_STRUCT_FIELD(u32_t cookie); #define DHCP_MIN_OPTIONS_LEN 68U /** make sure user does not configure this too small */ #if ((defined(DHCP_OPTIONS_LEN)) && (DHCP_OPTIONS_LEN < DHCP_MIN_OPTIONS_LEN)) # undef DHCP_OPTIONS_LEN #endif /** allow this to be configured in lwipopts.h, but not too small */ #if (!defined(DHCP_OPTIONS_LEN)) /** set this to be sufficient for your options in outgoing DHCP msgs */ # define DHCP_OPTIONS_LEN DHCP_MIN_OPTIONS_LEN/* ... */ #endif PACK_STRUCT_FLD_8(u8_t options[DHCP_OPTIONS_LEN]); ...} PACK_STRUCT_STRUCT; PACK_STRUCT_END #ifdef PACK_STRUCT_USE_INCLUDES # include "arch/epstruct.h" #endif /* DHCP client states */ typedef enum { DHCP_STATE_OFF = 0, DHCP_STATE_REQUESTING = 1, DHCP_STATE_INIT = 2, DHCP_STATE_REBOOTING = 3, DHCP_STATE_REBINDING = 4, DHCP_STATE_RENEWING = 5, DHCP_STATE_SELECTING = 6, DHCP_STATE_INFORMING = 7, DHCP_STATE_CHECKING = 8, DHCP_STATE_PERMANENT = 9, /* not yet implemented */ DHCP_STATE_BOUND = 10, DHCP_STATE_RELEASING = 11, /* not yet implemented */ DHCP_STATE_BACKING_OFF = 12 ...} dhcp_state_enum_t; /* DHCP op codes */ #define DHCP_BOOTREQUEST 1 #define DHCP_BOOTREPLY 2 /* DHCP message types */ #define DHCP_DISCOVER 1 #define DHCP_OFFER 2 #define DHCP_REQUEST 3 #define DHCP_DECLINE 4 #define DHCP_ACK 5 #define DHCP_NAK 6 #define DHCP_RELEASE 7 #define DHCP_INFORM 8 #define DHCP_MAGIC_COOKIE 0x63825363UL /* This is a list of options for BOOTP and DHCP, see RFC 2132 for descriptions */ /* BootP options */ #define DHCP_OPTION_PAD 0 #define DHCP_OPTION_SUBNET_MASK 1 /* RFC 2132 3.3 */ #define DHCP_OPTION_ROUTER 3 #define DHCP_OPTION_DNS_SERVER 6 #define DHCP_OPTION_HOSTNAME 12 #define DHCP_OPTION_IP_TTL 23 #define DHCP_OPTION_MTU 26 #define DHCP_OPTION_BROADCAST 28 #define DHCP_OPTION_TCP_TTL 37 #define DHCP_OPTION_NTP 42 #define DHCP_OPTION_END 255 /* DHCP options */ #define DHCP_OPTION_REQUESTED_IP 50 /* RFC 2132 9.1, requested IP address */ #define DHCP_OPTION_LEASE_TIME 51 /* RFC 2132 9.2, time in seconds, in 4 bytes */ #define DHCP_OPTION_OVERLOAD 52 /* RFC2132 9.3, use file and/or sname field for options */ #define DHCP_OPTION_MESSAGE_TYPE 53 /* RFC 2132 9.6, important for DHCP */ #define DHCP_OPTION_MESSAGE_TYPE_LEN 1 #define DHCP_OPTION_SERVER_ID 54 /* RFC 2132 9.7, server IP address */ #define DHCP_OPTION_PARAMETER_REQUEST_LIST 55 /* RFC 2132 9.8, requested option types */ #define DHCP_OPTION_MAX_MSG_SIZE 57 /* RFC 2132 9.10, message size accepted >= 576 */ #define DHCP_OPTION_MAX_MSG_SIZE_LEN 2 #define DHCP_OPTION_T1 58 /* T1 renewal time */ #define DHCP_OPTION_T2 59 /* T2 rebinding time */ #define DHCP_OPTION_US 60 #define DHCP_OPTION_CLIENT_ID 61 #define DHCP_OPTION_TFTP_SERVERNAME 66 #define DHCP_OPTION_BOOTFILE 67 /* possible combinations of overloading the file and sname fields with options */ #define DHCP_OVERLOAD_NONE 0 #define DHCP_OVERLOAD_FILE 1 #define DHCP_OVERLOAD_SNAME 2 #define DHCP_OVERLOAD_SNAME_FILE 3 41 defines #ifdef __cplusplus }extern "C" { ... } #endif /* ... */ #endif /* LWIP_HDR_PROT_DHCP_H */