Commit graph

173 commits

Author SHA1 Message Date
Yaroslav Isakov
9d78b2f53c hostapd: fix EAP-PWD in experimental hostapd-radius server
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
Without initializing pwd_group, it's set to 0, which is reserved value.
When EAP-PWD is used in wpa_supplicant/eapol_test, next error is seen:
EAP-PWD: Server EAP-pwd-ID proposal: group=0 random=1 prf=1 prep=0
EAP-pwd: Unsupported or disabled proposal

Signed-off-by: Yaroslav Isakov <yaroslav.isakov@gmail.com>
2026-02-19 16:13:02 +01:00
Felix Fietkau
a7756346c7 hostapd: extend DPP ucode API with WPS M7/M8 encrypted settings handling
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
Add callbacks to intercept WPS M7 reception (registrar side) and M8
reception (enrollee side), allowing external code to inject extra
encrypted attributes and optionally skip credential building.

On the registrar side, the m7_rx callback receives the decrypted M7
content and can return extra data to include in M8's encrypted settings
as well as a flag to skip credential generation.

On the enrollee side, add a wps_set_m7 method to set extra encrypted
data for M7, and a m8_rx callback to handle the decrypted M8 content
externally.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-02-08 12:25:20 +01:00
Felix Fietkau
09de759506 hostapd: add DPP ucode API for external frame handling
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
Add a ucode API to hostapd and wpa_supplicant for external DPP frame
handling. This allows an external controller to intercept DPP frames
and handle the DPP protocol externally.

The API provides:
- RX callbacks (dpp_rx_action, dpp_rx_gas) called when DPP frames are
  received, allowing external handling before internal processing
- TX methods (dpp_send_action, dpp_send_gas_resp/dpp_send_gas_req) for
  transmitting DPP frames
- A ubus channel-based API (dpp_channel) for bidirectional communication
  with exclusive hook registration per interface
- CCE control for hostapd (set_cce method)

The wpa_supplicant API mirrors hostapd but adapted for STA role:
- Uses tx_gas_req instead of tx_gas_resp
- GAS RX provides full frame instead of parsed query
- No CCE control (AP-only feature)

Both implementations include:
- Timeout handling with automatic channel disconnect after 3 failures
- Hook cleanup on interface removal
- Last-caller-wins semantics for hook registration

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-02-07 09:27:57 +00:00
Felix Fietkau
b7cd16dba3 hostapd: fix dealing with required interface restart in AP+STA mode
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
Ensure that the BSS start_disabled option is always cleared, so that
interfaces come up properly.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-02-01 20:21:38 +01:00
John Crispin
b44d4290fe hostapd: add raw beacon report data to ubus notification
Add the complete base64-encoded beacon report structure to the
"beacon-report" ubus notification event.

Signed-off-by: John Crispin <john@phrozen.org>
2026-01-26 17:46:16 +00:00
John Crispin
79cd45ddee hostapd: add association frame to taxonomy data
Extend the taxonomy subsystem to capture the complete association frame
in addition to the existing probe and association IE data.

This adds a new assoc_frame_taxonomy field to struct sta_info and exposes
it via the get_sta_ies ubus method as a base64-encoded "assoc_frame" field.

Signed-off-by: John Crispin <john@phrozen.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-01-26 17:46:16 +00:00
John Crispin
c1492838f7 hostapd: add reporting detail support to RRM beacon request
Extend the hostapd_rrm_beacon_req ubus method to support the optional
reporting_detail parameter as defined in IEEE 802.11-2016 section 9.4.2.21.7.

Also fix missing assignment operators (=) in the beacon_req_policy array
initialisation.

