Set DHCP_MESSAGE_TYPE option within the main options block. This
authorMichael Brown <mcb30@etherboot.org>
Thu, 20 Jul 2006 00:18:50 +0000 (00:18 +0000)
committerMichael Brown <mcb30@etherboot.org>
Thu, 20 Jul 2006 00:18:50 +0000 (00:18 +0000)
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

index a0738b7..bbb4a1a 100644 (file)
@@ -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;
 }