srv6: add support for END.X behavior - #677
Draft
christophefontaine wants to merge 2 commits into
Draft
Conversation
christophefontaine
force-pushed
the
srv6_end.x
branch
2 times, most recently
from
August 4, 2026 09:09
ab20137 to
c742283
Compare
rjarry
requested changes
Aug 4, 2026
Comment on lines
+32
to
+51
| // Iterate through all nexthops and find a matching SRv6 local one | ||
| while ((nh = nexthop_next(nh)) != NULL) { | ||
| if (nh->type != GR_NH_T_SR6_LOCAL) | ||
| continue; | ||
| if (nh->vrf_id != base->vrf_id) | ||
| continue; | ||
| if (nh->iface_id != base->iface_id) | ||
| continue; | ||
|
|
||
| struct nexthop_info_srv6_local *priv = nexthop_info_srv6_local(nh); | ||
| if (priv->behavior != target->behavior) | ||
| continue; | ||
| if (priv->out_vrf_id != target->out_vrf_id) | ||
| continue; | ||
| if (priv->flags != target->flags) | ||
| continue; | ||
|
|
||
| // For END.X, match by next-hop address and interface | ||
| if (target->behavior == SR_BEHAVIOR_END_X) { | ||
| if (priv->endx_iface_id != target->endx_iface_id) |
Collaborator
There was a problem hiding this comment.
This seems a bit inefficient. Would it make sense to use a hash table?
Collaborator
Author
There was a problem hiding this comment.
yes.
I'll ask my friend Claude to look at that, (not much time today ).
christophefontaine
force-pushed
the
srv6_end.x
branch
2 times, most recently
from
August 4, 2026 10:00
0fdfb54 to
9720143
Compare
rjarry
requested changes
Aug 4, 2026
Collaborator
Author
|
Reworked a bit to reuse the existing iface_id instead of populating another one, will come back to the hatable later today. |
christophefontaine
force-pushed
the
srv6_end.x
branch
from
August 4, 2026 11:28
9720143 to
6151a6a
Compare
Collaborator
|
Oops |
christophefontaine
force-pushed
the
srv6_end.x
branch
from
August 4, 2026 14:09
6151a6a to
8f88ad9
Compare
Collaborator
|
The end.x test (non-frr) is failing |
Collaborator
|
Could you squash the hash table addition in the same commit and put the smoke tests separate? Thanks! |
Implement the SRv6 END.X behavior (RFC 8986 Section 4.10). END.X forwards packets to a specific IPv6 next-hop after processing the segment routing header, bypassing FIB lookup. This is used for ISIS adjacency SIDs in traffic engineering. FRR integration allows installing END.X nexthops from zebra and exporting them back for display. Closes: DPDK#668 Signed-off-by: Christophe Fontaine <cfontain@redhat.com>
Add test for end.x function, and an ISIS based test. Signed-off-by: Christophe Fontaine <cfontain@redhat.com>
christophefontaine
force-pushed
the
srv6_end.x
branch
from
August 4, 2026 16:03
d679398 to
694b71f
Compare
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.
Implement the SRv6 END.X behavior (RFC 8986 Section 4.10). END.X forwards packets to a specific IPv6 next-hop after processing the segment routing header, bypassing FIB lookup. This is used for ISIS adjacency SIDs in traffic engineering.
FRR integration allows installing END.X nexthops from zebra and exporting them back for display.
Add two smoke tests, standalone, and with FRR/ISIS with uSID.
Closes: #668