diff options
| author | Michael Brown | 2006-07-20 02:18:50 +0200 |
|---|---|---|
| committer | Michael Brown | 2006-07-20 02:18:50 +0200 |
| commit | 9ad5cede963837d23e55fb4c80c3036db21e248d (patch) | |
| tree | adfa606a81b7de982f5d3abd1361cc3254472c18 | |
| parent | Packets without a DHCP_MESSAGE_TYPE option are probably just BOOTP (diff) | |
| download | ipxe-9ad5cede963837d23e55fb4c80c3036db21e248d.tar.gz ipxe-9ad5cede963837d23e55fb4c80c3036db21e248d.tar.xz ipxe-9ad5cede963837d23e55fb4c80c3036db21e248d.zip | |
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.
| -rw-r--r-- | src/net/udp/dhcp.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/net/udp/dhcp.c b/src/net/udp/dhcp.c index a0738b740..bbb4a1a7a 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; } |
