[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: [PATCH 5/6] udhcp: Add DHCP address scheme client config
From: Samuel Mendoza-Jonas <sam () mendozajonas ! com>
Date: 2018-05-08 6:30:24
Message-ID: 20180508063025.1978-6-sam () mendozajonas ! com
[Download RAW message or body]
Allow the DHCP address scheme to be set in the client config so that it
is known in common functions used by both udhcpc and udhcpc6.
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
---
networking/udhcp/common.c | 7 ++++---
networking/udhcp/common.h | 8 +++++++-
networking/udhcp/d6_dhcpc.c | 4 +++-
networking/udhcp/dhcpc.c | 4 +++-
networking/udhcp/dhcpc.h | 1 +
networking/udhcp/dhcpd.c | 2 +-
6 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c
index fbf9c6878..2fdec1d55 100644
--- a/networking/udhcp/common.c
+++ b/networking/udhcp/common.c
@@ -383,7 +383,8 @@ static NOINLINE void attach_option(
struct option_set **opt_list,
const struct dhcp_optflag *optflag,
char *buffer,
- int length)
+ int length,
+ enum client_addr_type addr_type)
{
struct option_set *existing;
char *allocated = NULL;
@@ -450,7 +451,7 @@ static NOINLINE void attach_option(
free(allocated);
}
-int FAST_FUNC udhcp_str2optset(const char *const_str, void *arg, const struct \
dhcp_optflag *optflags, const char *option_strings) +int FAST_FUNC \
udhcp_str2optset(const char *const_str, void *arg, const struct dhcp_optflag \
*optflags, const char *option_strings, enum client_addr_type addr_type) {
struct option_set **opt_list = arg;
char *opt;
@@ -601,7 +602,7 @@ case_OPTION_STRING:
}
if (retval)
- attach_option(opt_list, optflag, opt, length);
+ attach_option(opt_list, optflag, opt, length, addr_type);
} while (retval && (optflag->flags & OPTION_LIST));
return retval;
diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h
index 13059f106..e8c3dc2af 100644
--- a/networking/udhcp/common.h
+++ b/networking/udhcp/common.h
@@ -181,6 +181,11 @@ enum {
#define DHCP_MINTYPE DHCPDISCOVER
#define DHCP_MAXTYPE DHCPINFORM
+enum client_addr_type {
+ CLIENT_CONFIG_DHCPV4,
+ CLIENT_CONFIG_DHCPV6,
+};
+
struct dhcp_optflag {
uint8_t flags;
uint8_t code;
@@ -293,7 +298,8 @@ int FAST_FUNC udhcp_str2nip(const char *str, void *arg);
int FAST_FUNC udhcp_str2optset(const char *str,
void *arg,
const struct dhcp_optflag *optflags,
- const char *option_strings);
+ const char *option_strings,
+ enum client_addr_type addr_type);
#if ENABLE_UDHCPC || ENABLE_UDHCPD
void udhcp_init_header(struct dhcp_packet *packet, char type) FAST_FUNC;
diff --git a/networking/udhcp/d6_dhcpc.c b/networking/udhcp/d6_dhcpc.c
index 3ba2c4be5..0b6c4b28a 100644
--- a/networking/udhcp/d6_dhcpc.c
+++ b/networking/udhcp/d6_dhcpc.c
@@ -1161,6 +1161,7 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv)
IF_FEATURE_UDHCP_PORT(SERVER_PORT6 = 547;)
IF_FEATURE_UDHCP_PORT(CLIENT_PORT6 = 546;)
client_config.interface = "eth0";
+ client_config.dhcp_type = CLIENT_CONFIG_DHCPV6;
client_config.script = CONFIG_UDHCPC_DEFAULT_SCRIPT;
/* Parse command line */
@@ -1217,7 +1218,8 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv)
}
while (list_x) {
char *optstr = xstrdup(llist_pop(&list_x));
- udhcp_str2optset(optstr, &client_config.options, d6_optflags, d6_option_strings);
+ udhcp_str2optset(optstr, &client_config.options, d6_optflags, d6_option_strings,
+ client_config.dhcp_type);
free(optstr);
}
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
index bd9e8fdc2..73f044b6d 100644
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -1265,6 +1265,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
IF_FEATURE_UDHCP_PORT(SERVER_PORT = 67;)
IF_FEATURE_UDHCP_PORT(CLIENT_PORT = 68;)
client_config.interface = "eth0";
+ client_config.dhcp_type = CLIENT_CONFIG_DHCPV4;
client_config.script = CONFIG_UDHCPC_DEFAULT_SCRIPT;
str_V = "udhcp "BB_VER;
@@ -1337,7 +1338,8 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
}
while (list_x) {
char *optstr = xstrdup(llist_pop(&list_x));
- udhcp_str2optset(optstr, &client_config.options, dhcp_optflags, \
dhcp_option_strings); + udhcp_str2optset(optstr, &client_config.options, \
dhcp_optflags, dhcp_option_strings, + client_config.dhcp_type);
free(optstr);
}
diff --git a/networking/udhcp/dhcpc.h b/networking/udhcp/dhcpc.h
index 7fdbc9a6c..c6ab1225e 100644
--- a/networking/udhcp/dhcpc.h
+++ b/networking/udhcp/dhcpc.h
@@ -21,6 +21,7 @@ struct client_config_t {
uint8_t *vendorclass; /* Optional vendor class-id to use */
uint8_t *hostname; /* Optional hostname to use */
uint8_t *fqdn; /* Optional fully qualified domain name to use */
+ enum client_addr_type dhcp_type;
uint16_t first_secs;
uint16_t last_secs;
diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c
index 19f94a2d7..54cf30a83 100644
--- a/networking/udhcp/dhcpd.c
+++ b/networking/udhcp/dhcpd.c
@@ -362,7 +362,7 @@ static int FAST_FUNC read_staticlease(const char *const_line, \
void *arg) }
static int FAST_FUNC read_optset(const char *line, void *arg) {
- return udhcp_str2optset(line, arg, dhcp_optflags, dhcp_option_strings);
+ return udhcp_str2optset(line, arg, dhcp_optflags, dhcp_option_strings, \
CLIENT_CONFIG_DHCPV4); }
struct config_keyword {
--
2.17.0
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic