From 3315d56c2d5363df1f44406302cf3e009e5adb6d Mon Sep 17 00:00:00 2001 From: Marina Maslova <Marina.Maslova@iopsys.eu> Date: Tue, 7 May 2024 17:44:08 +0400 Subject: [PATCH] hostapd: harmonize ubus channel and bandwith events --- .../99952-hostad-ubus-format-events.patch | 229 ++++++++++++++++++ 1 file changed, 229 insertions(+) create mode 100644 package/network/services/hostapd/patches/99952-hostad-ubus-format-events.patch diff --git a/package/network/services/hostapd/patches/99952-hostad-ubus-format-events.patch b/package/network/services/hostapd/patches/99952-hostad-ubus-format-events.patch new file mode 100644 index 00000000000..964994b072b --- /dev/null +++ b/package/network/services/hostapd/patches/99952-hostad-ubus-format-events.patch @@ -0,0 +1,229 @@ +--- a/src/ap/ubus.c ++++ b/src/ap/ubus.c +@@ -135,11 +135,11 @@ static void hostapd_ubus_ap_enable(struc + data = blobmsg_open_table(&b, "data"); + if (!data) + goto exit; +- if (blobmsg_add_string(&b, "freq", argv[1] + strlen("freq="))) ++ if (blobmsg_add_u32(&b, "freq", atoi(argv[1] + strlen("freq=")))) + goto exit; +- if (blobmsg_add_u32(&b, "dfs", atoi(argv[2] + strlen("dfs=")))) ++ if (blobmsg_add_u32(&b, "bandwidth", atoi(argv[3] + strlen("width=")))) + goto exit; +- if (blobmsg_add_u32(&b, "width", atoi(argv[3] + strlen("width=")))) ++ if (blobmsg_add_u32(&b, "dfs", atoi(argv[2] + strlen("dfs=")))) + goto exit; + blobmsg_close_table(&b, data); + } +@@ -876,13 +876,10 @@ static void hostapd_ubus_dfs_radar(struc + char service[] = "wifi.radio"; + struct blob_buf b; + unsigned char channel; +- char chan[8]; + char *argv[8]; + int argc; + void *data; + char *str; +- char width_buf[50]; +- char *width; + int chwidth; + + /* freq=%d ht_enabled=%d chan_offset=%d chan_width=%d cf1=%d cf2=%d */ +@@ -908,22 +905,18 @@ static void hostapd_ubus_dfs_radar(struc + chwidth = atoi(argv[4] + strlen("chan_width=")); + + chwidth = get_real_chan_width(chwidth); +- snprintf(width_buf, sizeof(width_buf), "%d", chwidth); +- width = width_buf; +- + + data = blobmsg_open_table(&b, "data"); + if (!data) + goto exit; +- if (blobmsg_add_string(&b, "freq", argv[1] + strlen("freq="))) ++ if (blobmsg_add_u32(&b, "freq", atoi(argv[1] + strlen("freq=")))) + goto exit; + + ieee80211_freq_to_chan(atoi(argv[1] + strlen("freq=")), &channel); +- snprintf(chan, sizeof(chan), "%u", channel); + +- if (blobmsg_add_string(&b, "channel", chan)) ++ if (blobmsg_add_u32(&b, "channel", channel)) + goto exit; +- if (blobmsg_add_string(&b, "bandwidth", width)) ++ if (blobmsg_add_u32(&b, "bandwidth", chwidth)) + goto exit; + blobmsg_close_table(&b, data); + +@@ -965,9 +958,9 @@ static void hostapd_ubus_dfs_new_channel + data = blobmsg_open_table(&b, "data"); + if (!data) + goto exit; +- if (blobmsg_add_string(&b, "freq", argv[1] + strlen("freq="))) ++ if (blobmsg_add_u32(&b, "freq", atoi(argv[1] + strlen("freq=")))) + goto exit; +- if (blobmsg_add_string(&b, "channel", argv[2] + strlen("chan="))) ++ if (blobmsg_add_u32(&b, "channel", atoi(argv[2] + strlen("chan=")))) + goto exit; + blobmsg_close_table(&b, data); + +@@ -988,8 +981,6 @@ static void hostapd_ubus_dfs_cac_start(s + char *str; + int chwidth; + int sec_chan; +- char width_buf[50]; +- char *width; + + /* freq=%d chan=%d sec_chan=%d, width=%d, seg0=%d, seg1=%d, cac_time=%d */ + memset(&b, 0, sizeof(b)); +@@ -1019,8 +1010,6 @@ static void hostapd_ubus_dfs_cac_start(s + } + + chwidth = get_real_chan_width(chwidth); +- snprintf(width_buf, sizeof(width_buf), "%d", chwidth); +- width = width_buf; + + if (blobmsg_add_string(&b, "ifname", hapd->conf->iface)) + goto exit; +@@ -1030,13 +1019,13 @@ static void hostapd_ubus_dfs_cac_start(s + data = blobmsg_open_table(&b, "data"); + if (!data) + goto exit; +- if (blobmsg_add_string(&b, "freq", argv[1] + strlen("freq="))) ++ if (blobmsg_add_u32(&b, "freq", atoi(argv[1] + strlen("freq=")))) + goto exit; +- if (blobmsg_add_string(&b, "channel", argv[2] + strlen("chan="))) ++ if (blobmsg_add_u32(&b, "channel", atoi(argv[2] + strlen("chan=")))) + goto exit; +- if (blobmsg_add_string(&b, "bandwidth", width)) ++ if (blobmsg_add_u32(&b, "bandwidth", chwidth)) + goto exit; +- if (blobmsg_add_string(&b, "cac_time", argv[7] + strlen("cac_time="))) ++ if (blobmsg_add_u32(&b, "cac_time", atoi(argv[7] + strlen("cac_time=")))) + goto exit; + blobmsg_close_table(&b, data); + +@@ -1052,14 +1041,11 @@ static void hostapd_ubus_dfs_cac_complet + char service[] = "wifi.radio"; + struct blob_buf b; + unsigned char channel; +- char chan[8]; + char *argv[12]; + int argc; + void *data; + char *str; +- char width_buf[50]; +- int chwidth; +- char *width; ++ int chwidth; + + /* success=%d freq=%d ht_enabled=%d chan_offset=%d chan_width=%d cf1=%d cf2=%d */ + memset(&b, 0, sizeof(b)); +@@ -1085,23 +1071,20 @@ static void hostapd_ubus_dfs_cac_complet + chwidth = atoi(argv[5] + strlen("chan_width=")); + + chwidth = get_real_chan_width(chwidth); +- snprintf(width_buf, sizeof(width_buf), "%d", chwidth); +- width = width_buf; + + data = blobmsg_open_table(&b, "data"); + if (!data) + goto exit; +- if (blobmsg_add_string(&b, "freq", argv[2] + strlen("freq="))) ++ if (blobmsg_add_u32(&b, "freq", atoi(argv[2] + strlen("freq=")))) + goto exit; + + ieee80211_freq_to_chan(atoi(argv[2] + strlen("freq=")), &channel); +- snprintf(chan, sizeof(chan), "%u", channel); +- if (blobmsg_add_string(&b, "channel", chan)) ++ if (blobmsg_add_u32(&b, "channel", channel)) + goto exit; + +- if (blobmsg_add_string(&b, "bandwidth", width)) ++ if (blobmsg_add_u32(&b, "bandwidth", chwidth)) + goto exit; +- if (blobmsg_add_string(&b, "success", argv[1] + strlen("success="))) ++ if (blobmsg_add_u32(&b, "success", atoi(argv[1] + strlen("success=")))) + goto exit; + blobmsg_close_table(&b, data); + +@@ -1117,14 +1100,11 @@ static void hostapd_ubus_dfs_nop_finishe + char service[] = "wifi.radio"; + struct blob_buf b; + unsigned char channel; +- char chan[8]; + char *argv[8]; + int argc; + void *data; + char *str; +- char width_buf[50]; + int chwidth; +- char *width; + + /* freq=%d ht_enabled=%d chan_offset=%d chan_width=%d cf1=%d cf2=%d */ + memset(&b, 0, sizeof(b)); +@@ -1148,21 +1128,18 @@ static void hostapd_ubus_dfs_nop_finishe + chwidth = atoi(argv[4] + strlen("chan_width=")); + + chwidth = get_real_chan_width(chwidth); +- snprintf(width_buf, sizeof(width_buf), "%d", chwidth); +- width = width_buf; + + data = blobmsg_open_table(&b, "data"); + if (!data) + goto exit; +- if (blobmsg_add_string(&b, "freq", argv[1] + strlen("freq="))) ++ if (blobmsg_add_u32(&b, "freq", atoi(argv[1] + strlen("freq=")))) + goto exit; + + ieee80211_freq_to_chan(atoi(argv[1] + strlen("freq=")), &channel); +- snprintf(chan, sizeof(chan), "%u", channel); +- if (blobmsg_add_string(&b, "channel", chan)) ++ if (blobmsg_add_u32(&b, "channel", channel)) + goto exit; + +- if (blobmsg_add_string(&b, "bandwidth", width)) ++ if (blobmsg_add_u32(&b, "bandwidth", chwidth)) + goto exit; + blobmsg_close_table(&b, data); + +@@ -1178,14 +1155,11 @@ static void hostapd_ubus_dfs_pre_cac_exp + char service[] = "wifi.radio"; + struct blob_buf b; + unsigned char channel; +- char chan[8]; + char *argv[8]; + int argc; + void *data; + char *str; +- char width_buf[50]; + int chwidth; +- char *width; + + /* freq=%d ht_enabled=%d chan_offset=%d chan_width=%d cf1=%d cf2=%d */ + memset(&b, 0, sizeof(b)); +@@ -1209,21 +1183,18 @@ static void hostapd_ubus_dfs_pre_cac_exp + chwidth = atoi(argv[4] + strlen("chan_width=")); + + chwidth = get_real_chan_width(chwidth); +- snprintf(width_buf, sizeof(width_buf), "%d", chwidth); +- width = width_buf; + + data = blobmsg_open_table(&b, "data"); + if (!data) + goto exit; +- if (blobmsg_add_string(&b, "freq", argv[1] + strlen("freq="))) ++ if (blobmsg_add_u32(&b, "freq", atoi(argv[1] + strlen("freq=")))) + goto exit; + + ieee80211_freq_to_chan(atoi(argv[1] + strlen("freq=")), &channel); +- snprintf(chan, sizeof(chan), "%u", channel); +- if (blobmsg_add_string(&b, "channel", chan)) ++ if (blobmsg_add_u32(&b, "channel", channel)) + goto exit; + +- if (blobmsg_add_string(&b, "bandwidth", width)) ++ if (blobmsg_add_u32(&b, "bandwidth", chwidth)) + goto exit; + blobmsg_close_table(&b, data); + -- GitLab