Repository navigation
test(interop): prove import next-hop self on the wire - #2979
Merged
Merged
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
The wire checker can pass after parser failure or overlook MP_REACH-only advertisements.
2 open findings
What changed in this PR
Adds M114 interoperability coverage for #2978, verifying import next-hop self reaches iBGP and route-server clients correctly.
Changes:
- Adds an FRR topology with rewritten and unchanged control prefixes.
- Checks receiver routes, captured UPDATEs, and session stability.
- Registers a single-attempt CI job and documents coverage.
| File | Description |
|---|---|
| tests/interop/scripts/test-m114-import-next-hop-self-frr.sh | Runs route, wire, and session assertions. |
| tests/interop/m114-import-next-hop-self-frr.clab.yml | Defines the four-node lab. |
| tests/interop/configs/rustbgpd-m114-import-next-hop-self.toml | Configures import rewriting and passthrough peers. |
| tests/interop/configs/frr-bgpd-m114-source.conf | Advertises test and control prefixes. |
| tests/interop/configs/frr-bgpd-m114-rs.conf | Configures the route-server receiver. |
| tests/interop/configs/frr-bgpd-m114-ibgp.conf | Configures the iBGP receiver. |
| docs/interop.md | Documents M114 coverage and limitations. |
| .github/workflows/interop.yml | Adds M114 to required interop checks. |
🧠 Review effort: Balanced
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.
| notifications += 1 | ||
| if kind[0].get("show") != "2": | ||
| continue | ||
| codes = [f.get("show") for f in fields(bgp, "bgp.update.path_attribute.type_code")] |
There was a problem hiding this comment.
🟢 Approval recommended
No blocking issues remain, and prerequisite #2978 is confirmed merged.
1 resolved since last review
🧠 Review effort: Balanced
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.
lance0
marked this pull request as ready for review
October 8, 2026 00:50
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Depends on #2978. M114 fails on
mainuntil #2978 lands, so keep this draft until that merges.What it adds
M114 is a containerlab leg for import
next-hop self. The topology:next-hop selfon198.51.100.0/24and leaves the control prefix198.51.101.0/24unchanged;route_server_client.The driver asserts the following:
10.114.0.1, the local address of the source session, for the rewritten prefix, and10.114.0.2for the control prefix. This passes onmaintoo, which places the defect in export.received-routes, with soft-reconfiguration inbound) holds10.114.0.1for the rewritten prefix and10.114.0.2for the control prefix.Dockerfile.bmpsink, checks every UPDATE that carries either prefix to either receiver. Each such UPDATE must have exactly oneNEXT_HOPattribute with the expected address and noMP_REACH_NLRI. The capture must also contain no NOTIFICATION.The job is wired into
interop.ymlasm114, with a single attempt and no retry. It is listed indocs/interop.md.Local results
Each run below used a fresh deployment of this branch's topology and driver.
origin/main(a2c741431): 19 passed, 4 failed. Both receivers get the received next hop:origin/mainmerged with #2978 (934a0dba5): 23 passed, 0 failed.Scope
Extended Next Hop is not negotiated in this lab, so the IPv4
MP_REACHfallback that #2978 also fixes remains covered by its unit tests only. FRR advertises Extended Next Hop only over IPv6 transport.