|
@@ -232,7 +232,6 @@ static int create_dhcp_packet ( struct dhcp_session *dhcp, uint8_t msgtype,
|
232
|
232
|
struct dhcphdr *dhcphdr = data;
|
233
|
233
|
static const uint8_t overloading = ( DHCP_OPTION_OVERLOAD_FILE |
|
234
|
234
|
DHCP_OPTION_OVERLOAD_SNAME );
|
235
|
|
- int rc;
|
236
|
235
|
|
237
|
236
|
/* Sanity check */
|
238
|
237
|
if ( max_len < sizeof ( *dhcphdr ) )
|
|
@@ -264,11 +263,14 @@ static int create_dhcp_packet ( struct dhcp_session *dhcp, uint8_t msgtype,
|
264
|
263
|
sizeof ( overloading ) ) == NULL )
|
265
|
264
|
return -ENOSPC;
|
266
|
265
|
|
267
|
|
- /* Set DHCP_MESSAGE_TYPE option */
|
268
|
|
- if ( ( rc = set_dhcp_packet_option ( dhcppkt, DHCP_MESSAGE_TYPE,
|
269
|
|
- &msgtype,
|
270
|
|
- sizeof ( msgtype ) ) ) != 0 )
|
271
|
|
- return rc;
|
|
266
|
+ /* Set DHCP_MESSAGE_TYPE option within the main options block.
|
|
267
|
+ * This doesn't seem to be required by the RFCs, but at least
|
|
268
|
+ * ISC dhcpd and ethereal refuse to recognise it otherwise.
|
|
269
|
+ */
|
|
270
|
+ if ( set_dhcp_option ( &dhcppkt->options[OPTS_MAIN],
|
|
271
|
+ DHCP_MESSAGE_TYPE, &msgtype,
|
|
272
|
+ sizeof ( msgtype ) ) == NULL )
|
|
273
|
+ return -ENOSPC;
|
272
|
274
|
|
273
|
275
|
return 0;
|
274
|
276
|
}
|