aboutsummaryrefslogtreecommitdiffstats
path: root/src/eapol_auth/eapol_auth_sm.c
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2015-07-12 08:31:28 (GMT)
committerJouni Malinen <j@w1.fi>2015-07-12 08:34:18 (GMT)
commit3722c0f4aae47663e1f3bd81cd78d4653c4db5f8 (patch)
tree58d1cd8bf6989ac0b911f1ac92ca48b77382521b /src/eapol_auth/eapol_auth_sm.c
parenta32a6d2ca24c4009e693a2b07a2d75372ce4c8b4 (diff)
downloadhostap-3722c0f4aae47663e1f3bd81cd78d4653c4db5f8.zip
hostap-3722c0f4aae47663e1f3bd81cd78d4653c4db5f8.tar.gz
hostap-3722c0f4aae47663e1f3bd81cd78d4653c4db5f8.tar.bz2
Add EAPOL_SET hostapd command to configure EAPOL parameters
This new control interface command "EAPOL_REAUTH <MAC address> <parameter> <value>" can be used to implement the IEEE 802.1X PAE Set Authenticator Configuration operation. Signed-off-by: Jouni Malinen <j@w1.fi>
Diffstat (limited to 'src/eapol_auth/eapol_auth_sm.c')
-rw-r--r--src/eapol_auth/eapol_auth_sm.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/eapol_auth/eapol_auth_sm.c b/src/eapol_auth/eapol_auth_sm.c
index aed89ec..cbd5287 100644
--- a/src/eapol_auth/eapol_auth_sm.c
+++ b/src/eapol_auth/eapol_auth_sm.c
@@ -1089,6 +1089,78 @@ void eapol_auth_reauthenticate(struct eapol_state_machine *sm)
}
+int eapol_auth_set_conf(struct eapol_state_machine *sm, const char *param,
+ const char *value)
+{
+ wpa_printf(MSG_DEBUG, "EAPOL: External configuration operation for "
+ MACSTR " - param=%s value=%s",
+ MAC2STR(sm->addr), param, value);
+
+ if (os_strcasecmp(param, "AdminControlledDirections") == 0) {
+ if (os_strcmp(value, "Both") == 0)
+ sm->adminControlledDirections = Both;
+ else if (os_strcmp(value, "In") == 0)
+ sm->adminControlledDirections = In;
+ else
+ return -1;
+ eapol_auth_step(sm);
+ return 0;
+ }
+
+ if (os_strcasecmp(param, "AdminControlledPortControl") == 0) {
+ if (os_strcmp(value, "ForceAuthorized") == 0)
+ sm->portControl = ForceAuthorized;
+ else if (os_strcmp(value, "ForceUnauthorized") == 0)
+ sm->portControl = ForceUnauthorized;
+ else if (os_strcmp(value, "Auto") == 0)
+ sm->portControl = Auto;
+ else
+ return -1;
+ eapol_auth_step(sm);
+ return 0;
+ }
+
+ if (os_strcasecmp(param, "quietPeriod") == 0) {
+ sm->quietPeriod = atoi(value);
+ return 0;
+ }
+
+ if (os_strcasecmp(param, "serverTimeout") == 0) {
+ sm->serverTimeout = atoi(value);
+ return 0;
+ }
+
+ if (os_strcasecmp(param, "reAuthPeriod") == 0) {
+ sm->reAuthPeriod = atoi(value);
+ return 0;
+ }
+
+ if (os_strcasecmp(param, "reAuthEnabled") == 0) {
+ if (os_strcmp(value, "TRUE") == 0)
+ sm->reAuthEnabled = TRUE;
+ else if (os_strcmp(value, "FALSE") == 0)
+ sm->reAuthEnabled = FALSE;
+ else
+ return -1;
+ eapol_auth_step(sm);
+ return 0;
+ }
+
+ if (os_strcasecmp(param, "KeyTransmissionEnabled") == 0) {
+ if (os_strcmp(value, "TRUE") == 0)
+ sm->keyTxEnabled = TRUE;
+ else if (os_strcmp(value, "FALSE") == 0)
+ sm->keyTxEnabled = FALSE;
+ else
+ return -1;
+ eapol_auth_step(sm);
+ return 0;
+ }
+
+ return -1;
+}
+
+
static int eapol_auth_conf_clone(struct eapol_auth_config *dst,
struct eapol_auth_config *src)
{