From 03ed332407cb2c2774593854d232ab1b2c67f952 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Mon, 30 Dec 2013 15:43:55 +0200 Subject: [PATCH] Interworking: Allow cred blocks not to be saved to a file The new cred block parameter 'temporary' can be used to indicate that a cred block is not to be saved to wpa_supplicant configuration file (e.g., "SET_CRED 0 temporary 1"). This is similar to the concept of temporary network blocks and allows cred blocks to be managed outside the wpa_supplicant config file when other parameters are still saved to the file written by wpa_supplicant. Signed-hostap: Jouni Malinen --- wpa_supplicant/README-HS20 | 4 ++++ wpa_supplicant/config.c | 5 +++++ wpa_supplicant/config.h | 5 +++++ wpa_supplicant/config_file.c | 2 ++ wpa_supplicant/wpa_supplicant.conf | 2 ++ 5 files changed, 18 insertions(+) diff --git a/wpa_supplicant/README-HS20 b/wpa_supplicant/README-HS20 index 61e4a4dcc..ad29ef770 100644 --- a/wpa_supplicant/README-HS20 +++ b/wpa_supplicant/README-HS20 @@ -109,6 +109,8 @@ Credentials can be pre-configured for automatic network selection: # # credential fields: # +# temporary: Whether this credential is temporary and not to be saved +# # priority: Priority group # By default, all networks and credentials get the same priority group # (0). This field can be used to give higher priority for credentials @@ -269,6 +271,8 @@ OK OK > set_cred 0 priority 1 OK +> set_cred 0 temporary 1 +OK Add a SIM credential using a simulated SIM/USIM card for testing: diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c index 9ceaaf85c..5301ed715 100644 --- a/wpa_supplicant/config.c +++ b/wpa_supplicant/config.c @@ -2393,6 +2393,11 @@ int wpa_config_set_cred(struct wpa_cred *cred, const char *var, char *val; size_t len; + if (os_strcmp(var, "temporary") == 0) { + cred->temporary = atoi(value); + return 0; + } + if (os_strcmp(var, "priority") == 0) { cred->priority = atoi(value); return 0; diff --git a/wpa_supplicant/config.h b/wpa_supplicant/config.h index 068679e56..e24772d11 100644 --- a/wpa_supplicant/config.h +++ b/wpa_supplicant/config.h @@ -51,6 +51,11 @@ struct wpa_cred { */ int id; + /** + * temporary - Whether this credential is temporary and not to be saved + */ + int temporary; + /** * priority - Priority group * diff --git a/wpa_supplicant/config_file.c b/wpa_supplicant/config_file.c index 7d328673c..6312a77bd 100644 --- a/wpa_supplicant/config_file.c +++ b/wpa_supplicant/config_file.c @@ -1110,6 +1110,8 @@ int wpa_config_write(const char *name, struct wpa_config *config) wpa_config_write_global(f, config); for (cred = config->cred; cred; cred = cred->next) { + if (cred->temporary) + continue; fprintf(f, "\ncred={\n"); wpa_config_write_cred(f, cred); fprintf(f, "}\n"); diff --git a/wpa_supplicant/wpa_supplicant.conf b/wpa_supplicant/wpa_supplicant.conf index 08b720f63..9d3bf6d57 100644 --- a/wpa_supplicant/wpa_supplicant.conf +++ b/wpa_supplicant/wpa_supplicant.conf @@ -342,6 +342,8 @@ fast_reauth=1 # # credential fields: # +# temporary: Whether this credential is temporary and not to be saved +# # priority: Priority group # By default, all networks and credentials get the same priority group # (0). This field can be used to give higher priority for credentials