Skip to content

docs: Update LLDP page to VyOS 1.5 standards - #2192

Merged
dmbaturin merged 2 commits into
vyos:rollingfrom
LiudmylaNad:revise-lldp
Aug 14, 2026
Merged

dmbaturin merged 2 commits into
vyos:rollingfrom
LiudmylaNad:revise-lldp

Conversation

@LiudmylaNad

Copy link
Copy Markdown
Contributor

This PR refactors the LLDP page to comply with the current VyOS documentation style guide.

Changes:

  • AI & SEO Context: Added :description: and :keywords: metadata tags.
  • Content: Proofread and improved.
  • Technical accuracy: Verified commands against VyOS 1.5.
  • Added examples for all commands.
  • The style guide checklist was applied.

Added new conf-mode commands:
set service lldp interface location coordinate-based latitude
set service lldp interface location coordinate-based longitude
set service lldp interface location coordinate-based altitude
set service lldp interface location coordinate-based datum <WGS84 | NAD83 | MLLW>
set service lldp interface location elin

Added new op-mode commands:
show lldp neighbors interface detail

Change Summary

Related Task(s)

NOS-3217

Related PR(s)

Backport

Checklist:

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 716e5f99-5458-4d32-ad4a-c650e627d08a

📥 Commits

Reviewing files that changed from the base of the PR and between 1ae6a05 and 66ca646.

📒 Files selected for processing (1)
  • docs/configuration/service/lldp.md
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • ansible/ansible (manual)
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/configuration/service/lldp.md
📜 Recent review details
⏰ Context from checks skipped due to timeout. (3)
  • GitHub Check: validate
  • GitHub Check: Mergify Merge Protections
  • GitHub Check: Summary
🧰 Additional context used
🔍 Remote MCP vyos.dev

Relevant review context

  • NOS-3217 is not found by Phorge search. Numeric T3217 is a different resolved task, “Save FRR configuration on each commit”, unrelated to LLDP. The PR’s task reference should be verified.
  • LLDP detailed-neighbor output was requested in resolved task T6045. It specifically says the remote-port display should use LLDP PortID, not PortDescr; verify the documentation reflects this distinction.
  • LLDP location integration tests were previously considered incompatible because current VyOS no longer supports civic-based locations. Removing civic-based terminology is therefore consistent with existing task context.
  • Task T8587 reports that service lldp interface location coordinate-based elin is defined as u32:0-9999999999; the upper bound exceeds uint32’s maximum and the suggested fix is u64. Ensure the documented ELIN example does not imply unsupported values.
  • Task T7165 added LLDP operation modes including receive-only; its description says receive-only must continue receiving advertisements while disabling transmission. Documentation should describe these current semantics.

📝 Walkthrough

Summary by CodeRabbit

  • Documentation
    • Updated LLDP configuration guidance and protocol descriptions.
    • Added LLDP-MED location and emergency-location command examples.
    • Clarified management-address validation and legacy-protocol transmission behavior.
    • Expanded operational command documentation.
    • Removed outdated terminology and verbose command-output examples.

Walkthrough

Changes

LLDP documentation

Layer / File(s) Summary
Update LLDP configuration and protocol guidance
docs/configuration/service/lldp.md:1-105, docs/configuration/service/lldp.md:190-241
The guide now covers protocol behavior, interface defaults and modes, management-address validation, SNMP prerequisites, and legacy protocol transmission.
Document LLDP-MED location configuration
docs/configuration/service/lldp.md:107-188
The guide documents coordinate-based location fields and ELIN configuration with validation requirements, defaults, and examples.
Document LLDP operational commands
docs/configuration/service/lldp.md:243-270
Verbose neighbor command output examples were replaced with concise descriptions for neighbor listings, detailed queries, interface-scoped queries, and LLDP log inspection.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the LLDP documentation update and its alignment with VyOS 1.5 standards.
Description check ✅ Passed The description directly explains the LLDP documentation refactor, technical updates, new commands, and style-guide alignment.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
✨ Simplify code
  • Create PR with simplified code

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@mergify mergify Bot added the rolling label Aug 7, 2026
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Claude finished @LiudmylaNad's task in 2m 59s —— View job


LLDP Documentation Review

  • Read pass1-findings.json
  • Review changed LLDP documentation
  • Cross-reference with vyos-1x source
  • Post inline comments for confirmed issues
  • Post summary comment

Issues

No confirmed factual errors. All CLI paths, defaults, and constraints in the doc match the vyos-1x source on rolling.

Verified against source:

Doc claim Source Status
mode options disable|rx-tx|tx|rx, default rx-tx service_lldp.xml.in:33-58
datum options WGS84|NAD83|MLLW, default WGS84 service_lldp.xml.in:88-111
altitude default 0 service_lldp.xml.in:70-86
latitude format <number>[NS] service_lldp.xml.in:113-123 regex (\d+)(\.\d+)?[nNsS]
longitude format <number>[EW] service_lldp.xml.in:126-136 regex (\d+)(\.\d+)?[eEwW]
elin 10–25 digits service_lldp.xml.in:141-152 regex [0-9]{10,25}
Both latitude and longitude required service_lldp.py:84-85 raises ConfigError
management-address warns on loopback / unassigned service_lldp.py:70-76
snmp commit fails without SNMP service service_lldp.py:88-90 raises ConfigError
Op-mode show lldp neighbors [detail], interface <if> [detail] op-mode-definitions/lldp.xml.in
show log lldp shows since last boot show-log.xml.in:653 uses journalctl --boot --unit lldpd.service
Legacy protocols cdp|edp|fdp|sonmp, listen + reply-transmit service_lldp.xml.in:158-188, lldpd.j2 (-c/-e/-f/-s flags)

Needs Verification

  • INFO — line 75: "Once LLDP is enabled with set service lldp, it runs on all physical interfaces by default." lldpd's default set of "known interfaces" is broader than just physical — it also includes bridges, bonds and VLANs (see lldpd(8)). Not wrong for a typical router deployment, but worth loosening to "all interfaces by default" if you want to be precise. Low priority.

Stats

Validated 1 MyST file. Skipped 0 RST files awaiting MyST migration. Files reviewed: 1 (docs/configuration/service/lldp.md). Commands checked: 15 (10 conf-mode, 5 op-mode). Branch reviewed: rolling (vyos-1x: rolling).

Nice cleanup — metadata block, standardized cfgcmd/opcmd directives, examples per command, and the new coordinate/ELIN commands all check out against the XML definitions.


— branch: revise-lldp

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/configuration/service/lldp.md`:
- Around line 175-181: Update the ELIN value description for the `set service
lldp interface <interface> location elin <number>` command to match the
implemented `u32` validator range of 0–9999999999, or revise the
validator/schema to support 25 digits before retaining that documentation.
- Around line 231-232: Update the legacy-protocol behavior statement in the LLDP
documentation to describe CDP/EDP/FDP/SONMP as receive-only protocols that VyOS
listens for and uses to store or retrieve discovery data through LLDP/SNMP;
remove the claim that VyOS transmits them.
- Around line 54-58: Update the LLDP scope descriptions in the documentation
around the default behavior and the `all` option to state that all available
interfaces are included, including logical, bridge, bond, and VLAN interfaces.
If this page intentionally targets a version with physical-only behavior,
explicitly document that limitation instead, keeping the default and `all`
descriptions consistent.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: e90dd41a-a20e-4ce8-80fa-73b94b9eebcc

📥 Commits

Reviewing files that changed from the base of the PR and between 3f6c16e and 1ae6a05.

📒 Files selected for processing (1)
  • docs/configuration/service/lldp.md
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • ansible/ansible (manual)
📜 Review details
⏰ Context from checks skipped due to timeout. (3)
  • GitHub Check: validate
  • GitHub Check: Mergify Merge Protections
  • GitHub Check: Summary
🧰 Additional context used
📓 Path-based instructions (2)
docs/**/*.md

📄 CodeRabbit inference engine (AGENTS.md)

docs/**/*.md: Canonical docs pages must be written as MyST Markdown (.md); edit existing pages in .md only and never use the old md- prefix for new pages.
Use {cfgcmd}, {opcmd}, and {cmdincludemd} fenced directives in MyST pages for VyOS command coverage; do not replace them with plain text or bash fences.
Use MyST ATX headings (#, ##, ###, etc.) in canonical pages; the RST heading hierarchy does not apply to .md sources.
In MyST pages, prefer single backticks for inline code; double backticks are reserved for embedded RST contexts.
Use % stop_vyoslinter and % start_vyoslinter comment markers in top-level MyST content to suppress real IPs or other allowed long-line exceptions, and keep them paired.
In MyST pages, write TODO markers as {todo} fenced directives.

Files:

  • docs/configuration/service/lldp.md
docs/{_include/*.txt,**/*.md}

📄 CodeRabbit inference engine (AGENTS.md)

Keep documentation lines within 80 characters unless the content is inside a code block or fenced/preformatted block.

Files:

  • docs/configuration/service/lldp.md
🧠 Learnings (13)
📚 Learning: 2026-05-06T20:48:49.689Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:71-71
Timestamp: 2026-05-06T20:48:49.689Z
Learning: In vyos/vyos-documentation, the 80-character line-length rule documented under Source conventions / Formatting applies only to documentation source files located under docs/ (e.g., docs/**/*.rst and docs/**/*.md). The rule is enforced by the vyoslinter (doc-linter.py from vyos/.github) when reviewing changed files via lint-doc.yml, and only for files within docs/**. Do not suggest hard-wrapping CLAUDE.md (repo-root documentation) because GitHub renders and reflows content. For CLAUDE.md, reviews should not enforce the 80-char wrapping; apply the rule only to files matching **/docs/**/*.{rst,md}.

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-05-06T20:48:57.970Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:91-93
Timestamp: 2026-05-06T20:48:57.970Z
Learning: The 80-character line limit applies only to documentation sources under docs/** (RST/MD). Do not enforce this limit on repo-root Markdown files like CLAUDE.md or README.md. The vyoslinter (doc-linter.py, run via lint-doc.yml from vyos/.github) lints only changed files within docs/**; root files are excluded. GitHub renders root Markdown with viewport-width reflow, so hard-wrapping these files reduces readability without tooling benefit.

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-05-06T20:48:50.446Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:64-64
Timestamp: 2026-05-06T20:48:50.446Z
Learning: Enforce the 80-character line-length limit only for documentation source files under docs/ (docs/**/*.md and docs/**/*.rst rendered by Sphinx and linted by vyoslinter via lint-doc.yml). Do not flag line-length issues in repository-root Markdown files such as CLAUDE.md or README.md, which GitHub renders with viewport-width reflow. This applies to all files within docs/ that are part of the documentation source.

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-05-06T20:48:54.578Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:80-84
Timestamp: 2026-05-06T20:48:54.578Z
Learning: Enforce the 80-character line-length limit only for documentation source files under docs/ (docs/**/*.rst and docs/**/*.md). Do not flag repo-root files like CLAUDE.md or README.md, since they are rendered by GitHub and not subject to this rule. The doc-linter (doc-linter.py via lint-doc.yml) only lints docs/**, so CI checks won't flag root files for line length.

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-05-06T20:49:00.044Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:108-108
Timestamp: 2026-05-06T20:49:00.044Z
Learning: Limit the 80-character line length check and vyoslinter (doc-linter.py) enforcement to documentation source files under docs/**/*.{rst,md}. Do not apply or flag line-length issues in repo-root files like CLAUDE.md or README.md, which are rendered directly by GitHub and are not linted by lint-doc.yml. This pattern narrows checks to Sphinx source docs and prevents false positives in non-doc files.

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-05-06T20:48:53.302Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:79-79
Timestamp: 2026-05-06T20:48:53.302Z
Learning: Limit line length to 80 characters only for documentation sources under the docs directory (docs/**/*.rst and docs/**/*.md). This is enforced by the vyoslinter doc-linter.py (from the vyos/.github repo) via lint-doc.yml on changed files under docs/**. Do not flag line-length violations in repository-root Markdown files like CLAUDE.md or README.md, as they are rendered by GitHub and reflow in the UI.

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-05-06T20:49:10.359Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:142-142
Timestamp: 2026-05-06T20:49:10.359Z
Learning: In vyos/vyos-documentation, the 80-character line limit and vyoslinter enforcement apply only to documentation source files under docs/**/*.rst and docs/**/*.md that Sphinx renders. Repo-root files such as CLAUDE.md and README.md are outside the linter's scope (lint-doc.yml runs on docs/**) and are rendered by GitHub with automatic paragraph reflow — do not flag line-length violations in these files.

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-05-06T20:49:15.361Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1902
File: CLAUDE.md:163-163
Timestamp: 2026-05-06T20:49:15.361Z
Learning: In vyos/vyos-documentation, enforce the 80-character line-length limit (Source conventions / Formatting) only for Sphinx documentation source files under docs/**/*.rst and docs/**/*.md. The lint-doc.yml workflow runs the doc-linter (doc-linter.py) and checks only docs/** changed files. Files in the repository root (e.g., CLAUDE.md, README.md) are rendered by GitHub and are not subject to this rule; do not flag line-length violations in those files.

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-05-08T07:01:22.978Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1878
File: docs/troubleshooting/connectivity.rst:0-0
Timestamp: 2026-05-08T07:01:22.978Z
Learning: For the VyOS documentation (MyST-based docs), MyST directive opener lines must keep the entire directive arguments on a single line. This includes MyST fenced-directive openers like ```{opcmd} ... ``` and the RST-equivalent form .. opcmd:: ... when ported/used in MyST. Because the MyST parser does not support wrapped/continued directive arguments across multiple lines, do not raise/keep review warnings suggesting line wrapping for these directive opener lines due to line-length (even if they exceed 80 characters).

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-05-08T07:01:22.978Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 1878
File: docs/troubleshooting/connectivity.rst:0-0
Timestamp: 2026-05-08T07:01:22.978Z
Learning: In vyos/vyos-documentation, do not raise line-length (>80 chars) review findings for MyST directive opener lines (the directive “opener” that uses MyST directive syntax such as `{cfgcmd}` / `{opcmd}` fence/openers). CI does not enforce the 80-character limit for these specific opener lines, and existing documentation contains longer opener lines that pass lint.

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-05-13T22:16:06.198Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 2021
File: docs/automation/terraform/terraformvyos.md:14-14
Timestamp: 2026-05-13T22:16:06.198Z
Learning: In the vyos/vyos-documentation repo, when a PR is a byte-for-byte documentation port of an existing file from the rolling branch to a release branch (e.g., circinus, sagitta), keep the port content identical to the production-tested rolling source. For these ports, do not raise new review findings for documentation issues that are already present in the rolling source (for example, markdownlint MD059 like non-descriptive link text such as `[link]`/`[install]`). Instead, defer those existing issues to a rolling-side cleanup PR (e.g., `#2024`) and then backport the cleanup via Mergify.

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-05-13T22:43:41.056Z
Learnt from: andamasov
Repo: vyos/vyos-documentation PR: 2024
File: docs/automation/terraform/terraformvyos.md:0-0
Timestamp: 2026-05-13T22:43:41.056Z
Learning: In docs/**/*.md, for Markdown reference definition lines of the form `[label]: <URL>`, if the line cannot be shortened to <= 80 characters (because the URL itself is near/at the limit), suppress the vyoslinter warning by wrapping only that reference definition with a `% stop_vyoslinter` / `% start_vyoslinter` block. If the reference definition can fit within 80 characters, leave it outside any suppression block.

