+--- a/src/ap/sta_info.c
++++ b/src/ap/sta_info.c
+@@ -386,6 +386,7 @@ void ap_handle_timer(void *eloop_ctx, vo
+ HOSTAPD_LEVEL_INFO, "deauthenticated due to "
+ "local deauth request");
+ ap_free_sta(hapd, sta);
++ hostapd_ubus_notify(hapd, "local-deauth", sta->addr);
+ return;
+ }
+
+@@ -533,6 +534,7 @@ skip_poll:
+ hapd, sta,
+ WLAN_REASON_PREV_AUTH_NOT_VALID);
+ ap_free_sta(hapd, sta);
++ hostapd_ubus_notify(hapd, "inactive-deauth", sta->addr);
+ break;
+ }
+ }
+--- a/src/ap/wpa_auth_glue.c
++++ b/src/ap/wpa_auth_glue.c
+@@ -159,6 +159,7 @@ static void hostapd_wpa_auth_psk_failure
+ struct hostapd_data *hapd = ctx;
+ wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_POSSIBLE_PSK_MISMATCH MACSTR,
+ MAC2STR(addr));
++ hostapd_ubus_notify(hapd, "key-mismatch", addr);
+ }
+
+