CHERRY-PICK: netboot: Adding tftpserverip into kernel command line
This is to support dymanica mini-omaha server address assignment.
Netboot firmware passes tftpserverip to kernel to obtain a config
file containing mini-omaha server address from tftp server.
BUG=chrome-os-partner:22180
TEST=Netboot on falco and factory install shim can get tftpserverip via
/proc/cmdline
BRANCH=firmware-falco_peppy-4389.B
Original-Change-Id: Ic4edd57f619549d504da7e870102c9dafca2d3ad
Reviewed-on: https://chromium-review.googlesource.com/171538
Tested-by: Bowgo Tsai <bowgotsai@chromium.org>
Reviewed-by: Gabe Black <gabeblack@chromium.org>
Commit-Queue: Bowgo Tsai <bowgotsai@chromium.org>
(cherry picked from commit edd45fe93b19b4d285fcc990997fb131348a84c6)
Change-Id: I1240da17d0724d088f8c03ff14805634f14fc8da
Reviewed-on: https://chromium-review.googlesource.com/183400
Commit-Queue: Bowgo Tsai <bowgotsai@chromium.org>
Reviewed-by: Gabe Black <gabeblack@chromium.org>
Tested-by: Bowgo Tsai <bowgotsai@chromium.org>
diff --git a/src/netboot/main.c b/src/netboot/main.c
index 2e5b67c..799d0c6 100644
--- a/src/netboot/main.c
+++ b/src/netboot/main.c
@@ -217,7 +217,7 @@
printf("The bootfile was %d bytes long.\n", size);
- // Prepare the command line.
+ // Add user supplied parameters to the command line.
param = netboot_params_val(NetbootParamIdKernelArgs);
cmd_line[cmd_line_def_size - 1] = '\0';
if (param->data && param->size > 0) {
@@ -231,6 +231,18 @@
sizeof(cmd_line) - cmd_line_def_size);
}
}
+
+ // Add tftp server IP into command line.
+ static const char def_tftp_cmdline[] = " tftpserverip=xxx.xxx.xxx.xxx";
+ const int tftp_cmdline_def_size = sizeof(def_tftp_cmdline) - 1;
+ int cmd_line_size = strlen(cmd_line);
+ if (cmd_line_size + tftp_cmdline_def_size > sizeof(cmd_line)) {
+ printf("Out of space adding TFTP server IP to the command line.\n");
+ return 1;
+ }
+ sprintf(&cmd_line[cmd_line_size], " tftpserverip=%d.%d.%d.%d",
+ uip_ipaddr1(tftp_ip), uip_ipaddr2(tftp_ip),
+ uip_ipaddr3(tftp_ip), uip_ipaddr4(tftp_ip));
printf("The command line is %s.\n", cmd_line);
// Boot.