Skip to content

Conversation

nvandamme
Copy link
Contributor

@nvandamme nvandamme commented Sep 3, 2025

Change summary

If a pppoe interface define ipv6 address autoconf, this interface doesn't register the provided IA-NA address from RA's/DHPCv6 announces (dhcp6c).

By modifying the dhcp6c configuration template and handling pppoe interfaces edge cases, the right ia-na entry can be written and handled by dhcp6c to the pppoe interface.

See : https://vyos.dev/T7485#234216

NOTE

It doesn't handle requesting a specific IA-NA address (send ia_na is always defaulting to 0).
Is a new parameter in interfaces pppoe [pppoeN] ipv6 xml definition should be handled has well?

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Code style update (formatting, renaming)
  • Refactoring (no functional changes)
  • Migration from an old Vyatta component to vyos-1x, please link to related PR inside obsoleted component
  • Other (please describe):

Related Task(s)

https://vyos.dev/T7485

Related PR(s)

How to test / Smoketest result

Checklist:

  • I have read the CONTRIBUTING document
  • I have linked this PR to one or more Phabricator Task(s)
  • I have run the components SMOKETESTS if applicable
  • My commit headlines contain a valid Task id
  • My change requires a change to the documentation
  • I have updated the documentation accordingly

Copy link

github-actions bot commented Sep 3, 2025

👍
No issues in PR Title / Commit Title

@nvandamme nvandamme changed the title pppoe: T7485: no ia-na ipv6 for ppoe link pppoe: T7485: ia-na ipv6 for ppoe link Sep 3, 2025
@c-po c-po changed the title pppoe: T7485: ia-na ipv6 for ppoe link pppoe: T7485: ia-na ipv6 for PPPoE link Sep 13, 2025
@c-po c-po changed the title pppoe: T7485: ia-na ipv6 for PPPoE link T7485: ia-na ipv6 for PPPoE link Sep 13, 2025
@c-po c-po requested a review from sever-sever September 14, 2025 11:49
@nvandamme nvandamme requested a review from c-po September 16, 2025 21:37
@nvandamme nvandamme requested a review from c-po September 18, 2025 15:14
@c-po c-po force-pushed the fix-pppoe-ipv-na branch from d50124a to fb9f2f3 Compare October 9, 2025 15:35
@c-po
Copy link
Member

c-po commented Oct 9, 2025

@nvandamme I've rebased your changes and kept the additions for no domain name/DNS server which is a nice idea.

I also incorporated a different design. PPPoE interfaces now behave like DHCPv6 ethernet interfaces - you can define set interfaces pppoe pppoe0 address dhcpv6 to also send IA_ND to the DHCPv6 server.

Is this something which will fix your issue, too? I try to keep a common CLI design wherever possible.

Copy link

github-actions bot commented Oct 9, 2025

CI integration ❌ failed!

Details

CI logs

  • CLI Smoketests (no interfaces) 👍 passed
  • CLI Smoketests VPP 👍 passed
  • CLI Smoketests (interfaces only) ❌ failed
  • Config tests 👍 passed
  • Config tests VPP 👍 passed
  • RAID1 tests 👍 passed
  • TPM tests 👍 passed

@nvandamme
Copy link
Contributor Author

nvandamme commented Oct 9, 2025

@nvandamme I've rebased your changes and kept the additions for no domain name/DNS server which is a nice idea.

I also incorporated a different design. PPPoE interfaces now behave like DHCPv6 ethernet interfaces - you can define set interfaces pppoe pppoe0 address dhcpv6 to also send IA_ND to the DHCPv6 server.

Is this something which will fix your issue, too? I try to keep a common CLI design wherever possible.

Nice! Seems to cover all previous explained cases, go for it!

Also, not tried it yet, but we might want to send other values for IA_NA: the user do not want a basic EUI64 generated address, but a specific one with a corresponding IAID (note that wide-dhcpv6-client only support integer and not standard hex based notation though...)

@c-po c-po added bp/sagitta Create automatic backport for sagitta LTS version bp/circinus Create automatic backport for circinus labels Oct 10, 2025
Copy link
Member

@sever-sever sever-sever left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adds dhcpv6 option to PPPoE address
Add the ability to opt out of domain name options.

Copy link
Member

@c-po c-po left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implementation solved initial bug report from author. Tested by both me and the bug report author.

@c-po c-po merged commit 9baf8c8 into vyos:current Oct 10, 2025
17 of 19 checks passed
@vyosbot vyosbot added mirror-initiated This PR initiated for mirror sync workflow mirror-completed and removed mirror-initiated This PR initiated for mirror sync workflow labels Oct 10, 2025
@nvandamme
Copy link
Contributor Author

nvandamme commented Oct 13, 2025

@c-po set system pppoe pppoeN address dhcpv6 seems to error when interface.update() is called:

[ interfaces pppoe pppoe0 ]
Traceback (most recent call last):
  File "/usr/libexec/vyos/services/vyos-configd", line 156, 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", lin
e 124, in update
    super().update(config)
  File "/usr/lib/python3/dist-packages/vyos/ifconfig/interface.py",
 line 1831, in update
    self.add_addr(addr, vrf_changed=vrf_changed)
  File "/usr/lib/python3/dist-packages/vyos/ifconfig/interface.py",
 line 1286, in add_addr
    elif not is_intf_addr_assigned(self.ifname, addr, netns=netns):
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/vyos/utils/network.py", line
 454, in is_intf_addr_assigned
    if ip_interface(addr) == interface or address == addr:
       ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/ipaddress.py", line 117, in ip_interfac
e
    raise ValueError(f'{address!r} does not appear to be an IPv4 or
 IPv6 interface')
ValueError: 'd' does not appear to be an IPv4 or IPv6 interface

[[interfaces pppoe pppoe0]] failed
Commit failed
[edit]

see bug report in https://vyos.dev/T7485

I haven't encountered this bug with the earlier proposed setting path set system pppoe pppoeN ipv6 address dhcpv6 (and my patched vyos proxmox image is working with it for weeks now).

Is there anything we missed in interface.py resulting in this bug? Or maybe a simple malformed string user side?

Also, on pppoe.py i was also forcing self.set_dhcpv6(True) when system pppoe pppoeN ipv6 address dhcpv6 was set, but a quick glance to interface.py shows that is indeed set later on:

elif addr == 'dhcpv6':

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bp/circinus Create automatic backport for circinus bp/sagitta Create automatic backport for sagitta LTS version current mirror-completed

Development

Successfully merging this pull request may close these issues.

4 participants