aboutsummaryrefslogtreecommitdiffstats
path: root/wpa_supplicant
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2008-12-13 16:04:43 (GMT)
committerJouni Malinen <j@w1.fi>2008-12-13 16:04:43 (GMT)
commitd7afb15a109af896a3da88a412101b3719c6e100 (patch)
treee167bd234032596355791dc2f1a4c11145f16c0e /wpa_supplicant
parent55655636d86cfbc0b7ae5b94cb4c8a63a4380c86 (diff)
downloadhostap-06-d7afb15a109af896a3da88a412101b3719c6e100.zip
hostap-06-d7afb15a109af896a3da88a412101b3719c6e100.tar.gz
hostap-06-d7afb15a109af896a3da88a412101b3719c6e100.tar.bz2
Share the same global config parser function for integer values
Diffstat (limited to 'wpa_supplicant')
-rw-r--r--wpa_supplicant/config_file.c105
1 files changed, 32 insertions, 73 deletions
diff --git a/wpa_supplicant/config_file.c b/wpa_supplicant/config_file.c
index 85da902..76a1935 100644
--- a/wpa_supplicant/config_file.c
+++ b/wpa_supplicant/config_file.c
@@ -274,9 +274,22 @@ struct global_parse_data {
char *name;
int (*parser)(const struct global_parse_data *data,
struct wpa_config *config, int line, const char *value);
+ void *param1;
};
+static int wpa_config_parse_int(const struct global_parse_data *data,
+ struct wpa_config *config, int line,
+ const char *pos)
+{
+ int *dst;
+ dst = (int *) (((u8 *) config) + (long) data->param1);
+ *dst = atoi(pos);
+ wpa_printf(MSG_DEBUG, "%s=%d", data->name, *dst);
+ return 0;
+}
+
+
static int wpa_config_process_country(const struct global_parse_data *data,
struct wpa_config *config, int line,
const char *pos)
@@ -333,26 +346,6 @@ static int wpa_config_process_eapol_version(
}
-static int wpa_config_process_ap_scan(const struct global_parse_data *data,
- struct wpa_config *config, int line,
- const char *pos)
-{
- config->ap_scan = atoi(pos);
- wpa_printf(MSG_DEBUG, "ap_scan=%d", config->ap_scan);
- return 0;
-}
-
-
-static int wpa_config_process_fast_reauth(const struct global_parse_data *data,
- struct wpa_config *config, int line,
- const char *pos)
-{
- config->fast_reauth = atoi(pos);
- wpa_printf(MSG_DEBUG, "fast_reauth=%d", config->fast_reauth);
- return 0;
-}
-
-
#ifdef EAP_TLS_OPENSSL
static int wpa_config_process_opensc_engine_path(
@@ -404,51 +397,6 @@ static int wpa_config_process_driver_param(
}
-static int wpa_config_process_dot11RSNAConfigPMKLifetime(
- const struct global_parse_data *data,
- struct wpa_config *config, int line, const char *pos)
-{
- config->dot11RSNAConfigPMKLifetime = atoi(pos);
- wpa_printf(MSG_DEBUG, "dot11RSNAConfigPMKLifetime=%d",
- config->dot11RSNAConfigPMKLifetime);
- return 0;
-}
-
-
-static int wpa_config_process_dot11RSNAConfigPMKReauthThreshold(
- const struct global_parse_data *data,
- struct wpa_config *config, int line, const char *pos)
-{
- config->dot11RSNAConfigPMKReauthThreshold = atoi(pos);
- wpa_printf(MSG_DEBUG, "dot11RSNAConfigPMKReauthThreshold=%d",
- config->dot11RSNAConfigPMKReauthThreshold);
- return 0;
-}
-
-
-static int wpa_config_process_dot11RSNAConfigSATimeout(
- const struct global_parse_data *data,
- struct wpa_config *config, int line, const char *pos)
-{
- config->dot11RSNAConfigSATimeout = atoi(pos);
- wpa_printf(MSG_DEBUG, "dot11RSNAConfigSATimeout=%d",
- config->dot11RSNAConfigSATimeout);
- return 0;
-}
-
-
-#ifndef CONFIG_NO_CONFIG_WRITE
-static int wpa_config_process_update_config(
- const struct global_parse_data *data, struct wpa_config *config,
- int line, const char *pos)
-{
- config->update_config = atoi(pos);
- wpa_printf(MSG_DEBUG, "update_config=%d", config->update_config);
- return 0;
-}
-#endif /* CONFIG_NO_CONFIG_WRITE */
-
-
static int wpa_config_process_load_dynamic_eap(
const struct global_parse_data *data, struct wpa_config *config,
int line, const char *so)
@@ -578,7 +526,15 @@ static int wpa_config_process_os_version(const struct global_parse_data *data,
#endif /* CONFIG_WPS */
-#define FUNC(f) #f, wpa_config_process_ ## f
+#ifdef OFFSET
+#undef OFFSET
+#endif /* OFFSET */
+/* OFFSET: Get offset of a variable within the wpa_config structure */
+#define OFFSET(v) ((void *) &((struct wpa_config *) 0)->v)
+
+#define FUNC(f) #f, wpa_config_process_ ## f, OFFSET(f)
+#define FUNC_NO_VAR(f) #f, wpa_config_process_ ## f, 0
+#define INT(f) #f, wpa_config_parse_int, OFFSET(f)
static const struct global_parse_data global_fields[] = {
#ifdef CONFIG_CTRL_IFACE
@@ -586,21 +542,21 @@ static const struct global_parse_data global_fields[] = {
{ FUNC(ctrl_interface_group) },
#endif /* CONFIG_CTRL_IFACE */
{ FUNC(eapol_version) },
- { FUNC(ap_scan) },
- { FUNC(fast_reauth) },
+ { INT(ap_scan) },
+ { INT(fast_reauth) },
#ifdef EAP_TLS_OPENSSL
{ FUNC(opensc_engine_path) },
{ FUNC(pkcs11_engine_path) },
{ FUNC(pkcs11_module_path) },
#endif /* EAP_TLS_OPENSSL */
{ FUNC(driver_param) },
- { FUNC(dot11RSNAConfigPMKLifetime) },
- { FUNC(dot11RSNAConfigPMKReauthThreshold) },
- { FUNC(dot11RSNAConfigSATimeout) },
+ { INT(dot11RSNAConfigPMKLifetime) },
+ { INT(dot11RSNAConfigPMKReauthThreshold) },
+ { INT(dot11RSNAConfigSATimeout) },
#ifndef CONFIG_NO_CONFIG_WRITE
- { FUNC(update_config) },
+ { INT(update_config) },
#endif /* CONFIG_NO_CONFIG_WRITE */
- { FUNC(load_dynamic_eap) },
+ { FUNC_NO_VAR(load_dynamic_eap) },
#ifdef CONFIG_WPS
{ FUNC(uuid) },
{ FUNC(device_name) },
@@ -613,6 +569,9 @@ static const struct global_parse_data global_fields[] = {
#endif /* CONFIG_WPS */
{ FUNC(country) }
};
+
+#undef FUNC
+#undef INT
#define NUM_GLOBAL_FIELDS (sizeof(global_fields) / sizeof(global_fields[0]))