Commit de1fa15b authored by Chris Novakovic's avatar Chris Novakovic Committed by David S. Miller

ipconfig: BOOTP: Request CONF_NAMESERVERS_MAX name servers

When ipconfig is autoconfigured via BOOTP, the request packet
initialised by ic_bootp_init_ext() always allocates 8 bytes for the name
server option, limiting the BOOTP server to responding with at most 2
name servers even though ipconfig in fact supports an arbitrary number
of name servers (as defined by CONF_NAMESERVERS_MAX, which is currently
3).

Only request name servers in the request packet if CONF_NAMESERVERS_MAX
is positive (to comply with [1, §3.8]), and allocate enough space in the
packet for CONF_NAMESERVERS_MAX name servers to indicate the maximum
number we can accept in response.

[1] RFC 2132, "DHCP Options and BOOTP Vendor Extensions":
    https://tools.ietf.org/rfc/rfc2132.txtSigned-off-by: default avatarChris Novakovic <chris@chrisn.me.uk>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4e1a8af2
...@@ -721,9 +721,11 @@ static void __init ic_bootp_init_ext(u8 *e) ...@@ -721,9 +721,11 @@ static void __init ic_bootp_init_ext(u8 *e)
*e++ = 3; /* Default gateway request */ *e++ = 3; /* Default gateway request */
*e++ = 4; *e++ = 4;
e += 4; e += 4;
#if CONF_NAMESERVERS_MAX > 0
*e++ = 6; /* (DNS) name server request */ *e++ = 6; /* (DNS) name server request */
*e++ = 8; *e++ = 4 * CONF_NAMESERVERS_MAX;
e += 8; e += 4 * CONF_NAMESERVERS_MAX;
#endif
*e++ = 12; /* Host name request */ *e++ = 12; /* Host name request */
*e++ = 32; *e++ = 32;
e += 32; e += 32;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment