From e376290c667e970d751acc916e0efe2ed16292ed Mon Sep 17 00:00:00 2001 From: Dmitry Shmidt Date: Mon, 30 Jun 2014 09:59:17 -0700 Subject: [PATCH] HS 2.0R2: Add update_identifier field to network This can be used to configure a Hotspot 2.0 Release 2 network externally for a case where wpa_supplicant-based Interworking network selection is not used and the update_identifier cannot be copied directly from a cred. Signed-off-by: Dmitry Shmidt --- wpa_supplicant/config.c | 3 +++ wpa_supplicant/config_file.c | 3 +++ wpa_supplicant/config_ssid.h | 4 ++++ wpa_supplicant/config_winreg.c | 3 +++ wpa_supplicant/hs20_supplicant.c | 8 +++++++- 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c index 4dc3e96cd..8cd4a2f06 100644 --- a/wpa_supplicant/config.c +++ b/wpa_supplicant/config.c @@ -1751,6 +1751,9 @@ static const struct parse_data ssid_fields[] = { #ifdef CONFIG_MACSEC { INT_RANGE(macsec_policy, 0, 1) }, #endif /* CONFIG_MACSEC */ +#ifdef CONFIG_HS20 + { INT(update_identifier) }, +#endif /* CONFIG_HS20 */ }; #undef OFFSET diff --git a/wpa_supplicant/config_file.c b/wpa_supplicant/config_file.c index fd992188c..98855d888 100644 --- a/wpa_supplicant/config_file.c +++ b/wpa_supplicant/config_file.c @@ -739,6 +739,9 @@ static void wpa_config_write_network(FILE *f, struct wpa_ssid *ssid) #ifdef CONFIG_MACSEC INT(macsec_policy); #endif /* CONFIG_MACSEC */ +#ifdef CONFIG_HS20 + INT(update_identifier); +#endif /* CONFIG_HS20 */ #undef STR #undef INT diff --git a/wpa_supplicant/config_ssid.h b/wpa_supplicant/config_ssid.h index 76b0632e3..ab474ff85 100644 --- a/wpa_supplicant/config_ssid.h +++ b/wpa_supplicant/config_ssid.h @@ -647,6 +647,10 @@ struct wpa_ssid { */ int macsec_policy; #endif /* CONFIG_MACSEC */ + +#ifdef CONFIG_HS20 + int update_identifier; +#endif /* CONFIG_HS20 */ }; #endif /* CONFIG_SSID_H */ diff --git a/wpa_supplicant/config_winreg.c b/wpa_supplicant/config_winreg.c index 00a10045e..199f04fbb 100644 --- a/wpa_supplicant/config_winreg.c +++ b/wpa_supplicant/config_winreg.c @@ -930,6 +930,9 @@ static int wpa_config_write_network(HKEY hk, struct wpa_ssid *ssid, int id) MGMT_FRAME_PROTECTION_DEFAULT); #endif /* CONFIG_IEEE80211W */ STR(id_str); +#ifdef CONFIG_HS20 + INT(update_identifier); +#endif /* CONFIG_HS20 */ #undef STR #undef INT diff --git a/wpa_supplicant/hs20_supplicant.c b/wpa_supplicant/hs20_supplicant.c index ab8b66bb5..257aa6d11 100644 --- a/wpa_supplicant/hs20_supplicant.c +++ b/wpa_supplicant/hs20_supplicant.c @@ -109,7 +109,13 @@ int hs20_get_pps_mo_id(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid) { struct wpa_cred *cred; - if (ssid == NULL || ssid->parent_cred == NULL) + if (ssid == NULL) + return 0; + + if (ssid->update_identifier) + return ssid->update_identifier; + + if (ssid->parent_cred == NULL) return 0; for (cred = wpa_s->conf->cred; cred; cred = cred->next) {