From 9ad5cede963837d23e55fb4c80c3036db21e248d Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 20 Jul 2006 00:18:50 +0000 Subject: [PATCH] Set DHCP_MESSAGE_TYPE option within the main options block. This doesn't seem to be required by the RFCs, but at least ISC dhcpd and ethereal refuse to recognise it otherwise. --- src/net/udp/dhcp.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/net/udp/dhcp.c b/src/net/udp/dhcp.c index a0738b74..bbb4a1a7 100644 --- a/src/net/udp/dhcp.c +++ b/src/net/udp/dhcp.c @@ -232,7 +232,6 @@ static int create_dhcp_packet ( struct dhcp_session *dhcp, uint8_t msgtype, struct dhcphdr *dhcphdr = data; static const uint8_t overloading = ( DHCP_OPTION_OVERLOAD_FILE | DHCP_OPTION_OVERLOAD_SNAME ); - int rc; /* Sanity check */ if ( max_len < sizeof ( *dhcphdr ) ) @@ -264,11 +263,14 @@ static int create_dhcp_packet ( struct dhcp_session *dhcp, uint8_t msgtype, sizeof ( overloading ) ) == NULL ) return -ENOSPC; - /* Set DHCP_MESSAGE_TYPE option */ - if ( ( rc = set_dhcp_packet_option ( dhcppkt, DHCP_MESSAGE_TYPE, - &msgtype, - sizeof ( msgtype ) ) ) != 0 ) - return rc; + /* Set DHCP_MESSAGE_TYPE option within the main options block. + * This doesn't seem to be required by the RFCs, but at least + * ISC dhcpd and ethereal refuse to recognise it otherwise. + */ + if ( set_dhcp_option ( &dhcppkt->options[OPTS_MAIN], + DHCP_MESSAGE_TYPE, &msgtype, + sizeof ( msgtype ) ) == NULL ) + return -ENOSPC; return 0; }