mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
pxe: support pxe clients with custom vendor-class
From 606d638918edb0e0ec07fe27eb68d06fb5ebd981 Mon Sep 17 00:00:00 2001 From: Miao Wang <shankerwangmiao@gmail.com> Date: Fri, 4 Dec 2020 09:59:37 +0800 Subject: [PATCH v2] pxe: support pxe clients with custom vendor-class According to UEFI[1] and PXE[2] specs, PXE clients are required to have `PXEClient` identfier in the vendor-class field of DHCP requests, and PXE servers should also include that identifier in their responses. However, the firmware of servers from a few vendors[3] are customized to include a different identifier. This patch adds an option named `dhcp-pxe-vendor` to provide a list of such identifiers. The identifier used in responses sent from dnsmasq is identical to that in the coresponding request. [1]: https://uefi.org/sites/default/files/resources/UEFI%20Spec%202.8B%20May%202020.pdf [2]: http://www.pix.net/software/pxeboot/archive/pxespec.pdf [3]: For instance, TaiShan servers from Huawei, which are Arm64-based, send `HW-Client` in PXE requests up to now. Signed-off-by: Miao Wang <shankerwangmiao@gmail.com>
This commit is contained in:
committed by
Simon Kelley
parent
f60fea1fb0
commit
4ded96209e
@@ -829,6 +829,7 @@ struct dhcp_opt {
|
||||
#define DHOPT_RFC3925 2048
|
||||
#define DHOPT_TAGOK 4096
|
||||
#define DHOPT_ADDR6 8192
|
||||
#define DHOPT_VENDOR_PXE 16384
|
||||
|
||||
struct dhcp_boot {
|
||||
char *file, *sname, *tftp_sname;
|
||||
@@ -852,6 +853,8 @@ struct pxe_service {
|
||||
struct pxe_service *next;
|
||||
};
|
||||
|
||||
#define DHCP_PXE_DEF_VENDOR "PXEClient"
|
||||
|
||||
#define MATCH_VENDOR 1
|
||||
#define MATCH_USER 2
|
||||
#define MATCH_CIRCUIT 3
|
||||
@@ -867,6 +870,11 @@ struct dhcp_vendor {
|
||||
struct dhcp_vendor *next;
|
||||
};
|
||||
|
||||
struct dhcp_pxe_vendor {
|
||||
char *data;
|
||||
struct dhcp_pxe_vendor *next;
|
||||
};
|
||||
|
||||
struct dhcp_mac {
|
||||
unsigned int mask;
|
||||
int hwaddr_len, hwaddr_type;
|
||||
@@ -1040,6 +1048,7 @@ extern struct daemon {
|
||||
struct dhcp_config *dhcp_conf;
|
||||
struct dhcp_opt *dhcp_opts, *dhcp_match, *dhcp_opts6, *dhcp_match6;
|
||||
struct dhcp_match_name *dhcp_name_match;
|
||||
struct dhcp_pxe_vendor *dhcp_pxe_vendors;
|
||||
struct dhcp_vendor *dhcp_vendors;
|
||||
struct dhcp_mac *dhcp_macs;
|
||||
struct dhcp_boot *boot_config;
|
||||
|
||||
Reference in New Issue
Block a user