|
@@ -31,6 +31,7 @@
|
31
|
31
|
#include <gpxe/retry.h>
|
32
|
32
|
#include <gpxe/tcpip.h>
|
33
|
33
|
#include <gpxe/ip.h>
|
|
34
|
+#include <gpxe/uuid.h>
|
34
|
35
|
#include <gpxe/dhcp.h>
|
35
|
36
|
|
36
|
37
|
/** @file
|
|
@@ -529,6 +530,7 @@ int create_dhcp_request ( struct net_device *netdev, int msgtype,
|
529
|
530
|
struct device_description *desc = &netdev->dev->desc;
|
530
|
531
|
struct dhcp_netdev_desc dhcp_desc;
|
531
|
532
|
struct dhcp_client_id client_id;
|
|
533
|
+ union uuid uuid;
|
532
|
534
|
size_t dhcp_features_len;
|
533
|
535
|
size_t ll_addr_len;
|
534
|
536
|
int rc;
|
|
@@ -604,6 +606,17 @@ int create_dhcp_request ( struct net_device *netdev, int msgtype,
|
604
|
606
|
return rc;
|
605
|
607
|
}
|
606
|
608
|
|
|
609
|
+ /* Add client UUID, if we have one. Required for PXE. */
|
|
610
|
+ if ( ( rc = get_uuid ( &uuid ) ) == 0 ) {
|
|
611
|
+ if ( ( rc = set_dhcp_packet_option ( dhcppkt,
|
|
612
|
+ DHCP_CLIENT_UUID, &uuid,
|
|
613
|
+ sizeof ( uuid ) ) ) !=0){
|
|
614
|
+ DBG ( "DHCP could not set client UUID: %s\n",
|
|
615
|
+ strerror ( rc ) );
|
|
616
|
+ return rc;
|
|
617
|
+ }
|
|
618
|
+ }
|
|
619
|
+
|
607
|
620
|
return 0;
|
608
|
621
|
}
|
609
|
622
|
|