# SPDX-License-Identifier: GPL-2.0 import sys from pathlib import Path from .consts import KSRC, KSFT_DIR from .ksft import ksft_pr, ktap_result # Resolve paths try: if (KSFT_DIR / "kselftest-list.txt").exists(): # Running in "installed" selftests tools_full_path = KSFT_DIR SPEC_PATH = KSFT_DIR / "net/lib/specs" sys.path.append(tools_full_path.as_posix()) from net.lib.ynl.lib import YnlFamily, NlError else: # Running in tree tools_full_path = KSRC / "tools" SPEC_PATH = KSRC / "Documentation/netlink/specs" sys.path.append(tools_full_path.as_posix()) from net.ynl.lib import YnlFamily, NlError except ModuleNotFoundError as e: ksft_pr("Failed importing `ynl` library from kernel sources") ksft_pr(str(e)) ktap_result(True, comment="SKIP") sys.exit(4) # # Wrapper classes, loading the right specs # Set schema='' to avoid jsonschema validation, it's slow # class EthtoolFamily(YnlFamily): def __init__(self): super().__init__((SPEC_PATH / Path('ethtool.yaml')).as_posix(), schema='') class RtnlFamily(YnlFamily): def __init__(self): super().__init__((SPEC_PATH / Path('rt_link.yaml')).as_posix(), schema='') class NetdevFamily(YnlFamily): def __init__(self): super().__init__((SPEC_PATH / Path('netdev.yaml')).as_posix(), schema='')