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_POSIX 41
|
||||||
#define D6_OPT_TZ_NAME 42
|
#define D6_OPT_TZ_NAME 42
|
||||||
|
|
||||||
|
#define D6_OPT_BOOT_URL 59
|
||||||
|
#define D6_OPT_BOOT_PARAM 60
|
||||||
|
|
||||||
/*** Other shared functions ***/
|
/*** Other shared functions ***/
|
||||||
|
|
||||||
struct client6_data_t {
|
struct client6_data_t {
|
||||||
|
@ -38,6 +38,14 @@
|
|||||||
//config: help
|
//config: help
|
||||||
//config: You can request POSIX timezone with "-O tz" and timezone name
|
//config: You can request POSIX timezone with "-O tz" and timezone name
|
||||||
//config: with "-O timezone".
|
//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))
|
//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
|
#if ENABLE_FEATURE_UDHCPC6_RFC4833
|
||||||
{ OPTION_STRING, D6_OPT_TZ_POSIX },
|
{ OPTION_STRING, D6_OPT_TZ_POSIX },
|
||||||
{ OPTION_STRING, D6_OPT_TZ_NAME },
|
{ 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
|
#endif
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
@ -86,6 +98,11 @@ static const char d6_option_strings[] ALIGN1 =
|
|||||||
"tz" "\0" /* D6_OPT_TZ_POSIX */
|
"tz" "\0" /* D6_OPT_TZ_POSIX */
|
||||||
"timezone" "\0" /* D6_OPT_TZ_NAME */
|
"timezone" "\0" /* D6_OPT_TZ_NAME */
|
||||||
#endif
|
#endif
|
||||||
|
#if ENABLE_FEATURE_UDHCPC6_RFC5970
|
||||||
|
"bootfile_url" "\0" /* D6_OPT_BOOT_URL */
|
||||||
|
"bootfile_param" "\0" /* D6_OPT_BOOT_PARAM */
|
||||||
|
#endif
|
||||||
|
|
||||||
"\0";
|
"\0";
|
||||||
|
|
||||||
#if ENABLE_LONG_OPTS
|
#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);
|
*new_env() = xasprintf("tz_name=%.*s", (int)option[3], (char*)option + 4);
|
||||||
break;
|
break;
|
||||||
#endif
|
#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];
|
len_m4 -= 4 + option[3];
|
||||||
option += 4 + option[3];
|
option += 4 + option[3];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user