Applied to files:

  • docs/configuration/service/lldp.md
📚 Learning: 2026-06-05T19:21:44.474Z
Learnt from: LiudmylaNad
Repo: vyos/vyos-documentation PR: 2066
File: docs/configuration/protocols/traffic-engineering.md:0-0
Timestamp: 2026-06-05T19:21:44.474Z
Learning: In the vyos/vyos-documentation MyST documentation pages, when writing CLI example invocations directly under a `{cfgcmd}` directive, use `none` fenced code blocks for those examples. Do not change these example blocks to `{opcmd}` or `{cfgcmd}`—`{opcmd}` is reserved for operational-mode commands, and the surrounding `{cfgcmd}` directive already documents the target command. Plain `none` blocks for these CLI examples are intentional and correct.

Applied to files:

  • docs/configuration/service/lldp.md
🔍 Remote MCP vyos.dev

Relevant review context

  • NOS-3217 was not found in Phorge. Numeric task T3217 exists but is unrelated: “Save FRR configuration on each commit”, resolved. Verify the PR’s task reference.
  • Existing LLDP work requested detailed neighbor output and specifically noted that the remote-port field should use LLDP PortID, not PortDescr.
  • LLDP civic-based locations are no longer supported; related integration tests were marked incompatible because of this. Removing outdated civic-based terminology is consistent.
  • A current 1.5.0 task identifies service lldp interface location coordinate-based elin as using u32 with range 0–9999999999, exceeding the uint32 maximum; it recommends changing the type to u64. Verify that the documentation’s ELIN example does not advertise values the implementation cannot currently accept.
  • LLDP interface operation modes were expanded to support receive-only behavior, and the prior all plus per-interface-disable issue was explicitly considered fixed for 1.5. Documentation should describe the 1.5 mode semantics rather than the older 1.4 behavior.
