Skip to content

Commit

Permalink
selftests: drv-net: resolve remote interface name
Browse files Browse the repository at this point in the history
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: Willem de Bruijn <willemb@google.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Link: https://patch.msgid.link/20250218225426.77726-2-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Jakub Kicinski committed Feb 20, 2025
1 parent 22af030 commit 2217bcb
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions tools/testing/selftests/drivers/net/lib/py/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,9 @@ def __init__(self, src_path, nsim_test=None):
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):
Expand Down Expand Up @@ -200,6 +203,18 @@ def _check_env(self):
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

Expand Down

0 comments on commit 2217bcb

Please sign in to comment.