Signed-off-by: John Crispin <john@phrozen.org>
2026-01-26 17:46:16 +00:00
Felix Fietkau
6fb3e95baa hostapd: fix beacon_req_policy syntax issues
Use the correct syntax for array element assignment

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-01-26 17:46:16 +00:00
Rany Hany
7f05a9af9a hostapd: allow ubus ban client address to be a broadcast address
This will allow del_client with ban_time on a broadcast address
to also ban all clients temporarily.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/18670
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-08 17:26:07 +01:00
Rany Hany
5d7107ef63 hostapd: add ubus support to disasoc/deauth all wireless STAs
Similar to the hostapd control interface, treat ff:ff:ff:ff:ff:ff
as a stand in for "all clients".

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/18670
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-12-08 17:26:07 +01:00
Felix Fietkau
6bb30afe2f wpa_supplicant: pass control events on the per-interface ubus object
Events are passed in the same format as they would be sent on the control
socket.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-06 11:23:03 +00:00
Felix Fietkau
0d189171e1 wpa_supplicant: move per-interface ubus object to ucode
Remove previous implementation

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-31 21:22:35 +01:00
Felix Fietkau
7b2c9f6799 hostapd: skip dynamic reconfiguration while not in enabled state
Interface might be down or scanning. Better do a full restart in order to avoid
messing up the runtime state.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-05 10:49:58 +02:00
Felix Fietkau
f6fd18eb60 wpa_supplicant: include multi-ap status in interface state
This can be used to read the Multi-AP profile and default VLAN ID

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-01 10:08:54 +02:00
Felix Fietkau
80d73707b0 hostapd: fix an AP+STA corner case on MLO APs
Bring up AP interfaces, even if no frequency update was provided.
Fixes bringup when a MLO STA on the same radios connects to fewer links
than available, or to a non-MLD AP.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-29 12:37:02 +02:00
Felix Fietkau
9aca8a97d7 wpa_supplicant: add MLO client support
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
Can also be used for a client mode interface that is able to connect on
multiple bands individually, while handling hostapd state for the correct
band.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:59 +02:00
Felix Fietkau
5170a2448c wpa_supplicant: initialize interface list on startup
Avoid errors on deref if adding an interface fails

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Felix Fietkau
a2c361c520 hostapd: add missing MLO check on ucode bss stop
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
Fixes a crash on some config reload types

Fixes: 816c2d86e7 ("hostapd: add support for MLO interfaces in ucode")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-03 06:50:42 +02:00
Felix Fietkau
3786d15561 hostapd: fix bss config reload while in DFS state
Only start a BSS after a config change if it was started before.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-02 16:46:59 +02:00
Felix Fietkau
816c2d86e7 hostapd: add support for MLO interfaces in ucode
MLO interface config is provided in a separate ubus call before
adding regular per-phy interfaces.
Preparation for full MLO support.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-02 16:46:59 +02:00
Felix Fietkau
be2916b1d4 hostapd: remove unnecessary ucv_gc calls
They should not be needed, since the code doesn't use circular references

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-02 16:46:59 +02:00
Felix Fietkau
bcd3d62834 hostapd: maintain ucode hostapd.bss list per interface
Preparation for MLO support

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-02 16:46:59 +02:00
Felix Fietkau
6e1d4afa86 hostapd: fix potential double free in ubus code
Ensure that the object name is never freed twice

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-07-05 14:41:00 +02:00
Felix Fietkau
9850052190 hostapd: fix generating own neighbor report for dynamically added/changed interfaces
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
hostapd_neighbor_set_own_report is normally called from interface setup only.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-20 14:57:35 +02:00
Felix Fietkau
3ebf110711 hostapd: fix dealing with mac address changes for the primary BSS
Ensure that hapd->own_addr is set properly, since hostapd_setup_bss
only handles it for secondary BSS interfaces

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-20 14:57:35 +02:00
Mieczyslaw Nalewaj
a238170e57 treewide: strip trailing whitespace
Some checks failed
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Waiting to run
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Strip trailing whitespace in all code:
find . -type f | grep "\.c$" | xargs sed -i 's/[ \t]\+$//'
find . -type f | grep "\.h$" | xargs sed -i 's/[ \t]\+$//'
find . -type f | grep "\.dts$" | xargs sed -i 's/[ \t]\+$//'
find . -type f | grep "\.dtsi$" | xargs sed -i 's/[ \t]\+$//'

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/18626
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-20 00:47:37 +02:00
Dávid Benko
939628f6b8 hostapd/RADIUS_server: enhance logging
Currently, logging level of the RADIUS server is a constant corresponding
to the highest verbosity (EXCESSIVE, ALL), but when running as a system
service, the output is discarded.

