Reviewed-on: #36 Co-authored-by: Koda YeenBean <n122330@gmail.com>
This commit was merged in pull request #36.
This commit is contained in:
@@ -7,13 +7,13 @@ Daemon that makes an OpenWrt router appear as a UniFi AP to UniFi Network contro
|
||||
| Feature | Description | Implementation |
|
||||
| --- | --- | --- |
|
||||
| **L2 Discovery** | UDP broadcast + multicast every 10s | `announce.c` → port 10001 |
|
||||
| **Adoption** | AES-128-CBC handshake with the controller | `inform.c` → `handle_response()` |
|
||||
| **Remote reboot** | Reboots OpenWrt when requested by the controller | `inform.c` → `handle_response()` |
|
||||
| **Firmware spoofing** | Persists and reports the target version requested by an upgrade | `inform.c` → `handle_response()` |
|
||||
| **WiFi Config** | Creates WiFi networks from the controller via UCI | `wlan.c` → `wlan_apply_config()` |
|
||||
| **Band Steering** | 802.11k/v Neighbor Reports + BSS Transition | `wlan.c` → `apply_vap()` |
|
||||
| **Fast Roaming** | 802.11r FT with mobility_domain derived from MAC | `wlan.c` → `apply_vap()` |
|
||||
| **WPA3 / PMF** | SAE, SAE-mixed, 802.11w 0/1/2 | `wlan.c` → `sec_to_uci()` |
|
||||
| **Adoption** | AES-128-CBC/GCM handshake with the controller | `inform/response.c` → `inform_handle_response()` |
|
||||
| **Remote reboot** | Reboots OpenWrt when requested by the controller | `inform/response.c` → `inform_handle_response()` |
|
||||
| **Firmware spoofing** | Persists and reports the target version requested by an upgrade | `inform/response.c` → `inform_handle_response()` |
|
||||
| **WiFi Config** | Creates WiFi networks from the controller via UCI | `wlan/provision.c` → `wlan_apply_config()` |
|
||||
| **Band Steering** | 802.11k/v Neighbor Reports + BSS Transition | `wlan/provision.c` and `wlan/uci.c` |
|
||||
| **Fast Roaming** | 802.11r FT with a stable SSID mobility domain | `wlan/provision.c` → `apply_vap()` |
|
||||
| **WPA3 / PMF** | SAE, SAE-mixed, 802.11w 0/1/2 | `wlan/common.c` and `wlan/provision.c` |
|
||||
| **WiFi Clients** | MAC, signal, bitrate, bytes per VAP | `clients.c` → `iw station dump` |
|
||||
| **Wired Clients** | MACs from bridge FDB | `clients.c` → `bridge fdb` |
|
||||
| **CPU / RAM** | Real-time usage | `sysinfo.c` → `/proc/stat` + `/proc/meminfo` |
|
||||
@@ -46,6 +46,28 @@ make -f Makefile.standalone
|
||||
Contributors and AI agents should read [`AGENTS.md`](AGENTS.md) for the concise
|
||||
architecture map, invariants, and validation checklist.
|
||||
|
||||
## Developer documentation and Gitea Wiki
|
||||
|
||||
The publish-ready Gitea Wiki pages live in [`wiki/`](wiki/). They include a
|
||||
developer guide, a generated Mermaid function-call graph, and runtime flow
|
||||
charts. Refresh them after source or architecture changes:
|
||||
|
||||
```shell
|
||||
./scripts/docs/generate-wiki.py
|
||||
```
|
||||
|
||||
Use the same tool as a linter to reject stale pages, oversized C modules,
|
||||
missing documented entry points, or known non-English comment fragments:
|
||||
|
||||
```shell
|
||||
./scripts/docs/generate-wiki.py --check
|
||||
```
|
||||
|
||||
Because Gitea stores Wiki pages in a separate Git repository, publishing is an
|
||||
explicit authenticated step: `./scripts/docs/publish-wiki.sh`. The script
|
||||
derives the `.wiki.git` URL from `origin` and accepts an explicit URL override.
|
||||
No credentials are stored in this repository.
|
||||
|
||||
## Automated releases
|
||||
|
||||
Every push to `main` runs `.gitea/workflows/release.yaml`. It builds with pinned
|
||||
@@ -106,7 +128,7 @@ On the access point, run the following to install the package:
|
||||
apk del wpad-basic-mbedtls && apk add wpad-mbedtls && /etc/init.d/network restart
|
||||
|
||||
# Remove old installation
|
||||
apk -r del openuf
|
||||
apk -r del openuf
|
||||
|
||||
# Install new version
|
||||
apk add openuf-0.4.0-r3.apk --allow-untrusted
|
||||
@@ -146,7 +168,7 @@ version in `state.json` and reports it in subsequent inform packets.
|
||||
|
||||
## Glossary
|
||||
|
||||
### TNBU
|
||||
### TNBU
|
||||
|
||||
TNBU is the magic string/identifier at the start of the binary packet format used in this custom Inform protocol implementation.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user