Commit graph

354 commits

Author SHA1 Message Date
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
017b26f2e7 hostapd: add status ubus method
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
Add a status method to both hostapd and wpa_supplicant ubus objects
that lists all configured interfaces with their wiphy, MAC address,
and running/pending state. For MLO interfaces, links are grouped
under a single entry with per-link status.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-02-02 19:49:02 +01:00
Felix Fietkau
e81936f5bc hostapd: fix phy parameter in iface_update_supplicant_macaddr
The function was using phydev.name (e.g., "phy0.0") instead of
phydev.phy (e.g., "phy0") when calling wpa_supplicant.phy_set_macaddr_list.
This is inconsistent with all other wpa_supplicant ubus calls in the same
file which correctly use phydev.phy.

Reported-by: Michael-cy Lee (李峻宇) <Michael-cy.Lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-13 12:02:55 +00:00
Felix Fietkau
2fb3cbda58 wpa_supplicant: fix MAC address assignment for MLD interfaces
Assign the address at wdev create time, similar to legacy interfaces.

Reported-by: Michael-cy Lee (李峻宇) <Michael-cy.Lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-11-13 11:56:39 +00: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
e373a32a7c wpa_supplicant: use a timer to defer starting interfaces
Some checks failed
Build all core packages / Build all core packages for selected target (push) Has been cancelled
This allows wpa_supplicant to process pending netlink socket messages
first. Without this change, there is a race condition where the newly
created interface processes netlink events from the removal of the
previous interface.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-31 21:22:35 +01:00
Felix Fietkau
3ab2f32006 wpa_supplicant: add support for issuing control socket commands via ubus
This makes it possible to have more flexible control over the supplicant
without having to install wpa_cli.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-31 21:22:35 +01: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
d32e051b69 wpa_supplicant: report interface events and support querying interface status
Makes information like Multi-AP status (including VLAN ID) accessible

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-01 10:08:54 +02:00
Felix Fietkau
5e7113b3db wpa_supplicant: do not wait for notify completion
There is no callback, so no use tracking the request status.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-10-01 10:08:54 +02:00
Felix Fietkau
1a79345b5d hostapd: skip add call on already present MLD interfaces
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
Avoid tearing down running interfaces

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-30 16:44:20 +02:00
Felix Fietkau
0f56141c6c hostapd: add new ubus method for performig channel switch
This is a replacement for the bss based function, which cannot be used for MLO.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-29 13:41:06 +02:00
Felix Fietkau
973cfbadf5 hostapd: fix condition for re-creating MLD interfaces
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
Check the correct interface in order to avoid tearing down an existing
itnerface.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-29 12:37:02 +02:00
Felix Fietkau
e0a0d69a63 wpa_supplicant: MLO bringup order
Do not allow hostapd phy state update to bring up links as long between mld_set
and mld_start calls. Configuration on other PHYs could still be pending.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-29 12:37:02 +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
84ea336097 wpa_supplicant: fix ap+sta regression for non-MLD interfaces
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
Fix a copy&paste issue.

Reported-by: Chad Monroe <chad.monroe@adtran.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-26 09:30:21 +02:00
Felix Fietkau
adb1ce158a hostapd: fix setting up MLD AP interfaces after config change
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
Removing the last remaining link from an MLD AP interface removes the
interface as well. Re-create the interface if necessary on config changes.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-25 12:08:52 +02:00
Felix Fietkau
8c37f5f2f2 wpa_supplicant: fix getting phy status and setting state for MLD
Fixes some AP+STA related issues

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-25 12:08:52 +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
6834c19e41 hostapd: add wpa_supplicant ubus function guard exception handler
Improves logging when something goes wrong

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Felix Fietkau
7aa6ea9cc1 hostapd: ubus: replace ex_wrap exception handler function with global guard
Simplifies the code

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-09-24 13:45:40 +02:00
Felix Fietkau
5bdb7a5990 wifi-scripts: fix reload handling with random macaddr
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
Allow initially generated MAC address to be preserved across reload

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-26 11:53:50 +02:00
Felix Fietkau
3aee42001f wifi-scripts: add modular wps button handler scripts
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
Execute scripts in /etc/rc.wps until one of them returns a exit code of 0.
Split up sta and ap handling of wps into separate scripts.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-08 18:53:30 +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
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
db763342af hostapd: ignore comment lines for hash comparison
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
Fixes spurious unnecessary bss restarts

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-07-09 12:14:30 +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
Dávid Benko
dbdd84725d hostapd/RADIUS_server: add config option for IPv6
Even though IPv6 support for hostapd RADIUS server is implemented
(flag `-6`), it's not possible to enable it from configuration.

This commit adds this option and adapts init script.

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
Florian Maurer
31e45f62ca hostapd: fix call to hostapd reload
access to undeclared variable radio In [anonymous function](), file /usr/share/hostap/hostapd.uc, line 830, byte 45:

Signed-off-by: Florian Maurer <f.maurer@outlook.de>
2024-12-19 09:01:46 +01:00
Felix Fietkau
8943430b9f hostapd: fix passing radio parameter in wpa_supplicant calls
Fixes accessing PHY status in AP+STA configurations

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-12-19 06:44: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
Felix Fietkau
00860e485b wifi-scripts: add macaddr_base wifi-device option
This can be used to configure the base mac address from which all
interface mac addresses are derived

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-12-12 19:19:05 +01:00
Rany Hany
65a1c666f2 hostapd: add SAE support for wifi-station and optimize PSK file creation
Regarding SAE support in wifi-station:

Important Note: Unlike PSK wifi-stations, both `mac` and `key` options are required
to make it work. With PSK, hostapd used to perform a brute-force match to find which
PSK entry to use, but with SAE this is infeasible due to SAE's design.

When `mac` is omitted, it will allow any MAC address to use the SAE password if it
didn't have a MAC address assigned to it, but this could only be done once.
The last wildcard entry would be used.

Also, unlike "hostapd: add support for SAE in PPSK option" (commit 913368a),
it is not required to set `sae_pwe` to `0`. This gives it a slight advantage
over using PPSK that goes beyond not needing RADIUS.

Example Configuration:

```
config wifi-vlan
        option iface default_radio0
        option name 999
        option vid 999
        option network management

config wifi-station
        # Allow user with MAC address 00:11:22:33:44:55 and matching
        # key "secretadminpass" to access the management network.
        option iface default_radio0
        option vid 999
        option mac '00:11:22:33:44:55'
        option key secretadminpass

config wifi-vlan
        option iface default_radio0
        option name 100
        option vid 100
        option network guest

config wifi-station
        # With SAE, when 'mac' is omitted it will be the fallback in case no
        # other MAC address matches. It won't be possible for a user that
        # has a matching MAC to use this network (i.e., 00:11:22:33:44:55
        # in this example).
        option iface default_radio0
        option vid 100
        option key guestpass
```

Regarding PSK file creation optimization:

This patch now conditionally runs `hostapd_set_psk_file` depending on `auth_type`.
Previously, `hostapd_set_psk` would always execute `hostapd_set_psk_file`, which
would create a new file if `wifi-station` was in use even if PSK was not enabled.
This change checks the `auth_type` to ensure that it is appropriate to parse the
`wifi-station` entries and create those files.

Furthermore, we now only configure `wpa_psk_file` when it is a supported option
(i.e., psk or psk-sae is used). Previously, we used to configure it when it was
not necessary. While it didn't cause any issues, it would litter `/var/run` with
unnecessary files. This patch fixes that case by configuring it depending on the
`auth_type`.

The new SAE support is aligned with these PSK file changes.

Signed-off-by: Rany Hany <rany_hany@riseup.net>

Link: https://github.com/openwrt/openwrt/pull/17145
Signed-off-by: John Crispin <john@phrozen.org>
2024-12-12 09:46:38 +01:00
Felix Fietkau
59dd9cddf9 hostapd: fix processing mbssid config option
Do not strip the first character from the field name

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-12-09 20:10:43 +01:00
Robert Marko
d92d14c64c hostapd: enable EAP-pwd support only for the SSL variants
The internal hostapd version cannot be built with EAP-pwd support, so
enable it only for the SSL variants.

Fixes: #17163
Fixes: 6365316fab ("hostapd: add ubus support for wired driver")
Link: https://github.com/openwrt/openwrt/pull/17164
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-12-04 17:20:44 +01:00
John Crispin
304fd40592 hostapd: expose owe_transition_ifname inside bss_info method
This allows iwinfo to match OWE interfaces.

Signed-off-by: John Crispin <john@phrozen.org>
2024-12-02 13:55:36 +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
90d0065f51 hostapd: enable CONFIG_EAP_PSK
Without this option using the eap_server in combination with wifi-station
entries will fail.

Signed-off-by: John Crispin <john@phrozen.org>
2024-12-02 13:55:36 +01:00
Felix Fietkau
04fb05914e wifi-scripts: add multi-radio config support
Emit one wifi-device section per wiphy radio

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-10-22 14:40:43 +02: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
Felix Fietkau
12c1a56ec0 hostapd: reload bss if a relevant ifindex changes
This can happen if the bridge or a stacked vlan device gets recreated.
Ensure that hostapd sees the change and handles it gracefully.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-10-06 20:09:19 +02:00
Felix Fietkau
81a48e7d1a wpa_supplicant: fix num_global_macaddr handling
Pass num_global_macaddr via ubus in the top level config_set call

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-09-21 20:33:45 +02:00
Felix Fietkau
b4e7682c54 hostapd: fix num_global_macaddr and mbssid config handling
Store the config values in the correct field and apply them on restart too

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-09-21 20:14:51 +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
Felix Fietkau
a3d1583317 Revert "hostapd: add support for authenticating with multiple PSKs via ubus helper"
This reverts commit c67d5189a4.
Revert until reported issues have been resolved

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-06-06 21:34:20 +02:00
Felix Fietkau
c67d5189a4 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-06-06 11:47:59 +02:00
Felix Fietkau
2716853132 wifi-scripts: add new package, move wifi scripts to a single place
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2024-02-03 16:16:36 +01:00