From 31b79e11973e87ddd4abc2782ad1374fee80f17b Mon Sep 17 00:00:00 2001 From: Shan Palanisamy Date: Thu, 16 Feb 2012 19:36:48 +0200 Subject: [PATCH] hostapd: Allow config parameters to be set through ctrl_iface Signed-hostap: Jouni Malinen --- hostapd/config_file.c | 25 +++++++++++++++++++++++++ hostapd/config_file.h | 3 +++ hostapd/ctrl_iface.c | 3 ++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/hostapd/config_file.c b/hostapd/config_file.c index 6949d5237..77a34fb60 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -2276,3 +2276,28 @@ struct hostapd_config * hostapd_config_read(const char *fname) return conf; } + + +int hostapd_set_iface(struct hostapd_config *conf, + struct hostapd_bss_config *bss, char *field, char *value) +{ + int errors = 0; + size_t i; + + errors = hostapd_config_fill(conf, bss, field, value, 0); + if (errors) { + wpa_printf(MSG_INFO, "Failed to set configuration field '%s' " + "to value '%s'", field, value); + return -1; + } + + for (i = 0; i < conf->num_bss; i++) + hostapd_set_security_params(&conf->bss[i]); + + if (hostapd_config_check(conf)) { + wpa_printf(MSG_ERROR, "Configuration check failed"); + errors++; + } + + return 0; +} diff --git a/hostapd/config_file.h b/hostapd/config_file.h index 80d182e68..fba57b87a 100644 --- a/hostapd/config_file.h +++ b/hostapd/config_file.h @@ -10,5 +10,8 @@ #define CONFIG_FILE_H struct hostapd_config * hostapd_config_read(const char *fname); +int hostapd_set_iface(struct hostapd_config *conf, + struct hostapd_bss_config *bss, char *field, + char *value); #endif /* CONFIG_FILE_H */ diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c index 9d5a67e39..0cbb48393 100644 --- a/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c @@ -31,6 +31,7 @@ #include "ap/ap_drv_ops.h" #include "wps/wps_defs.h" #include "wps/wps.h" +#include "config_file.h" #include "ctrl_iface.h" @@ -774,7 +775,7 @@ static int hostapd_ctrl_iface_set(struct hostapd_data *hapd, char *cmd) wps_testing_dummy_cred); #endif /* CONFIG_WPS_TESTING */ } else { - ret = -1; + ret = hostapd_set_iface(hapd->iconf, hapd->conf, cmd, value); } return ret;