summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--boot/pxe_utils.c15
-rw-r--r--doc/README.pxe6
2 files changed, 21 insertions, 0 deletions
diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c
index a32acca8ee..fcfee5e8b9 100644
--- a/boot/pxe_utils.c
+++ b/boot/pxe_utils.c
@@ -1355,9 +1355,11 @@ static struct menu *pxe_menu_to_menu(struct pxe_menu *cfg)
struct pxe_label *label;
struct list_head *pos;
struct menu *m;
+ char *label_override;
int err;
int i = 1;
char *default_num = NULL;
+ char *override_num = NULL;
/*
* Create a menu and add items for all the labels.
@@ -1367,6 +1369,8 @@ static struct menu *pxe_menu_to_menu(struct pxe_menu *cfg)
if (!m)
return NULL;
+ label_override = env_get("pxe_label_override");
+
list_for_each(pos, &cfg->labels) {
label = list_entry(pos, struct pxe_label, list);
@@ -1378,6 +1382,17 @@ static struct menu *pxe_menu_to_menu(struct pxe_menu *cfg)
if (cfg->default_label &&
(strcmp(label->name, cfg->default_label) == 0))
default_num = label->num;
+ if (label_override && !strcmp(label->name, label_override))
+ override_num = label->num;
+ }
+
+
+ if (label_override) {
+ if (override_num)
+ default_num = override_num;
+ else
+ printf("Missing override pxe label: %s\n",
+ label_override);
}
/*
diff --git a/doc/README.pxe b/doc/README.pxe
index b67151ca51..a1f0423adb 100644
--- a/doc/README.pxe
+++ b/doc/README.pxe
@@ -92,6 +92,12 @@ pxe boot
fdtoverlay_addr_r - location in RAM at which 'pxe boot' will temporarily store
fdt overlay(s) before applying them to the fdt blob stored at 'fdt_addr_r'.
+ pxe_label_override - override label to be used, if exists, instead of the
+ default label. This will allow consumers to choose a pxe label at
+ runtime instead of having to prompt the user. If "pxe_label_override" is set
+ but does not exist in the pxe menu, pxe would fallback to the default label if
+ given, and no failure is returned but rather a warning message.
+
pxe file format
===============
The pxe file format is nearly a subset of the PXELINUX file format; see