Page MenuHomeVyOS Platform

PPPoE commit crash: TypeError in pppoe.py when `ipv6 address` node exists without `autoconf`
Closed, ResolvedPublicBUG

Description

  1. Configure a working PPPoE interface with DHCPv6-PD
  2. Run set interfaces pppoe pppoe0 ipv6 address autoconf
  3. If rdisc6 times out, the commit fails, but the ipv6 address node remains in the config tree
  4. Run delete interfaces pppoe pppoe0 ipv6 address or delete interfaces pppoe pppoe0 ipv6
  1. Any subsequent commit crashes with:

Traceback (most recent call last):

File "/usr/libexec/vyos/services/vyos-configd", line 157, in run_script
  script.apply(c)
File "/usr/libexec/vyos/conf_mode/interfaces_pppoe.py", line 132, in apply
  p.update(pppoe)
File "/usr/lib/python3/dist-packages/vyos/ifconfig/pppoe.py", line 145, in update
  if 'autoconf' in dict_search('ipv6.address', config):
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

TypeError: argument of type 'NoneType' is not iterable

rc / proposal:

In /usr/lib/python3/dist-packages/vyos/ifconfig/pppoe.py line 145:

if 'autoconf' in dict_search('ipv6.address', config):

dict_search('ipv6.address', config) returns None when the ipv6 address
node exists but is empty.

works fine with:

if dict_search('ipv6.address', config) and 'autoconf' in dict_search('ipv6.address', config):

Details

Version
VyOS 2026.02.20-0025-rolling
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Bug (incorrect behavior)