9
0
Fork 0

net: dhcp: allow to set transmitted client id

For net boot setups it is useful to submit boot params like server or
bootfile over dhcp. To distinguish diffrent type of OS running on the same hardware,
a custom client id can be sent in dhcp discover/request messages.

E.g. the ISC dhcp server can be configured with

 | class "at91sam9x5ek" {
 |         match if substring (option vendor-class-identifier,0,20) = "barebox-at91sam9x5ek";
 |
 |         filename "/tftpboot/atmel/at91sam9x5/sam9x5ek/zImage";
 |         if substring (option dhcp-client-identifier,0,7) = "ser2net" {
 |                 filename "/tftpboot/atmel/at91sam9x5/sam9x5ek/zImage-ser2net";
 |         }
 |         option tftp-server-name "192.168.200.98";
 |         option option-150 192.168.200.98;
 |         next-server 192.168.200.98;
 |         option root-path "192.168.200.98:/opt/work/buildroot/build/sam9x5/target";
 | }

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
This commit is contained in:
Jean-Christophe PLAGNIOL-VILLARD 2012-03-30 02:25:14 +08:00
parent 7fd2d7658e
commit b0660bd84f
1 changed files with 9 additions and 1 deletions

View File

@ -234,12 +234,17 @@ static int dhcp_set_string_options(struct dhcp_param *param, u8 *e)
}
#define DHCP_VENDOR_ID 60
#define DHCP_CLIENT_ID 61
struct dhcp_param dhcp_params[] = {
{
.option = DHCP_VENDOR_ID,
.handle = dhcp_set_string_options,
.barebox_var_name = "dhcp_vendor_id",
}, {
.option = DHCP_CLIENT_ID,
.handle = dhcp_set_string_options,
.barebox_var_name = "dhcp_client_id",
}
};
@ -595,11 +600,14 @@ static int do_dhcp(int argc, char *argv[])
dhcp_reset_env();
while((opt = getopt(argc, argv, "v:")) > 0) {
while((opt = getopt(argc, argv, "v:c:")) > 0) {
switch(opt) {
case 'v':
dhcp_set_param_data(DHCP_VENDOR_ID, optarg);
break;
case 'c':
dhcp_set_param_data(DHCP_CLIENT_ID, optarg);
break;
}
}