diff options
| author | Daniil Baturin <daniil@vyos.io> | 2026-01-22 16:56:47 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-22 16:56:47 +0000 |
| commit | 0a619674e6ce46add5d1573399179c0d8e29456c (patch) | |
| tree | 9c5434910ace817cf4deb237ef0a7093541b6c20 /src | |
| parent | 41aa42fec49399a3cee7c772d2799b1c17490401 (diff) | |
| parent | f8a68122f3b4738a2a1bd1526ed3c9b8961d050d (diff) | |
| download | vyos-1x-0a619674e6ce46add5d1573399179c0d8e29456c.tar.gz vyos-1x-0a619674e6ce46add5d1573399179c0d8e29456c.zip | |
Merge pull request #4942 from natali-rs1985/T8125
vpp: T8125: Enable ip4-dhcp-client-detect feature if interface address is configured as DHCP
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/interfaces_ethernet.py | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/conf_mode/interfaces_ethernet.py b/src/conf_mode/interfaces_ethernet.py index 599421c72..ffb59c89e 100755 --- a/src/conf_mode/interfaces_ethernet.py +++ b/src/conf_mode/interfaces_ethernet.py @@ -447,17 +447,27 @@ def apply(ethernet): if 'static_arp' in ethernet: call_dependents() - # If the interface is managed by the VPP DPDK driver, synchronize runtime - # parameters between Linux and the corresponding VPP LCP interface - if dict_search(f'vpp.settings.interface.{ifname}.driver', ethernet) == 'dpdk': + vpp_iface_config = dict_search(f'vpp.settings.interface.{ifname}', ethernet) + if vpp_iface_config and is_systemd_service_running('vpp.service'): vpp_api = VPPControl() - # Find LCP pair - lcp_pair = vpp_api.lcp_pair_find(vpp_name_hw=ifname) - lcp_name = lcp_pair.get('vpp_name_kernel') - # Sync MTU to VPP LCP pair interface - if lcp_name: - mtu = e.get_mtu() - vpp_api.set_iface_mtu(lcp_name, mtu) + + # Enable ip4-dhcp-client-detect feature for DHCP-configured interfaces. + # This feature is required for VPP to process DHCP packets and assign addresses. + if 'dhcp' in ethernet.get('address', []): + vpp_api.enable_dhcp_client(ifname) + else: + vpp_api.disable_dhcp_client(ifname) + + # If the interface is managed by the VPP DPDK driver, synchronize runtime + # parameters between Linux and the corresponding VPP LCP interface + if vpp_iface_config.get('driver') == 'dpdk': + # Find LCP pair + lcp_pair = vpp_api.lcp_pair_find(vpp_name_hw=ifname) + lcp_name = lcp_pair.get('vpp_name_kernel') + # Sync MTU to VPP LCP pair interface + if lcp_name: + mtu = e.get_mtu() + vpp_api.set_iface_mtu(lcp_name, mtu) return None |
