mirror of
https://github.com/openwrt/packages.git
synced 2026-10-12 18:57:35 +04:00
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 install under /usr/libexec/prplmesh, read-only data under /usr/share/prplmesh, shared libraries under /usr/lib, configuration under /etc/config/prplmesh. Of the prplOS helper scripts only prplmesh_utils.sh is installed: patch 161 teaches its platform guard stock OpenWrt and the init's daily log roller invokes it; the other helpers stay uninstalled. Its option parsing needs util-linux getopt (the busybox applet is off by default), hence the getopt dependency. At build time prplMesh generates its IEEE 1905 / EasyMesh TLV classes from YAML definitions with its own Python generator, hence the host Python and PyYAML build dependencies. Stock builds run without NBAPI, so the controller skips the CurrentOperatingClassProfile data-model cleanup for radios without a data model path, and legacy vendor diagnostic measurements default to off while standard EasyMesh metrics stay enabled. The controller also registers radios that appear only in Topology Responses: some stock agents never run WSC onboarding for a band (Wi-Fi 7 units and their 6 GHz radio), and such radios, their BSSes and their clients stayed invisible otherwise. Agents in turn import clients that are already associated when the agent starts: patch 150 walks hostapd's STA-FIRST/STA-NEXT list on the nl80211 AP and monitor HALs and reconciles the result every 60 seconds, so stations that associated while the agent was down appear without waiting for a reassociation, and stale entries are disconnected only after a cleanly enumerated sweep. The init preflights every binary the selected management mode needs before registering any procd instance, and the example credentials ship empty so an enabled but unconfigured service fails validation loudly instead of deploying a published passphrase. A test-version.sh verifies the installed version from the shipped version file instead of probing daemons, and a test.sh checks the shipped log levels and the roll-helper install. Production log levels default to error, info, warning and fatal for file and syslog output of both daemons. Log retention is enforced by the upstream roll helper (its platform guard now accepts openwrt): the init prunes previous-boot logs once per boot before the daemons come up (a /var/run stamp keeps procd reload triggers, which re-enter start_service with the daemons live, from re-rolling their logs) and a procd-supervised roller repeats the roll daily; an image stripped of the helper runs without rotation instead of refusing to start. Link-metrics reporting no longer warns about wireless-capable radios deliberately not used for backhaul. 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. Ref: https://gitlab.com/prpl-foundation/prplmesh/prplMesh Ref: https://gitlab.com/kreout/prpl-mesh-mercusys/-/merge_requests/1 Signed-off-by: Andrei Ovcharenko <a@krot.name>
26 lines
681 B
Bash
26 lines
681 B
Bash
#!/bin/sh
|
|
|
|
# shellcheck shell=busybox
|
|
|
|
set -eu
|
|
|
|
case "$PKG_NAME" in
|
|
prplmesh)
|
|
for config in \
|
|
/usr/share/prplmesh/config/beerocks_agent.conf \
|
|
/usr/share/prplmesh/config/beerocks_controller.conf; do
|
|
grep -Fx 'log_global_levels=error,info,warning,fatal' "$config"
|
|
grep -Fx 'log_global_syslog_levels=error,info,warning,fatal' "$config"
|
|
done
|
|
# -h reaches "usage; exit 0" only after main()'s platform guard has
|
|
# accepted TARGET_PLATFORM=openwrt; an unpatched helper exits 1 with
|
|
# "Unsupported platform: openwrt" instead, so this self-tests patch
|
|
# 161.
|
|
/usr/libexec/prplmesh/scripts/prplmesh_utils.sh -h
|
|
;;
|
|
*)
|
|
echo "Untested package: $PKG_NAME" >&2
|
|
exit 1
|
|
;;
|
|
esac
|