mirror of
https://github.com/xcat2/xNBA.git
synced 2025-01-05 19:15:05 +00:00
Add UUID to DHCP request as option 97 (if available).
This commit is contained in:
parent
899f5b8ab2
commit
26f3a09ccf
10
src/arch/i386/include/bits/uuid.h
Normal file
10
src/arch/i386/include/bits/uuid.h
Normal file
@ -0,0 +1,10 @@
|
||||
#ifndef _I386_UUID_H
|
||||
#define _I386_UUID_H
|
||||
|
||||
#include <smbios.h>
|
||||
|
||||
static inline int get_uuid ( union uuid *uuid ) {
|
||||
return smbios_get_uuid ( uuid );
|
||||
}
|
||||
|
||||
#endif /* _I386_UUID_H */
|
@ -46,5 +46,6 @@ extern int find_smbios_structure ( unsigned int type,
|
||||
extern int find_smbios_string ( struct smbios_strings *strings,
|
||||
unsigned int index,
|
||||
char *buffer, size_t length );
|
||||
extern int smbios_get_uuid ( union uuid *uuid );
|
||||
|
||||
#endif /* _SMBIOS_H */
|
||||
|
@ -135,6 +135,9 @@ struct job_interface;
|
||||
*/
|
||||
#define DHCP_BOOTFILE_NAME 67
|
||||
|
||||
/** UUID client identifier */
|
||||
#define DHCP_CLIENT_UUID 97
|
||||
|
||||
/** Etherboot-specific encapsulated options
|
||||
*
|
||||
* This encapsulated options field is used to contain all options
|
||||
|
@ -8,6 +8,9 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
union uuid;
|
||||
#include <bits/uuid.h>
|
||||
|
||||
/** A universally unique ID */
|
||||
union uuid {
|
||||
/** Canonical form (00000000-0000-0000-0000-000000000000) */
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include <gpxe/retry.h>
|
||||
#include <gpxe/tcpip.h>
|
||||
#include <gpxe/ip.h>
|
||||
#include <gpxe/uuid.h>
|
||||
#include <gpxe/dhcp.h>
|
||||
|
||||
/** @file
|
||||
@ -529,6 +530,7 @@ int create_dhcp_request ( struct net_device *netdev, int msgtype,
|
||||
struct device_description *desc = &netdev->dev->desc;
|
||||
struct dhcp_netdev_desc dhcp_desc;
|
||||
struct dhcp_client_id client_id;
|
||||
union uuid uuid;
|
||||
size_t dhcp_features_len;
|
||||
size_t ll_addr_len;
|
||||
int rc;
|
||||
@ -604,6 +606,17 @@ int create_dhcp_request ( struct net_device *netdev, int msgtype,
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Add client UUID, if we have one. Required for PXE. */
|
||||
if ( ( rc = get_uuid ( &uuid ) ) == 0 ) {
|
||||
if ( ( rc = set_dhcp_packet_option ( dhcppkt,
|
||||
DHCP_CLIENT_UUID, &uuid,
|
||||
sizeof ( uuid ) ) ) !=0){
|
||||
DBG ( "DHCP could not set client UUID: %s\n",
|
||||
strerror ( rc ) );
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user