While I agree this would be a useful feature, I don't believe it's required to achieve what you want to achieve. U-Boot's pxe already supports a way to point different client classes at different areas of the tftp server.
U-boot doesn't need to download 'pxelinux.0' from the tftp server like normal PXE implementations do, but it still respects the bootfile option in dhcp responses. When you run 'dhcp' in U-boot it will attempt to download whatever was supplied as the bootfile in the dhcp response, and will set the 'bootfile' env variable accordingly.
Following the same convention as pxelinux, U-Boot's 'pxe get' will look for config/image files at paths relative to the directory the 'bootfile' location was given as.
So, given this dhcp config, highbank clients will be pointed at /arm/highbank, and x86 PXE clients will be pointed at /x86/
class "pxe" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
}
class "uboot-highbank" {
match if substring (option vendor-class-identifier, 0, 21) = "U-boot.armv7.highbank";
}
pool { range 192.168.100.100 192.168.100.149; allow members of "uboot-highbank"; filename "/arm/highbank/empty";
}
pool { range 192.168.100.150 192.168.100.199; allow members of "pxe"; filename "/x86/pxelinux.0";
}
}
The 'empty' file can be empty; as long as it exists, U-Boot will be happy with the tftp request.
Here's some example output from highbank doing PXE:
Highbank #dhcp
BOOTP broadcast 1
*** Unhandled DHCP Option in OFFER/ACK: 28
*** Unhandled DHCP Option in OFFER/ACK: 28
DHCP client bound to address 192.168.100.100
Using xgmac0 device
TFTP from server 192.168.100.1; our IP address is 192.168.100.100
Filename '/arm/highbank/empty'.
Load address: 0x700000
Loading: #
done
Highbank #pxe get
missing environment variable: pxeuuid
Retrieving file: /arm/highbank/pxelinux.cfg/01-52-54-00-12-34-56
Using xgmac0 device
TFTP from server 192.168.100.1; our IP address is 192.168.100.100
Filename '/arm/highbank/pxelinux.cfg/01-52-54-00-12-34-56'.
Load address: 0x700000
Loading: *
TFTP error: 'File not found' (1)
Not retrying...
Retrieving file: /arm/highbank/pxelinux.cfg/C0A86464
While I agree this would be a useful feature, I don't believe it's required to achieve what you want to achieve. U-Boot's pxe already supports a way to point different client classes at different areas of the tftp server.
U-boot doesn't need to download 'pxelinux.0' from the tftp server like normal PXE implementations do, but it still respects the bootfile option in dhcp responses. When you run 'dhcp' in U-boot it will attempt to download whatever was supplied as the bootfile in the dhcp response, and will set the 'bootfile' env variable accordingly.
Following the same convention as pxelinux, U-Boot's 'pxe get' will look for config/image files at paths relative to the directory the 'bootfile' location was given as.
So, given this dhcp config, highbank clients will be pointed at /arm/highbank, and x86 PXE clients will be pointed at /x86/
class "pxe" { class-identifie r, 0, 9) = "PXEClient";
match if substring (option vendor-
}
class "uboot-highbank" { class-identifie r, 0, 21) = "U-boot. armv7.highbank" ;
match if substring (option vendor-
}
subnet 192.168.100.0 netmask 255.255.255.0 {
server-name "192.168.100.1";
option tftp-server-name "192.168.100.1";
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.100.255;
option domain-name-servers 8.8.4.4;
option routers 192.168.100.254;
pool {
range 192.168.100.100 192.168.100.149;
allow members of "uboot-highbank";
filename "/arm/highbank/ empty";
}
pool {
range 192.168.100.150 192.168.100.199;
allow members of "pxe";
filename "/x86/pxelinux.0";
}
}
The 'empty' file can be empty; as long as it exists, U-Boot will be happy with the tftp request.
Here's some example output from highbank doing PXE: empty'. pxelinux. cfg/01- 52-54-00- 12-34-56 pxelinux. cfg/01- 52-54-00- 12-34-56' . pxelinux. cfg/C0A86464
Highbank #dhcp
BOOTP broadcast 1
*** Unhandled DHCP Option in OFFER/ACK: 28
*** Unhandled DHCP Option in OFFER/ACK: 28
DHCP client bound to address 192.168.100.100
Using xgmac0 device
TFTP from server 192.168.100.1; our IP address is 192.168.100.100
Filename '/arm/highbank/
Load address: 0x700000
Loading: #
done
Highbank #pxe get
missing environment variable: pxeuuid
Retrieving file: /arm/highbank/
Using xgmac0 device
TFTP from server 192.168.100.1; our IP address is 192.168.100.100
Filename '/arm/highbank/
Load address: 0x700000
Loading: *
TFTP error: 'File not found' (1)
Not retrying...
Retrieving file: /arm/highbank/