udhcpc6: add DHCPv6 boot options
Add support for 'bootfile-url' and 'bootfile-params' as defined by RFC5970 "DHCPv6 Options for Network Boot". Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
bcdec1a8b8
commit
23cbd7d5bb
@ -128,6 +128,9 @@ struct d6_option {
|
||||
#define D6_OPT_TZ_POSIX 41
|
||||
#define D6_OPT_TZ_NAME 42
|
||||
|
||||
#define D6_OPT_BOOT_URL 59
|
||||
#define D6_OPT_BOOT_PARAM 60
|
||||
|
||||
/*** Other shared functions ***/
|
||||
|
||||
struct client6_data_t {
|
||||
|
@ -38,6 +38,14 @@
|
||||
//config: help
|
||||
//config: You can request POSIX timezone with "-O tz" and timezone name
|
||||
//config: with "-O timezone".
|
||||
//config:
|
||||
//config:config FEATURE_UDHCPC6_RFC5970
|
||||
//config: bool "Support RFC 5970 (Network Boot)"
|
||||
//config: default y
|
||||
//config: depends on UDHCPC6
|
||||
//config: help
|
||||
//config: You can request bootfile-url with "-O bootfile_url" and
|
||||
//config: bootfile-params with "-O bootfile_params".
|
||||
|
||||
//applet:IF_UDHCPC6(APPLET(udhcpc6, BB_DIR_USR_BIN, BB_SUID_DROP))
|
||||
|
||||
@ -70,6 +78,10 @@ static const struct dhcp_optflag d6_optflags[] = {
|
||||
#if ENABLE_FEATURE_UDHCPC6_RFC4833
|
||||
{ OPTION_STRING, D6_OPT_TZ_POSIX },
|
||||
{ OPTION_STRING, D6_OPT_TZ_NAME },
|
||||
#endif
|
||||
#if ENABLE_FEATURE_UDHCPC6_RFC5970
|
||||
{ OPTION_STRING, D6_OPT_BOOT_URL },
|
||||
{ OPTION_STRING, D6_OPT_BOOT_PARAM },
|
||||
#endif
|
||||
{ 0, 0 }
|
||||
};
|
||||
@ -86,6 +98,11 @@ static const char d6_option_strings[] ALIGN1 =
|
||||
"tz" "\0" /* D6_OPT_TZ_POSIX */
|
||||
"timezone" "\0" /* D6_OPT_TZ_NAME */
|
||||
#endif
|
||||
#if ENABLE_FEATURE_UDHCPC6_RFC5970
|
||||
"bootfile_url" "\0" /* D6_OPT_BOOT_URL */
|
||||
"bootfile_param" "\0" /* D6_OPT_BOOT_PARAM */
|
||||
#endif
|
||||
|
||||
"\0";
|
||||
|
||||
#if ENABLE_LONG_OPTS
|
||||
@ -382,6 +399,14 @@ static void option_to_env(uint8_t *option, uint8_t *option_end)
|
||||
*new_env() = xasprintf("tz_name=%.*s", (int)option[3], (char*)option + 4);
|
||||
break;
|
||||
#endif
|
||||
case D6_OPT_BOOT_URL:
|
||||
case D6_OPT_BOOT_PARAM:
|
||||
{
|
||||
char *tmp = string_option_to_env(option, option_end);
|
||||
if (tmp)
|
||||
*new_env() = tmp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
len_m4 -= 4 + option[3];
|
||||
option += 4 + option[3];
|
||||
|
Loading…
Reference in New Issue
Block a user