SSL needs quite a lot of spare memory
[people/xl0/gpxe.git] / src / usr / dhcpmgmt.c
index 6f03027..060dd67 100644 (file)
  */
 
 #include <string.h>
+#include <stdio.h>
 #include <byteswap.h>
-#include <vsprintf.h>
 #include <gpxe/in.h>
 #include <gpxe/ip.h>
 #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;
 }