CI test: prplmesh-stock rework (final head) - #3
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 436095feac
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| interfaces="$(uci -q get prplmesh.config.mandatory_interfaces)" | ||
| [ -n "$interfaces" ] || return 1 |
There was a problem hiding this comment.
Allow controller-only startup without radio sockets
When management_mode is configured for a standalone controller, requiring a nonempty mandatory_interfaces list prevents the service from starting on a device without local radios; the subsequent socket checks have the same effect. This contradicts the controller-side support added in 100-stock-platform.patch for running without a local agent, so the preflight and process registration should depend on the selected management mode.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in 4f2f078: the init is now management-mode aware — Multi-AP-Controller starts transport+controller without any interface or socket requirements, Multi-AP-Agent skips the controller, everything else keeps both.
| IFS=, | ||
| for interface in $interfaces; do | ||
| [ -n "$interface" ] || continue | ||
| [ -S "/var/run/hostapd/$interface" ] || { |
There was a problem hiding this comment.
Retry startup while hostapd sockets are unavailable
On boot or a wireless reload where hostapd has not finished recreating its sockets, this check makes start_service return before registering any procd instances. Because there is then no process for the configured respawn policy to monitor and no runtime interface-up trigger, an enabled service can remain stopped indefinitely after this transient race; startup should wait/retry or register a supervised process that waits for hostapd.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in 4f2f078: the socket check moved out of the fail-the-start path — the agent instance is registered as a procd-supervised wrapper that waits for the hostapd control sockets of all mandatory interfaces and then execs beerocks_agent, so boot races and wireless reloads self-heal.
| + if (configuration.ssid.empty() || configuration.operating_class.empty() || | ||
| + configuration.authentication_type == WSC::eWscAuth::WSC_AUTH_INVALID || | ||
| + configuration.encryption_type == WSC::eWscEncr::WSC_ENCR_INVALID) { |
There was a problem hiding this comment.
Reject secured BSS profiles without a key
For an explicit profile using psk2, sae, or sae-mixed, omitting or emptying option key still passes this validation because only the SSID, band, and enum mappings are checked. The resulting secured profile has an empty network_key and cannot be provisioned as valid WPA2/SAE credentials, so validation should require an appropriately valid key whenever authentication is not open.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in 4f2f078 (patch 110): profiles whose authentication is not open are now rejected unless the key is 8..64 characters, matching hostapd's passphrase/PSK bounds.
Add the prplMesh 6.0.1 EasyMesh controller and agent for stock OpenWrt. The package keeps the installed hostapd/wpad stack and drives it over the existing UCI, ubus, nl80211 and hostapd control sockets. The hostapd control interface client is a small self-contained implementation added by patch 120, so no hostapd source tree is downloaded, bundled or duplicated at build time and the system hostapd stays the only hostapd. Binaries, helper scripts and static data install under /usr/libexec/prplmesh, shared libraries under /usr/lib, configuration under /etc/config/prplmesh. An earlier revision of this integration, differing only in the wpa_ctrl client origin and the install prefix, runs on OpenWrt 25.12.5 mediatek/mt7622 with two Ethernet-connected EasyMesh agents. Signed-off-by: Andrei Ovcharenko <a@krot.name>
e7847e4 to
16d3d3f
Compare
Fork-internal multi-arch run of openwrt#30071 head 436095f (Makefile review fixes); the extra commit only strips the upstream-only FormalityCheck wait. Will be closed after CI.