diff --git a/interface-definitions/vpp.xml.in b/interface-definitions/vpp.xml.in
index 749fb3fbfd..3b74e0d95e 100644
--- a/interface-definitions/vpp.xml.in
+++ b/interface-definitions/vpp.xml.in
@@ -785,6 +785,19 @@
+
+
+ Interfaces settings
+
+
+
+
+ Allow VPP to use untested NICs. This disables official support for this system
+
+
+
+
+
IPv6 settings
diff --git a/python/vyos/vpp/config_verify.py b/python/vyos/vpp/config_verify.py
index 18859331bb..f2c7fe1ac9 100644
--- a/python/vyos/vpp/config_verify.py
+++ b/python/vyos/vpp/config_verify.py
@@ -28,6 +28,12 @@
from vyos.vpp.utils import human_memory_to_bytes, bytes_to_human_memory
+# Community-tested DPDK drivers / not officially supported by VyOS
+community_drivers_dpdk: list[str] = [
+ 'iavf',
+]
+
+
def verify_vpp_remove_kernel_interface(config: dict):
"""Common verify for removed kernel-interfaces.
Verify that removed kernel interface are not used in 'vpp kernel-interfaces'.
@@ -172,6 +178,12 @@ def verify_dev_driver(iface_name: str, driver_type: str) -> bool:
if driver_type == 'dpdk':
if driver in drivers_dpdk:
return True
+ if driver in community_drivers_dpdk:
+ Warning(
+ f"Driver '{driver}' on interface {iface_name} is community-supported and not tested by VyOS. "
+ f"This disables official support for this system."
+ )
+ return True
elif driver_type == 'xdp':
if driver in drivers_xdp:
return True
diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py
index abb68847eb..82e83ad0ab 100755
--- a/src/conf_mode/vpp.py
+++ b/src/conf_mode/vpp.py
@@ -44,6 +44,7 @@
from vyos.vpp import control_host
from vyos.vpp.config_deps import deps_xconnect_dict
from vyos.vpp.config_verify import (
+ community_drivers_dpdk,
verify_dev_driver,
verify_vpp_minimum_cpus,
verify_vpp_minimum_memory,
@@ -549,6 +550,17 @@ def verify(config):
raise ConfigError(
f'Driver {iface_config["driver"]} is not compatible with interface {iface}!'
)
+ is_community_dpdk_driver = (
+ iface_config['kernel_module'] in community_drivers_dpdk
+ )
+ if is_community_dpdk_driver and 'allow-unsupported-nics' not in config.get(
+ 'settings', {}
+ ).get('interfaces', {}):
+ raise ConfigError(
+ f"Driver {iface_config['driver']} on interface {iface} is community-supported and could be enabled "
+ f"by configuring 'set vpp settings interfaces allow-unsupported-nics'"
+ )
+
if iface_config['driver'] == 'xdp' and 'xdp_options' in iface_config:
if iface_config['xdp_options']['num_rx_queues'] != 'all':
rx_queues = iface_config['xdp_api_params']['rxq_num']