Page MenuHomeVyOS Platform

VyOS does not accept IPv6 interface addresses with an all-zero host part
In progress, NormalPublicBUG

Description

peter@bbr00.nbg.de# set interfaces ethernet eth2 address xxxx:xxxx:1400:1::/64

  Error: xxxx:xxxx:1400:1::/64 is not a valid IP host
  
  
  
  Invalid value
  Value validation failed
  Set failed

On dummy interfaces it works flawlessly and Linux supports it as well.

peter@bbr00.nbg.de# show interfaces dummy dum0 | commands 
set address 'xxxx:xxxx:1400::/128'

Details

Version
VyOS 2025.10.12-0019-rolling
Is it a breaking change?
Perfectly compatible
Issue type
Bug (incorrect behavior)

Event Timeline

c-po changed the task status from Open to Confirmed.EditedOct 30 2025, 4:25 PM
c-po triaged this task as Normal priority.
c-po subscribed.

Confirmed:

cpo@LR1.wue3# set interfaces dummy dum4444 address 2001:db8::/64
  Error: 2001:db8::/64 is not a valid IP host

It is a valid IPv6 address - usage of all-zero is sometimes discouraged, but we should not prevent the user from selecting this address.

cpo@LR1.wue3# sudo ip -6 addr add dev dum0 2001:db8::/64
cpo@LR1.wue3# ip addr show dev dum0
9: dum0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether e2:b3:40:aa:be:9c brd ff:ff:ff:ff:ff:ff
    inet6 2001:db8::/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::e0b3:40ff:feaa:be9c/64 scope link
       valid_lft forever preferred_lft forever
c-po renamed this task from Vyos does not accept IP ending in :: on ethernet interfaces to VyOS does not accept IPv6 all-zero interface addresses with prefix length of /64.Oct 30 2025, 4:28 PM

This comment in ipaddrcheck explains why I disallowed all-zero host part addresses: https://github.com/vyos/ipaddrcheck/blob/current/src/ipaddrcheck_functions.c#L337-L346

As per https://www.rfc-editor.org/rfc/rfc4291#section-2.6.1 ,

The "subnet prefix" in an anycast address is the prefix that
   identifies a specific link.  This anycast address is syntactically
   the same as a unicast address for an interface on the link with the
   interface identifier set to zero.

   Packets sent to the Subnet-Router anycast address will be delivered
   to one router on the subnet.  All routers are required to support the
   Subnet-Router anycast addresses for the subnets to which they have
   interfaces.

   The Subnet-Router anycast address is intended to be used for
   applications where a node needs to communicate with any one of the
   set of routers.

So, according that RFC (which is a part of the standards track and is not obsoleted by anything yet), all-zero addresses do have an intended special use.

From this point of view, we must not accept them as interface addresses.

However, I'm curious if other platforms do allow that use or if anyone actually implements the "subnet router" mechanism.

Cisco and Arista support such addresses as interface addresses, and the anycast bit doesn't preclude unicast usage, so we should allow that.

dmbaturin renamed this task from VyOS does not accept IPv6 all-zero interface addresses with prefix length of /64 to VyOS does not accept IPv6 interface addresses with an all-zero host part.Thu, Dec 4, 2:45 PM
dmbaturin changed Is it a breaking change? from Unspecified (possibly destroys the router) to Perfectly compatible.