PPPoE interfaces automatically receive an IPv6 link-local address (fe80::/10) even when no IPv6 options are configured. There is no CLI option to suppress this, unlike all other interface types (ethernet, bonding, bridge, wireless, etc.) which expose set interfaces <type> <ifname> ipv6 address no-default-link-local.
Steps to reproduce
Configure a PPPoE interface with no IPv6 options whatsoever (no ipv6 address autoconf, no dhcpv6-options, no address dhcpv6). Bring the interface up. Run ip addr show <pppoe-ifname>.
Observed behaviour
An inet6 fe80::... link-local address is present on the interface with no way to remove it via CLI.
Expected behaviour
set interfaces pppoe <ifname> ipv6 address no-default-link-local should be available, consistent with all other interface types.
Root cause
Commit rVYOSONEXd0a20884614e (interface: T4627: not every interface type supports IPv6 interface-identifiers, 2025-04-23) restructured IPv6 address options. The old ipv6-address.xml.i (which bundled autoconf, eui64, interface-identifier, and no-default-link-local together) was deleted. Its replacement, ipv6-options.xml.i, now inlines ipv6-address-no-default-link-local.xml.i directly.
All standard interface types use ipv6-options.xml.i and therefore inherit no-default-link-local automatically. PPPoE, however, defines its ipv6 node inline in interfaces_pppoe.xml.in rather than via the shared include. The commit only added ipv6-address-interface-identifier.xml.i to PPPoE's inline node — ipv6-address-no-default-link-local.xml.i was not added alongside it.
Affected file
interface-definitions/interfaces_pppoe.xml.in lines 105–108:
<children>
#include <include/interface/ipv6-address-autoconf.xml.i> #include <include/interface/ipv6-address-interface-identifier.xml.i> <!-- missing: #include <include/interface/ipv6-address-no-default-link-local.xml.i> -->
</children>
Suggested fix
Add the missing include to interfaces_pppoe.xml.in:
<children>
#include <include/interface/ipv6-address-autoconf.xml.i> #include <include/interface/ipv6-address-interface-identifier.xml.i> #include <include/interface/ipv6-address-no-default-link-local.xml.i>
</children>
This is consistent with how ipv6-options.xml.i handles the same set of options for all other interface types.
The relevant code references are interface-definitions/interfaces_pppoe.xml.in interfaces_pppoe.xml.in:105-109 and interface-definitions/include/interface/ipv6-options.xml.i which inlines no-default-link-local for all other interface types. ipv6-options.xml.i:1