Page MenuHomeVyOS Platform

Interface does not exist on boot when used as inbound-interface for local policy route
Closed, ResolvedPublicBUG

Description

Attempting to use the inbound-interface directive inside a local policy route, as such:

policy {
    local-route {
        rule 1 {
            inbound-interface eth0.10
            ...
        }
    }
}

with specific types of interfaces (e.g. VLAN, Bonding) results in an:

vyos-configd: Interface "eth0.10" does not exist

error on boot with the configuration failing to apply. There seems to be an ordering issue between when the policy routes are created versus when the interfaces are created, resulting in the policy route referencing the configured inbound-interface before it is created.

As mentioned it seems like interfaces created at "runtime" seem to trigger this behaviour. Tested broken configurations are bonding interfaces, VLAN interfaces (on ethernet) and VLAN interfaces (on bonding). If the referenced inbound-interface is a hardware interface that exists at boot time (e.g. ethernet) the configuration applies successfully.

The issue is most commonly encountered at boot time, potentially causing the OS to enter a non-functioning state, though it is also encountered if a new interface is created and a local policy rule is created to reference the newly created interface in the same commit (upon commit, the aforementioned error will show up along with "Commit failed" but the new interface will show up nonetheless. Committing again resolves the issue).

Relevant PR:

https://github.com/vyos/vyos-1x/pull/1532

Details

Version
1.4
Is it a breaking change?
Perfectly compatible
Issue type
Bug (incorrect behavior)