]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
dbus: Add method to disable channel switching with a TDLS peer
authorNishant Chaprana <n.chaprana@samsung.com>
Thu, 13 Apr 2017 12:09:01 +0000 (17:39 +0530)
committerJouni Malinen <j@w1.fi>
Sun, 7 May 2017 19:08:43 +0000 (22:08 +0300)
This patch adds "TDLSCancelChannelSwitch" dbus method on
"fi.w1.wpa_supplicant1.Interface" interface to disable channel switching
with a TDLS peer.

Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
doc/dbus.doxygen
wpa_supplicant/dbus/dbus_new.c
wpa_supplicant/dbus/dbus_new_handlers.c
wpa_supplicant/dbus/dbus_new_handlers.h

index 7590c9ed54213972e8ab8af07a775d627d1a4b09..a0e8fe43e1cb7b135196720e4130a8c9e2b489ab 100644 (file)
@@ -464,6 +464,15 @@ fi.w1.wpa_supplicant1.CreateInterface.
          <dd>A dictionary with arguments identifying the peer and channel switching behavior.</dd>
        </dl>
       </li>
+      <li>
+       <h3>TDLSCancelChannelSwitch ( s : peer_address ) --> nothing</h3>
+       <p>Disable channel switching for a TDLS session with a peer.</p>
+       <h4>Arguments</h4>
+       <dl>
+         <dt>s : peer_address</dt>
+         <dd>MAC address for the peer.</dd>
+       </dl>
+      </li>
       <li>
        <h3>VendorElemAdd ( i: frame_id, ay: ielems ) --> nothing</h3>
        <p>Add Vendor Elements to corresponding frame ID.</p>
index 2420984620e563fb3ec8ec1ae53b092fe279c304..393cdd401a1a381140f0eb2333f03a144db0b89b 100644 (file)
@@ -3093,6 +3093,13 @@ static const struct wpa_dbus_method_desc wpas_dbus_interface_methods[] = {
                  END_ARGS
          }
        },
+       { "TDLSCancelChannelSwitch", WPAS_DBUS_NEW_IFACE_INTERFACE,
+         (WPADBusMethodHandler) wpas_dbus_handler_tdls_cancel_channel_switch,
+         {
+                 { "peer_address", "s", ARG_IN },
+                 END_ARGS
+         }
+       },
 #endif /* CONFIG_TDLS */
        { "VendorElemAdd", WPAS_DBUS_NEW_IFACE_INTERFACE,
          (WPADBusMethodHandler) wpas_dbus_handler_vendor_elem_add,
index 65a6a0fd9e55cd8f82241130fab7a9e7bc820a65..63f787a853e1ee49a0c3e4912d4956bccdd37827 100644 (file)
@@ -2432,6 +2432,37 @@ wpas_dbus_handler_tdls_channel_switch(DBusMessage *message,
        return NULL;
 }
 
+/*
+ * wpas_dbus_handler_tdls_cancel_channel_switch - Disable channel switching with TDLS peer
+ * @message: Pointer to incoming dbus message
+ * @wpa_s: wpa_supplicant structure for a network interface
+ * Returns: NULL indicating success or DBus error message on failure
+ *
+ * Handler function for "TDLSCancelChannelSwitch" method call of network
+ * interface.
+ */
+DBusMessage *
+wpas_dbus_handler_tdls_cancel_channel_switch(DBusMessage *message,
+                                            struct wpa_supplicant *wpa_s)
+{
+       u8 peer[ETH_ALEN];
+       DBusMessage *error_reply;
+       int ret;
+
+       if (get_peer_hwaddr_helper(message, __func__, peer, &error_reply) < 0)
+               return error_reply;
+
+       wpa_printf(MSG_DEBUG, "dbus: TDLS_CANCEL_CHAN_SWITCH " MACSTR,
+                  MAC2STR(peer));
+
+       ret = wpa_tdls_disable_chan_switch(wpa_s->wpa, peer);
+       if (ret)
+               return wpas_dbus_error_unknown_error(
+                       message, "error canceling TDLS channel switch");
+
+       return NULL;
+}
+
 #endif /* CONFIG_TDLS */
 
 
index 8ce289f7e6c9f323bfa778f958a67ecb34080b21..7d3c3b1443fd24fff1bf626251b44c4ab99490b2 100644 (file)
@@ -219,6 +219,9 @@ DBusMessage * wpas_dbus_handler_tdls_teardown(DBusMessage *message,
 DBusMessage *
 wpas_dbus_handler_tdls_channel_switch(DBusMessage *message,
                                      struct wpa_supplicant *wpa_s);
+DBusMessage *
+wpas_dbus_handler_tdls_cancel_channel_switch(DBusMessage *message,
+                                            struct wpa_supplicant *wpa_s);
 
 DBusMessage * wpas_dbus_handler_vendor_elem_add(DBusMessage *message,
                                                struct wpa_supplicant *wpa_s);