You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: Add attributes-only UPDATE support for round-trip testing
Add support for generating and parsing UPDATE messages that contain only
path attributes with no NLRI (no announce, no withdraw). This enables
round-trip testing of empty UPDATEs like those containing just ORIGIN
and LOCAL_PREFERENCE.
Changes:
- Add Empty NLRI class for attributes-only UPDATE generation
- Update attributes parser to handle commands without nlri keyword
- Update UpdateCollection to generate attributes-only UPDATEs
- Add decoder support for generating 'attributes' command
- Update test framework to handle attributes-only encoding
- Fix runtime import of Negotiated in NLRI __hash__ and index methods
The new 'attributes' command syntax:
attributes origin igp local-preference 100
Coverage improved from 98.0% (346/353) to 98.3% (347/353).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Copy file name to clipboardExpand all lines: .claude/exabgp/FLOWSPEC_ROUNDTRIP_LIMITATIONS.md
+14-7Lines changed: 14 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
This document explains why certain BGP messages cannot complete a round-trip test (decode → encode → compare). The test framework marks these with `# No cmd:` comments to skip verification.
4
4
5
-
**Current coverage:**346/353 (98.0%) - 7 skipped
5
+
**Current coverage:**347/353 (98.3%) - 6 skipped
6
6
7
7
---
8
8
@@ -70,9 +70,9 @@ The self-check test now uses `generic=True` to enable round-trip for all generic
70
70
71
71
---
72
72
73
-
## 4. Empty UPDATE (1 case)
73
+
## 4. Empty UPDATE (RESOLVED)
74
74
75
-
### The Problem
75
+
### The Problem (was 1 case)
76
76
77
77
An UPDATE message with only path attributes and no NLRI (no announce, no withdraw).
78
78
@@ -82,9 +82,15 @@ An UPDATE message with only path attributes and no NLRI (no announce, no withdra
82
82
83
83
### Resolution
84
84
85
-
**Status:** ✅ Expected (no NLRI to encode)
85
+
**Status:** ✅ Fixed with `attributes` command
86
+
87
+
The decoder now generates `attributes` command for empty UPDATEs:
88
+
89
+
```
90
+
attributes origin igp local-preference 100
91
+
```
86
92
87
-
Nothing to announce or withdraw - decoder cannot generate a meaningful command.
93
+
The encoder uses an Empty NLRI internally to generate the attributes-only UPDATE.
88
94
89
95
---
90
96
@@ -135,17 +141,18 @@ Supported for all families: IPv4/IPv6, FlowSpec, MCAST-VPN, MUP, VPLS.
135
141
| Interface-set transitive | 0 | ✅ | Fixed with `transitive` JSON field |
0 commit comments