Page MenuHomeVyOS Platform

vyos.ifconfig: drop iftype attribute
In progress, LowPublicFEATURE REQUEST

Description

Under very rare cases we can run into a race condition where interfaces are still in creation phase but are already referenced..

This can trigger:

File "/usr/libexec/vyos/conf_mode/system_conntrack.py", line 270, in <module>
  apply(c)
File "/usr/libexec/vyos/conf_mode/system_conntrack.py", line 249, in apply
  call_dependents()
File "/usr/lib/python3/dist-packages/vyos/configdep.py", line 147, in call_dependents
  f()
File "/usr/lib/python3/dist-packages/vyos/configdep.py", line 118, in func_impl
  run_config_mode_script(script, config)
File "/usr/lib/python3/dist-packages/vyos/configdep.py", line 106, in run_config_mode_script
  mod.verify(c)
File "/usr/libexec/vyos//conf_mode/service_conntrack-sync.py", line 72, in verify
  if len(get_ipv4(interface)) < 1:
         ^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/vyos/template.py", line 458, in get_ipv4
  return Interface(interface).get_addr_v4()
         ^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/vyos/ifconfig/interface.py", line 334, in __init__
  if not self.iftype:
  ^^^^^^^^^^^

AttributeError: 'Interface' object has no attribute 'iftype'

This commit removes the code path in question and the class attribute check. The reason for the iftype attribute in the past was a common _create() method serving for all interface types. As we already have a lot of derived implementations and not all honor the classes iftype/type member - or even worse honor it only in 50% of the occurrences it's time to drop it.

Details

Version
1.5-rolling-202411270007
Is it a breaking change?
Perfectly compatible
Issue type
Internal change (not visible to end users)