Skip to content

vpp-manager: fix v6 ll fetch from linux#880

Merged
sknat merged 1 commit intomasterfrom
nsk-fetch-v6ll-from-linux-master
Feb 6, 2026
Merged

vpp-manager: fix v6 ll fetch from linux#880
sknat merged 1 commit intomasterfrom
nsk-fetch-v6ll-from-linux-master

Conversation

@sknat
Copy link
Collaborator

@sknat sknat commented Feb 6, 2026

This patch changes the way the link local address is configured in VPP. Previously we were going through the addresses configured on the uplink in linux prior to starting VPP, extracting the Linklocal and using is as-is in VPP.

This patch makes it so that we first create the tap interface in linux, wait for it to get a linklocal address and use the new one as a Link local in VPP.

This addresses a conflict where linux will compute two different LL addresses for the real uplink - prior to VPP starting - and the tuntap replacing it

  • after VPP started. This due to the fact that the computation [0] includes idev->dev->perm_addr which is unset in tuntap but is in hardware drivers.

Another reason for this design is that VPP does not currently support multiple LL addresses for a given interface.

[0] https://github.com/torvalds/linux/blob/master/net/ipv6/addrconf.c#L3337C12-L3337C40

@sknat sknat force-pushed the nsk-fetch-v6ll-from-linux-master branch from 9bf0e11 to d3da7e5 Compare February 6, 2026 16:15
@sknat sknat self-assigned this Feb 6, 2026
This patch changes the way the link local address is configured in VPP.
Previously we were going through the addresses configured on the
uplink in linux prior to starting VPP, extracting the Linklocal and
using is as-is in VPP.

This patch makes it so that we first create the tap interface in linux,
wait for it to get a linklocal address and use the new one as a Link local
in VPP.

This addresses a conflict where linux will compute two different LL addresses
for the real uplink - prior to VPP starting - and the tuntap replacing it
- after VPP started. This due to the fact that the computation [0] includes
idev->dev->perm_addr which is unset in tuntap but is in hardware drivers.

Another reason for this design is that VPP does not currently support multiple
LL addresses for a given interface.

[0] https://github.com/torvalds/linux/blob/master/net/ipv6/addrconf.c#L3337C12-L3337C40

Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
@sknat sknat force-pushed the nsk-fetch-v6ll-from-linux-master branch from d3da7e5 to 856a14d Compare February 6, 2026 16:56
@sknat sknat merged commit 93ad4da into master Feb 6, 2026
5 checks passed
@sknat sknat deleted the nsk-fetch-v6ll-from-linux-master branch February 6, 2026 18:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants