Trigger WPS configuration update on string changes
authorJouni Malinen <jouni.malinen@atheros.com>
Fri, 30 Jul 2010 00:13:11 +0000 (17:13 -0700)
committerJouni Malinen <j@w1.fi>
Thu, 9 Sep 2010 14:17:21 +0000 (07:17 -0700)
Previously, only Device Name string was handled, but similar trigger
is needed on Manufacturer, Model Name, Model Number, and Serial Number
changes.

wpa_supplicant/config.c
wpa_supplicant/config.h
wpa_supplicant/wps_supplicant.c

index dbbf5eb..790816a 100644 (file)
@@ -2376,10 +2376,10 @@ static const struct global_parse_data global_fields[] = {
 #ifdef CONFIG_WPS
        { FUNC(uuid), CFG_CHANGED_UUID },
        { STR_RANGE(device_name, 0, 32), CFG_CHANGED_DEVICE_NAME },
-       { STR_RANGE(manufacturer, 0, 64), 0 },
-       { STR_RANGE(model_name, 0, 32), 0 },
-       { STR_RANGE(model_number, 0, 32), 0 },
-       { STR_RANGE(serial_number, 0, 32), 0 },
+       { STR_RANGE(manufacturer, 0, 64), CFG_CHANGED_WPS_STRING },
+       { STR_RANGE(model_name, 0, 32), CFG_CHANGED_WPS_STRING },
+       { STR_RANGE(model_number, 0, 32), CFG_CHANGED_WPS_STRING },
+       { STR_RANGE(serial_number, 0, 32), CFG_CHANGED_WPS_STRING },
        { STR(device_type), CFG_CHANGED_DEVICE_TYPE },
        { FUNC(os_version), CFG_CHANGED_OS_VERSION },
        { STR(config_methods), CFG_CHANGED_CONFIG_METHODS },
index 9faa4f9..d3291cd 100644 (file)
@@ -36,6 +36,7 @@
 #define CFG_CHANGED_COUNTRY BIT(5)
 #define CFG_CHANGED_SEC_DEVICE_TYPE BIT(6)
 #define CFG_CHANGED_P2P_SSID_POSTFIX BIT(7)
+#define CFG_CHANGED_WPS_STRING BIT(8)
 
 /**
  * struct wpa_config - wpa_supplicant configuration data
index 9ded028..c955e9f 100644 (file)
@@ -1387,7 +1387,8 @@ void wpas_wps_update_config(struct wpa_supplicant *wpa_s)
                        os_memcpy(wps->uuid, wpa_s->conf->uuid, WPS_UUID_LEN);
        }
 
-       if (wpa_s->conf->changed_parameters & CFG_CHANGED_DEVICE_NAME) {
+       if (wpa_s->conf->changed_parameters &
+           (CFG_CHANGED_DEVICE_NAME | CFG_CHANGED_WPS_STRING)) {
                /* Update pointers to make sure they refer current values */
                wps->dev.device_name = wpa_s->conf->device_name;
                wps->dev.manufacturer = wpa_s->conf->manufacturer;