]> git.ozlabs.org Git - petitboot/blobdiff - discover/network.c
discover/network: Use platform definition for DHCP architecture ID
[petitboot] / discover / network.c
index 8cc01833d5875990358ea0bc897eea0bf5ab6fe0..c300f3dc7719619aa6092df5b476837ff8177b74 100644 (file)
 #include <types/types.h>
 #include <talloc/talloc.h>
 #include <waiter/waiter.h>
-#include <pb-config/pb-config.h>
 #include <process/process.h>
 #include <system/system.h>
 
 #include "file.h"
 #include "network.h"
 #include "sysinfo.h"
+#include "platform.h"
 #include "device-handler.h"
 
 #define HWADDR_SIZE    6
@@ -212,21 +212,31 @@ static void udhcpc_process_exit(struct process *process)
 
 static void configure_interface_dhcp(struct interface *interface)
 {
+       const struct platform *platform;
+       char pidfile[256], id[10];
        struct process *process;
-       char pidfile[256];
        int rc;
        const char *argv[] = {
                pb_system_apps.udhcpc,
                "-R",
                "-n",
                "-O", "pxeconffile",
+               "-O", "pxepathprefix",
                "-p", pidfile,
                "-i", interface->name,
+               "-x", id, /* [11,12] - dhcp client identifier */
                NULL,
        };
+
        snprintf(pidfile, sizeof(pidfile), "%s/udhcpc-%s.pid",
                        PIDFILE_BASE, interface->name);
 
+       platform = platform_get();
+       if (platform && platform->dhcp_arch_id != 0xffff)
+               snprintf(id, sizeof(id), "0x5d:%04x", platform->dhcp_arch_id);
+       else
+               argv[11] = NULL;
+
        process = process_create(interface);
 
        process->path = pb_system_apps.udhcpc;