diff --git a/src/core/ipv4/dhcp.c b/src/core/ipv4/dhcp.c index 3ce7be59..99ebe3e6 100644 --- a/src/core/ipv4/dhcp.c +++ b/src/core/ipv4/dhcp.c @@ -1031,6 +1031,10 @@ dhcp_discover(struct netif *netif) options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif)); +#if LWIP_NETIF_HOSTNAME && LWIP_DHCP_DISCOVER_ADD_HOSTNAME + options_out_len = dhcp_option_hostname(options_out_len, msg_out->options, netif); +#endif /* LWIP NETIF HOSTNAME && LWIP_DHCP_DISCOVER_ADD_HOSTNAME */ + options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options)); for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) { options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]); diff --git a/src/include/lwip/opt.h b/src/include/lwip/opt.h index 08c2628a..4824adeb 100644 --- a/src/include/lwip/opt.h +++ b/src/include/lwip/opt.h @@ -966,6 +966,14 @@ #if !defined LWIP_DHCP_MAX_DNS_SERVERS || defined __DOXYGEN__ #define LWIP_DHCP_MAX_DNS_SERVERS DNS_MAX_SERVERS #endif + +/** LWIP_DHCP_DISCOVER_ADD_HOSTNAME: Set to 1 to include hostname opt in discover packets. + * If the hostname is not set in the DISCOVER packet, then some servers might issue an OFFER with hostname + * configured and consequently reject the REQUEST with any other hostname. + */ +#if !defined LWIP_DHCP_DISCOVER_ADD_HOSTNAME || defined __DOXYGEN__ +#define LWIP_DHCP_DISCOVER_ADD_HOSTNAME 0 +#endif /* LWIP_DHCP_DISCOVER_ADD_HOSTNAME */ /** * @} */