Bug #14434
openPPPoE WAN interface with VIPs causes continuous interface restarting
0%
Description
I have a /28 routable legacy IP block from the ISP, and they assign the first usable address of the /28 block as a /32 to the PPPOE interface, so i have:
Routable block: x.x.x.64/28
PPPOE address: x.x.x.65/32
LAN address CARP VIP: x.x.x.65/28
This configuration worked fine in 22.05, but is broken in 23.01 and remains broken in 23.05.
The PPPOE connection establishes and calls /etc/rc.newwanip, which then calls find_interface_ip() and get_interface_ip() to determine the address assigned to pppoe0. These functions return NULL, which causes rc.newwanip to restart the pppoe0 interface. This then causes an endless loop. The logs show the correct interface name, but no IP:
rc.newwanip: on (IP address: ) (interface: WAND[opt5]) (real interface: pppoe0).
Looking through the find_interface_ip() function, i can see it looks for $interface_ip_arr_cache - this array exists, but is empty causing the function to fail and return NULL.
I can see that if $interface_ip_arr_cache does not exist, it should open /var/db/${interface}_ip
if (!isset($interface_ip_arr_cache[$interface]) or $flush) { if (file_exists("/var/db/${interface}_ip")) {
The file /var/db/pppoe0_ip is present and contains the correct address.
I'm hoping someone more familiar with the codebase and changes between 22.05/23.01 could give some insight into this otherwise i'll be trying to track it down further.