]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
dbus: Export BSS Transition Management status
authorMatthew Wang <matthewmwang@chromium.org>
Fri, 4 May 2018 18:16:18 +0000 (11:16 -0700)
committerJouni Malinen <j@w1.fi>
Wed, 2 Jan 2019 22:27:01 +0000 (00:27 +0200)
Add new Interface properties "BSSTMStatus", which carries the status of
the most recent BSS Transition Management request. This property will be
logged in UMA to measure 802.11v success.

Signed-off-by: Matthew Wang <matthewmwang@chromium.org>
doc/dbus.doxygen
wpa_supplicant/dbus/dbus_new.c
wpa_supplicant/dbus/dbus_new.h
wpa_supplicant/dbus/dbus_new_handlers.c
wpa_supplicant/dbus/dbus_new_handlers.h
wpa_supplicant/notify.c
wpa_supplicant/notify.h
wpa_supplicant/wnm_sta.c
wpa_supplicant/wpa_supplicant_i.h

index 3e924862ed8ee114e33cbd236a2b651608450f08..f4584f4f45cb4759fb3cf8d40b9aa84f0d5655e5 100644 (file)
@@ -789,6 +789,11 @@ fi.w1.wpa_supplicant1.CreateInterface.
        <p>The most recent BSS session length in milliseconds.</p>
       </li>
 
+      <li>
+       <h3>BSSTMStatus - u - (read)</h3>
+       <p>The most recent BSS Transition Management status code.</p>
+      </li>
+
       <li>
        <h3>EapolVersion - s - (read/write)</h3>
        <p>IEEE 802.1X/EAPOL version number</p>
index 04e1b6a1083a9f3fea73b070befa85feebf0896a..ed2659bad025e6247fa4184a79cae8669b06ff8f 100644 (file)
@@ -2244,6 +2244,9 @@ void wpas_dbus_signal_prop_changed(struct wpa_supplicant *wpa_s,
        case WPAS_DBUS_PROP_SESSION_LENGTH:
                prop = "SessionLength";
                break;
+       case WPAS_DBUS_PROP_BSS_TM_STATUS:
+               prop = "BSSTMStatus";
+               break;
        default:
                wpa_printf(MSG_ERROR, "dbus: %s: Unknown Property value %d",
                           __func__, property);
@@ -2866,6 +2869,12 @@ static const struct wpa_dbus_property_desc wpas_dbus_bss_properties[] = {
          NULL,
          NULL
        },
+       {
+         "BSSTMStatus", WPAS_DBUS_NEW_IFACE_INTERFACE, "u",
+         wpas_dbus_getter_bss_tm_status,
+         NULL,
+         NULL
+       },
        { NULL, NULL, NULL, NULL, NULL, NULL }
 };
 