This commit makes logging verbosity configurable by `log_level` option
and redirects all logs to `logd`. Possible levels are defined in hostap
sources:
https://w1.fi/cgit/hostap/tree/src/utils/wpa_debug.h?id=012a893c469157d5734f6f33953497ea6e3b0169#n23
Their reference is inlined in `radius.config` file.

Default value for logging verbosity is INFO (even if the `-l` flag isn't
specified).

Signed-off-by: Dávid Benko <davidbenko@davidbenko.dev>
Link: https://github.com/openwrt/openwrt/pull/18089
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-03-12 13:12:12 +01:00
Felix Fietkau
46c17c22cd hostapd: add missing #ifdef to fix compile error when 802.11be support is disabled
Fixes: d65d546bce ("hostapd: add missing ctrl socket initialization on bss add")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-03-05 09:19:37 +01:00
Felix Fietkau
d65d546bce hostapd: add missing ctrl socket initialization on bss add
Fixes adding/removing individual bss interfaces

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-03-05 08:03:00 +01:00
Matthew Cather
6a10da2934 hostapd: get reference to object before removal
`ucv_array_set` releases the array's reference to the object being cleared.
If this is the last reference to the object, it will be freed, making our
pointer `val` invalid.

To avoid this, we need to obtain our own reference to the object so we
can safely return `val`.

Signed-off-by: Matthew Cather <mattbob4@gmail.com>
2025-03-05 08:03:00 +01:00
Matthew Cather
7729f96093 hostapd: consistent reference counting for registry
Since `wpa_ucode_registry_add` collects its own reference to the values added, the
two functions `hostapd_ucode_bss_get_uval` and `hostapd_ucode_iface_get_uval` would
sometimes return a referenced object (from `uc_resource_new`) and sometimes return
an unreferenced object (from `wpa_ucode_registry_get`). Now, both functions always
return a referenced object.

This change also indirectly fixes `hostapd_ucode_bss_get_uval`, ensuring it now
always returns a referenced object.

Signed-off-by: Matthew Cather <mattbob4@gmail.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-03-05 08:03:00 +01:00
Matthew Cather
22eaf18647 hostapd: clean-up references to local variables
Remove extra ucv_get calls when passing a referenced value to an object
without using it further.

Signed-off-by: Matthew Cather <mattbob4@gmail.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-03-05 08:03:00 +01:00
Matthew Cather
f79968ee0f hostapd: fix ucode memory leak with strings
This fixes a common reference counting bug typically along the lines of:
```
uc_value_push(ucv_get(ucv_string_new(...)));
```
This would leave our new string with a reference count of 2, one from
the construction of the string, the other from `ucv_get`. This would
prevent the strings from being correctly cleaned up when it goes out
of scope.

Signed-off-by: Matthew Cather <mattbob4@gmail.com>
2025-03-05 08:03:00 +01:00
Felix Fietkau
225b84d583 hostapd: fix building mini variants
Move function and add ifdef to avoid undefined reference to hmac_sha256_kdf.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-12-13 11:04:48 +01:00
Sybil127
7306ae401c hostapd: add support for rxkh_file
Initial support for dynamic reload of RxKHs.

In order to check if RxKHs need reloading.
RxKHs defined in the rxkh_file first has to be parsed and formated,
the same way as hostapd will read from the file and also output,
with the command GET_RXKHS.
Then each list of RxKHs can be hashed and compared.

