From: John Crispin Date: Wed, 18 Sep 2024 13:05:34 +0000 (+0200) Subject: hostapd: send a notification via ubus when CSA completed X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=3ed5f6430b0f07116fabc3d45e5ee1cb7280f6d2;p=openwrt%2Fstaging%2Fwigyori.git hostapd: send a notification via ubus when CSA completed Signed-off-by: John Crispin --- diff --git a/package/network/services/hostapd/patches/600-ubus_support.patch b/package/network/services/hostapd/patches/600-ubus_support.patch index fb3bfb0120..256d1cfcc4 100644 --- a/package/network/services/hostapd/patches/600-ubus_support.patch +++ b/package/network/services/hostapd/patches/600-ubus_support.patch @@ -116,6 +116,14 @@ probe/assoc/auth requests via object subscribe. #ifdef CONFIG_P2P if (elems.p2p) { wpabuf_free(sta->p2p_ie); +@@ -1369,6 +1379,7 @@ void hostapd_event_ch_switch(struct host + + wpa_msg(hapd->msg_ctx, MSG_INFO, AP_CSA_FINISHED + "freq=%d dfs=%d", freq, is_dfs); ++ hostapd_ubus_notify_csa(hapd, freq); + } else if (hapd->iface->drv_flags & WPA_DRIVER_FLAGS_DFS_OFFLOAD) { + /* Complete AP configuration for the first bring up. */ + if (is_dfs0 > 0 && --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c @@ -475,6 +475,7 @@ void hostapd_free_hapd_data(struct hosta diff --git a/package/network/services/hostapd/src/src/ap/ubus.c b/package/network/services/hostapd/src/src/ap/ubus.c index 4dda2b0571..2256720755 100644 --- a/package/network/services/hostapd/src/src/ap/ubus.c +++ b/package/network/services/hostapd/src/src/ap/ubus.c @@ -2024,3 +2024,16 @@ void hostapd_ubus_notify_apup_newpeer( ubus_notify(ctx, &hapd->ubus.obj, "apup-newpeer", b.head, -1); } #endif // def CONFIG_APUP + +void hostapd_ubus_notify_csa(struct hostapd_data *hapd, int freq) +{ + if (!hapd->ubus.obj.has_subscribers) + return; + + blob_buf_init(&b, 0); + blobmsg_add_string(&b, "ifname", hapd->conf->iface); + blobmsg_add_u32(&b, "freq", freq); + blobmsg_printf(&b, "bssid", MACSTR, MAC2STR(hapd->conf->bssid)); + + ubus_notify(ctx, &hapd->ubus.obj, "channel-switch", b.head, -1); +} diff --git a/package/network/services/hostapd/src/src/ap/ubus.h b/package/network/services/hostapd/src/src/ap/ubus.h index 5c03cb90ad..055a18c092 100644 --- a/package/network/services/hostapd/src/src/ap/ubus.h +++ b/package/network/services/hostapd/src/src/ap/ubus.h @@ -68,6 +68,7 @@ int hostapd_ubus_notify_bss_transition_query( const u8 *candidate_list, u16 candidate_list_len); void hostapd_ubus_notify_authorized(struct hostapd_data *hapd, struct sta_info *sta, const char *auth_alg); +void hostapd_ubus_notify_csa(struct hostapd_data *hapd, int freq); #ifdef CONFIG_APUP void hostapd_ubus_notify_apup_newpeer( @@ -155,6 +156,11 @@ hostapd_ubus_notify_authorized(struct hostapd_data *hapd, struct sta_info *sta, { } +static inline void +hostapd_ubus_notify_csa(struct hostapd_data *hapd, int freq) +{ +} + #endif #endif