summaryrefslogtreecommitdiffstats
path: root/src/usr/dhcpmgmt.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/dhcpmgmt.c')
-rw-r--r--src/usr/dhcpmgmt.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/usr/dhcpmgmt.c b/src/usr/dhcpmgmt.c
index 6f0302741..42a0f2b79 100644
--- a/src/usr/dhcpmgmt.c
+++ b/src/usr/dhcpmgmt.c
@@ -24,6 +24,7 @@
#include <gpxe/dhcp.h>
#include <gpxe/async.h>
#include <gpxe/netdevice.h>
+#include <gpxe/dns.h>
#include <usr/ifmgmt.h>
#include <usr/dhcpmgmt.h>
@@ -33,6 +34,9 @@
*
*/
+/* Avoid dragging in dns.o */
+struct in_addr nameserver;
+
/**
* Configure network device via DHCP
*
@@ -42,8 +46,8 @@
int dhcp ( struct net_device *netdev ) {
static struct dhcp_option_block *dhcp_options = NULL;
struct dhcp_session dhcp;
- struct in_addr address = { htonl ( 0 ) };
- struct in_addr netmask = { htonl ( 0 ) };
+ struct in_addr address = { 0 };
+ struct in_addr netmask = { 0 };
struct in_addr gateway = { INADDR_NONE };
struct async async;
int rc;
@@ -90,5 +94,9 @@ int dhcp ( struct net_device *netdev ) {
return rc;
}
+ /* Retrieve other DHCP options that we care about */
+ find_dhcp_ipv4_option ( dhcp_options, DHCP_DNS_SERVERS,
+ &nameserver );
+
return 0;
}