index 67d0f57ca44b94c78d1a07236b8298a96867a4e6..ef16b368234ad01106db95e94f3a7846616080f4 100644 (file)
@@ -34,6 +34,7 @@ enum wpas_dbus_prop {
        WPAS_DBUS_PROP_ROAM_TIME,
        WPAS_DBUS_PROP_ROAM_COMPLETE,
        WPAS_DBUS_PROP_SESSION_LENGTH,
+       WPAS_DBUS_PROP_BSS_TM_STATUS,
 };
 
 enum wpas_dbus_bss_prop {
index d2b86c1dee37c6495c50afb5443764689aa56d9b..60557db34ebc052407d60eab9f890739fdf69ab7 100644 (file)
@@ -3178,6 +3178,28 @@ dbus_bool_t wpas_dbus_getter_session_length(
 }
 
 
+/**
+ * wpas_dbus_getter_bss_tm_status - Get most BSS Transition Management request
+ * status code
+ * @iter: Pointer to incoming dbus message iter
+ * @error: Location to store error on failure
+ * @user_data: Function specific data
+ * Returns: TRUE on success, FALSE on failure
+ *
+ * Getter for "BSSTMStatus" property.
+ */
+dbus_bool_t wpas_dbus_getter_bss_tm_status(
+       const struct wpa_dbus_property_desc *property_desc,
+       DBusMessageIter *iter, DBusError *error, void *user_data)
+{
+       struct wpa_supplicant *wpa_s = user_data;
+       dbus_uint32_t bss_tm_status = wpa_s->bss_tm_status;
+
+       return wpas_dbus_simple_property_getter(iter, DBUS_TYPE_UINT32,
+                                               &bss_tm_status, error);
+}
+
+
 /**
  * wpas_dbus_getter_bss_expire_age - Get BSS entry expiration age
  * @iter: Pointer to incoming dbus message iter
index 19d03446c05ef27db018b0b4d5afc311a5a218a4..f14df3e35d6e873caacbb42888e3f3179a5bceba 100644 (file)
@@ -154,6 +154,7 @@ DECLARE_ACCESSOR(wpas_dbus_getter_assoc_status_code);
 DECLARE_ACCESSOR(wpas_dbus_getter_roam_time);
 DECLARE_ACCESSOR(wpas_dbus_getter_roam_complete);
 DECLARE_ACCESSOR(wpas_dbus_getter_session_length);
+DECLARE_ACCESSOR(wpas_dbus_getter_bss_tm_status);
 DECLARE_ACCESSOR(wpas_dbus_getter_bss_expire_age);
 DECLARE_ACCESSOR(wpas_dbus_setter_bss_expire_age);
 DECLARE_ACCESSOR(wpas_dbus_getter_bss_expire_count);
index a9d567114161ac5b6050112885dbcebe63deeb8c..530548f9c5f3e43849a2d6ddb5ccf11259cd3d68 100644 (file)
@@ -176,6 +176,15 @@ void wpas_notify_session_length(struct wpa_supplicant *wpa_s)
 }
 
 
+void wpas_notify_bss_tm_status(struct wpa_supplicant *wpa_s)
+{
+       if (wpa_s->p2p_mgmt)
+               return;
+
+       wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_BSS_TM_STATUS);
+}
+
+
 void wpas_notify_network_changed(struct wpa_supplicant *wpa_s)
 {
        if (wpa_s->p2p_mgmt)
index bde20e83d220fcc53d0cc4c121e8700d1d5cc0e7..9605785cff7779b6c262bcf41f85bbbbbb14c1a7 100644 (file)
@@ -27,6 +27,7 @@ void wpas_notify_assoc_status_code(struct wpa_supplicant *wpa_s);
 void wpas_notify_roam_time(struct wpa_supplicant *wpa_s);
 void wpas_notify_roam_complete(struct wpa_supplicant *wpa_s);
 void wpas_notify_session_length(struct wpa_supplicant *wpa_s);
+void wpas_notify_bss_tm_status(struct wpa_supplicant *wpa_s);
 void wpas_notify_network_changed(struct wpa_supplicant *wpa_s);
 void wpas_notify_ap_scan_changed(struct wpa_supplicant *wpa_s);
 void wpas_notify_bssid_changed(struct wpa_supplicant *wpa_s);
index 560b0712826e178b0325ba2222e72aff7f016765..22a21361ad8a47a3bb9f33536373140afc9e2c45 100644 (file)
@@ -21,6 +21,7 @@
 #include "ctrl_iface.h"
 #include "bss.h"
 #include "wnm_sta.h"
+#include "notify.h"
 #include "hs20_supplicant.h"
 
 #define MAX_TFS_IE_LEN  1024
@@ -1015,6 +1016,9 @@ static void wnm_send_bss_transition_mgmt_resp(
                return;
        }
 
+       wpa_s->bss_tm_status = status;
+       wpas_notify_bss_tm_status(wpa_s);
+
        wpabuf_put_u8(buf, WLAN_ACTION_WNM);
        wpabuf_put_u8(buf, WNM_BSS_TRANS_MGMT_RESP);
        wpabuf_put_u8(buf, dialog_token);
index 6bedcdd90946f47d61002f0378d4889cdee175d5..2b0b0886c193a73cd02d55bed9e0ec75ab028433 100644 (file)
@@ -1065,6 +1065,7 @@ struct wpa_supplicant {
        struct neighbor_report *wnm_neighbor_report_elements;
        struct os_reltime wnm_cand_valid_until;
        u8 wnm_cand_from_bss[ETH_ALEN];
+       enum bss_trans_mgmt_status_code bss_tm_status;
        struct wpabuf *coloc_intf_elems;
        u8 coloc_intf_dialog_token;
        u8 coloc_intf_auto_report;