Skip to content

feat(agent): lldpd physical-port binding at install + bridge-only hint - #1392

Merged
gnacho merged 1 commit into
mainfrom
feat/1369-lldpd-physical-ports
Oct 13, 2026
Merged

gnacho merged 1 commit into
mainfrom
feat/1369-lldpd-physical-ports

Conversation

@gnacho

@gnacho gnacho commented Oct 13, 2026

Copy link
Copy Markdown
Owner

Problem (#1369)

On OpenWrt (verified on qualcommax/ipq807x with nss-dp; DSA likely affected too), an lldpd bound to the bridge - the stock br-lan config after opkg install lldpd - reports zero neighbors forever: LLDP frames never reach a listener on the bridge master, and topology silently falls back to FDB inference with no warning anywhere.

Changes

  • install-agent.sh: when lldpd is already installed, ensure it listens on physical ports (lan*,wan via UCI) and restart it. Idempotent: a binding that already includes physical ports is left untouched. The script never installs lldpd itself - installing packages stays the admin's call.
  • Agent probe: on an honest zero-neighbor round with a bridge-only UCI binding, the payload carries lldp.hint="lldpd-bridge-only". UCI is only queried on empty rounds, so no extra fork when neighbors exist. New LldpdBridgeOnly parser with 9 table tests.
  • Server: propagates it as router.lldpHint (recycled with the cache like the neighbors).
  • UI: RouterDetail shows a warning banner with the exact fix command (i18n es/en).
  • Docs: binding requirement next to the agent LLDP section in AGENTE-OPENWRT.md.

Verification

  • Agent suite OK (incl. new table test); server suites adapters/httpapi/agentbin OK; vite build OK; eslint/tsc 0.
  • Installer detection path verified read-only against the real fleet: rt3/rt4 already bind lan*,wan, so the new block would report "already physical" and touch nothing.
  • Live preview E2E (Playwright, API interception injecting the hint): banner renders on the router page in Spanish with the fix command; no banner on units without the hint (negative control). EN/ES locale keys validated.

Closes #1369

#1369)

On OpenWrt (verified qualcommax/ipq807x nss-dp; DSA likely affected too)
an lldpd bound to the bridge (the stock br-lan config) reports zero
neighbors forever: LLDP frames never reach a listener on the bridge
master, and topology silently falls back to FDB inference.

- install-agent.sh: when lldpd is already installed, ensure it listens on
  physical ports (lan*,wan via UCI) and restart it. Idempotent: a binding
  with physical ports is left untouched; lldpd itself is never installed
  by the script (installing packages stays the admin's call).
- Agent probe: with an honest zero-neighbor round plus a bridge-only UCI
  binding, the payload carries lldp.hint=lldpd-bridge-only. UCI is only
  queried on empty rounds (no extra fork when neighbors exist).
- Server propagates it as router.lldpHint; RouterDetail shows a warning
  banner with the exact fix (i18n es/en).
- Docs: binding requirement next to the agent LLDP section.

Closes #1369
@gnacho
gnacho merged commit 53b001b into main Oct 13, 2026
2 checks passed
@gnacho
gnacho deleted the feat/1369-lldpd-physical-ports branch October 13, 2026 18:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OpenWrt: agent should configure lldpd to listen on physical ports (bridge binding silently yields zero LLDP neighbors)

1 participant