Repository navigation
ospf6d: reject backbone Stub area configuration - #23646
dingqipeng wants to merge 1 commit into
Conversation
Reject Area 0 before creating an area or changing its Stub options. Share the guard between plain Stub and no-summary while retaining the existing non-backbone behavior. Add native topology regression coverage for dotted and decimal IDs, unchanged live neighbors and configuration, absent area creation, and legal Area 1 Stub configuration and removal. Fixes FRRouting#23628 Signed-off-by: dingqipeng <dingqipeng@hotmail.com>
|
| .vtysh_cmd("show ipv6 ospf6 neighbor json", isjson=True)["neighbors"] | ||
| ) | ||
| end = time.monotonic() | ||
| assert end - start < 1, "Neighbor observation took too long" |
There was a problem hiding this comment.
Slow queries fail healthy tests
If a busy CI worker takes one second or more to query neighbors, _epochs() fails even when the daemon and neighbors are healthy. The code already records start and end to account for query time. Remove this fixed limit and keep the interval comparison.
| assert end - start < 1, "Neighbor observation took too long" |
Prompt To Fix With AI
This is a comment left during a code review.
Path: tests/topotests/ospf6_backbone_stub/test_ospf6_backbone_stub.py
Line: 78
Comment:
**Slow queries fail healthy tests**
If a busy CI worker takes one second or more to query neighbors, `_epochs()` fails even when the daemon and neighbors are healthy. The code already records `start` and `end` to account for query time. Remove this fixed limit and keep the interval comparison.
```suggestion
```
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Fixes #23628
area 0 stubcurrently changes the backbone's Hello Options E bit andbreaks adjacency with a normally configured backbone peer. RFC 5340
Appendix C.2 forbids configuring the backbone as a Stub area.
Share area parsing and configuration between the plain Stub and
no-summaryhandlers, and reject Area 0 before area lookup/creation orany Stub/summary update. Keep non-backbone configuration and the existing
virtual-link diagnostic unchanged.
The new
ospf6_backbone_stubtopotest checks dotted and decimal Area 0IDs, with and without
no-summary, on both a live ABR and an isolatedrouter with no areas. Refusal must preserve running configuration, normal
area state, the empty area list, Full neighbors, neighbor state-change
origins, the backbone control prefix and daemon PIDs. Both legal Area 1
Stub forms must still form Full neighbors and undo normally.
Validation against source-built x86-64 baseline
c4e94c4aaa4f4562313b4a168f91211afc3bcba2and the patched binary:assertion and passes on patched. Neither run has an error or skip.
dotted/plain command on baseline, and passes all four command variants
on patched. It uses ordinary configuration and passive captures.
refusal. Neighbor state-change times and daemon PIDs remain unchanged.
Both legal non-backbone Stub policies restore the original configuration,
database, Full neighbors and control ping. Owned-resource cleanup passes.
git diff --checkpass. An independent read-only decoderchecks OSPFv3 and LSA checksums in all ten native captures.
Standalone reproduction source,
build/validation runner,
and report, raw evidence and manifests.
The reproducer supports
--image,--area-id,--no-summaryand--legal-controls; it requires Linux root, Python 3, Docker, iproute2,tcpdump and ping. It needs no private test suite or Python module.
The raw topotest logs retain environment/teardown warnings, including
forced daemon termination after the framework's wait limit. Owned
containers were removed; this is not a claim of graceful daemon shutdown.
The build cache is local; authors can run the reproducer against their
normally built FRR image. This PR covers backbone Stub, not NSSA.