]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tests: add l3mdev config helpers for VRF topotests
authorDavid Schweizer <dschweizer@opensourcerouting.org>
Mon, 5 Apr 2021 07:25:50 +0000 (09:25 +0200)
committerIgor Ryzhov <iryzhov@nfware.com>
Tue, 20 Apr 2021 09:07:14 +0000 (12:07 +0300)
Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
tests/topotests/lib/common_config.py

index d5bc3ce2a9f0f073aa3188ba6bd098ff15abf498..88069afc0dbf5c097a3518cf8e0b72de9d9bc05b 100644 (file)
@@ -4021,3 +4021,53 @@ def required_linux_kernel_version(required_version):
                 required_version ))
         return error_msg
     return True
+
+
+def kernel_requires_l3mdev_adjustment():
+    """
+    Checks if the L3 master device needs to be adjusted to handle VRF traffic
+    based on kernel version.
+
+    Returns
+    -------
+    1 or 0
+    """
+
+    if version_cmp(platform.release(), "4.15") >= 0:
+        return 1
+    return 0
+
+
+def adjust_router_l3mdev(tgen, router):
+    """
+    Adjusts a routers L3 master device to handle VRF traffic depending on kernel
+    version.
+
+    Parameters
+    ----------
+    * `tgen`   : tgen object
+    * `router` : router id to be configured.
+
+    Returns
+    -------
+    True
+    """
+
+    l3mdev_accept = kernel_requires_l3mdev_adjustment()
+
+    logger.info(
+        "router {0}: setting net.ipv4.tcp_l3mdev_accept={1}".format(
+            router, l3mdev_accept
+        )
+    )
+
+    output = tgen.net[router].cmd("sysctl -n net.ipv4.tcp_l3mdev_accept")
+    logger.info(
+        "router {0}: existing tcp_l3mdev_accept was {1}".format(router, output)
+    )
+
+    tgen.net[router].cmd(
+        "sysctl -w net.ipv4.tcp_l3mdev_accept={}".format(l3mdev_accept)
+    )
+
+    return True