Commit 2217bcb4 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

selftests: drv-net: resolve remote interface name



Find out and record in env the name of the interface which remote host
will use for the IP address provided via config.

Interface name is useful for mausezahn and for setting up tunnels.

Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
Link: https://patch.msgid.link/20250218225426.77726-2-kuba@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 22af030f
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -154,6 +154,9 @@ class NetDrvEpEnv(NetDrvEnvBase):
        self.ifname = self.dev['ifname']
        self.ifindex = self.dev['ifindex']

        # resolve remote interface name
        self.remote_ifname = self.resolve_remote_ifc()

        self._required_cmd = {}

    def create_local(self):
@@ -200,6 +203,18 @@ class NetDrvEpEnv(NetDrvEnvBase):
            raise Exception("Invalid environment, missing configuration:", missing,
                            "Please see tools/testing/selftests/drivers/net/README.rst")

    def resolve_remote_ifc(self):
        v4 = v6 = None
        if self.remote_v4:
            v4 = ip("addr show to " + self.remote_v4, json=True, host=self.remote)
        if self.remote_v6:
            v6 = ip("addr show to " + self.remote_v6, json=True, host=self.remote)
        if v4 and v6 and v4[0]["ifname"] != v6[0]["ifname"]:
            raise Exception("Can't resolve remote interface name, v4 and v6 don't match")
        if (v4 and len(v4) > 1) or (v6 and len(v6) > 1):
            raise Exception("Can't resolve remote interface name, multiple interfaces match")
        return v6[0]["ifname"] if v6 else v4[0]["ifname"]

    def __enter__(self):
        return self