Ucode implementation of hostapds rkh_derive_key() function.
Hostapd converts hex keys with 128-bits or more when less than 256-bits
to 256-bits, and truncates those that are more than 256-bits.
See: https://w1.fi/cgit/hostap/commit/hostapd/config_file.c?id=245fc96e5f4b1c566b7eaa19180c774307ebed79

Signed-off-by: Sybil127 <sybil127@outlook.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-12-12 19:19:33 +01:00
John Crispin
6365316fab hostapd: add ubus support for wired driver
Use and alternate ubus object when the config contains "driver=wired". This
commit is in preparation of the ieee8021x-wired daemon.

Signed-off-by: John Crispin <john@phrozen.org>
2024-12-02 13:55:36 +01:00
John Crispin
461d9dca89 hostapd: add radius WISPr rate control AVPs
This allows a radius server to send AVPs for client rate control inside the
accept message. Further add the ratelimits to the sta-authorized ubus
notification.

Signed-off-by: John Crispin <john@phrozen.org>
2024-12-02 13:55:36 +01:00
Felix Fietkau
b2a2c28617 hostapd: add support for authenticating with multiple PSKs via ubus helper
Also supports assigning a VLAN ID based on the PSK

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-10-22 14:40:42 +02:00
Felix Fietkau
ed484caa03 hostapd: add support for querying bss config parameters via ubus
Supports reading the same parameters currently being used by iwinfo.
Preparation for replacing iwinfo with a rewrite in ucode.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-10-22 13:09:26 +02:00
John Crispin
3ed5f6430b hostapd: send a notification via ubus when CSA completed
Signed-off-by: John Crispin <john@phrozen.org>
2024-10-02 15:19:42 +02:00
John Crispin
dd62f7659b hostapd: add ifname to generic ubus notify code
Signed-off-by: John Crispin <john@phrozen.org>
2024-10-02 15:19:34 +02:00
John Crispin
711885ad68 hostapd: add ifname and vlan_id to sta-authorized notifications
Signed-off-by: John Crispin <john@phrozen.org>
2024-10-02 15:19:27 +02:00
John Crispin
dc48732ea7 hostapd: add the ifname to ubus events
Signed-off-by: John Crispin <john@phrozen.org>
2024-10-02 15:19:21 +02:00
Janusz Dziedzic
b1d6068330 hostapd: add CONFIG_DRIVER_11BE_SUPPORT
Add option to enable 802.11BE support.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
2024-10-02 15:12:18 +02:00
Jianhui Zhao
b4dfa3b33c hostapd: fix UPDATE_VAL fail in uc_hostapd_iface_start
If the `intval` obtained from `info` is indeed 0, it cannot be set to `conf`.

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/15495
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2024-09-22 23:36:46 +02:00
Felix Fietkau
df1011e0b7 hostapd: fix OWE ssid update on configuration changes
Refresh OWE transition IEs on updating BSS interfaces

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-09-21 20:37:41 +02:00
Felix Fietkau
1a288670d9 hostapd: fold extra APuP patches into main patch + src/
Simplifies maintenance

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-09-21 18:33:52 +02:00
Felix Fietkau
127078567b hostapd: improve ucode bss notifications
Reduce code duplication, add extra callback for bss create

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-09-21 18:32:26 +02:00
Ivan Pavlov
da11a1e20c hostapd: update to version 2024-09-15
Remove upstreamed from 2.11 release:
  060-nl80211-fix-crash-when-adding-an-interface-fails.patch

Rebase all other patches

Signed-off-by: Ivan Pavlov <AuthorReflex@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16338
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-09-16 10:32:43 +02:00
Felix Fietkau
032d3fcf7a hostapd: use strdup on string passed to hostapd_add_iface
The data is modified within hostapd_add_iface

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-06-21 11:52:25 +02:00