Page MenuHomeVyOS Platform

IPv6 link-local addresses missing due to EUI64 address code, causing router-advert not to work
Closed, ResolvedPublic

Description

There is a bug in current code: if 'ipv6 address eui64' is unset (default), the default kernel-assigned link-local 'fe80::.../64' address is deleted from the interface. This breaks IPv6 router-advert and other IPv6 things.

To correctly handle this case, break apart set_ipv6_eui64_address into add_ and del_ functions that simply add/delete the given prefix+eui64, then add a default 'fe80::/64' eui64 address in all interface scripts.

To complement this change, add the ability to delete the default link-local address via 'ipv6 address no-default-link-local' or similar, and expand the eui64 code to support more than 1 prefix.

Interfaces that are part of bridges should not have any addresses, link-local or otherwise, so add code to detect this and not add the default link-local prefix in that case. Later, a validation can be added that raises a ConfigError if an interface has an address assigned while being added to a bridge.

Details

Difficulty level
Unknown (require assessment)
Version
-
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Perfectly compatible
Issue type
Bug (incorrect behavior)

Event Timeline

jjakob renamed this task from Separate IPv6 link-local addresses from EUI64 prefixes, allow setting multiple link-local or EUI64 addresses to Separate IPv6 link-local addresses from EUI64 prefixes, allow setting multiple EUI64 addresses.Apr 21 2020, 7:07 PM
jjakob changed the task status from Open to In progress.
jjakob triaged this task as High priority.
jjakob created this task.
jjakob created this object in space S1 VyOS Public.

The above PR is tested to fix this issue and T2345.

Todo:

  • set sysctl addr_gen_mode=1 to tell the kernel to not generate a link-local, otherwise the intf's MAC changes after a member is added so we can't delete the kernel's link-local any more
  • remove link-locals from bridge slaves
jjakob renamed this task from Separate IPv6 link-local addresses from EUI64 prefixes, allow setting multiple EUI64 addresses to IPv6 link-local addresses missing due to EUI64 address code, causing router-advert not to work.Apr 21 2020, 11:05 PM
erkin set Issue type to Bug (incorrect behavior).Aug 30 2021, 6:39 AM
erkin removed a subscriber: Active contributors.