|  | @@ -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 |  
 |