T_IPAPPEND,
T_BACKGROUND,
T_KASLRSEED,
+ T_FALLBACK,
T_INVALID
};
{"ipappend", T_IPAPPEND,},
{"background", T_BACKGROUND,},
{"kaslrseed", T_KASLRSEED,},
+ {"fallback", T_FALLBACK,},
{NULL, T_INVALID}
};
break;
+ case T_FALLBACK:
+ err = parse_sliteral(&p, &label_name);
+
+ if (label_name) {
+ if (cfg->fallback_label)
+ free(cfg->fallback_label);
+
+ cfg->fallback_label = label_name;
+ }
+
+ break;
+
case T_INCLUDE:
err = handle_include(ctx, &p,
base + ALIGN(strlen(b), 4), cfg,
free(cfg->title);
free(cfg->default_label);
+ free(cfg->fallback_label);
list_for_each_safe(pos, n, &cfg->labels) {
label = list_entry(pos, struct pxe_label, list);
default <label> - the label named here is treated as the default and is
the first label 'pxe boot' attempts to boot.
+fallback <label> - the label named here is treated as a fallback option that
+ may be attempted should it be detected that booting of
+ the default has failed to complete, for example via
+ U-Boot's boot count limit functionality.
+
menu title <string> - sets a title for the menu of labels being displayed.
menu include <path> - use tftp to retrieve the pxe file at <path>, which
*
* title - the name of the menu as given by a 'menu title' line.
* default_label - the name of the default label, if any.
+ * fallback_label - the name of the fallback label, if any.
* bmp - the bmp file name which is displayed in background
* timeout - time in tenths of a second to wait for a user key-press before
* booting the default label.
struct pxe_menu {
char *title;
char *default_label;
+ char *fallback_label;
char *bmp;
int timeout;
int prompt;