🔇 Additional comments (5)
docs/configuration/service/lldp.md (5)

1-49: LGTM!


50-53: LGTM!

Also applies to: 59-70, 78-106


107-174: LGTM!


182-230: LGTM!


233-241: LGTM!

Also applies to: 243-270

Comment thread docs/configuration/service/lldp.md
Comment thread docs/configuration/service/lldp.md
Comment thread docs/configuration/service/lldp.md
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Claude finished @LiudmylaNad's task in 1m 0s —— View job


Claude finished @LiudmylaNad's task —— View job


LLDP Documentation Review (re-run on 66ca646)

  • Read pass1-findings.json (empty — no deterministic findings)
  • Diff latest commit vs. prior review
  • Re-verify against .vyos-1x/ on rolling
  • Post updated summary

Issues

No confirmed factual errors.

Follow-up on prior review

The one INFO point from my last pass — "runs on all physical interfaces by default" — is addressed in 66ca646. docs/configuration/service/lldp.md:55,72,74-77 now say "every available local interface" / "all available local interfaces", which matches actual behavior: data/templates/lldp/lldpd.j2 invokes lldpd with no -I filter, so lldpd's default known-interface set (physical + bridges/bonds/VLANs) applies. Good fix.

Notes on CodeRabbit's three inline comments

For the record, since these overlap with what I verified:

  • ELIN 10–25 digits (lldp.md:181) — the 0-9999999999 string is a CLI help hint; validation is <regex>[0-9]{10,25}</regex> in service_lldp.xml.in:141-152. Doc is correct. CodeRabbit withdrew.
  • Legacy protocols transmit-on-receive (lldp.md:231-232) — matches lldpd's documented behavior (receiving CDP/EDP/SONMP on an interface triggers reply transmission). Doc is correct. CodeRabbit withdrew.
  • Interface scope (lldp.md:54-58,72-77) — fixed in 66ca646.

Needs Verification

None.

Stats

Validated 1 MyST file. Skipped 0 RST files awaiting MyST migration. Files reviewed: 1 (docs/configuration/service/lldp.md). Commands checked: 15 (10 conf-mode, 5 op-mode). Branch reviewed: rolling (vyos-1x: rolling). Pass 1 findings: 0.

Ready to merge from a factual-accuracy standpoint.


— branch: revise-lldp

@dmbaturin dmbaturin left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see no issues, the update looks good to me.

@dmbaturin
dmbaturin merged commit 3740b22 into vyos:rolling Aug 14, 2026
13 checks passed
@sever-sever

Copy link
Copy Markdown
Member

@Mergifyio backport circinus

@mergify

mergify Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

backport circinus

✅ Backports have been created

Details

sever-sever added a commit that referenced this pull request Aug 27, 2026
 docs: Update LLDP page to VyOS 1.5 standards (backport #2192)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

3 participants