recv_size parameter allows constraining the buffer size for dumps. It's useful in testing kernel handling of dump continuation, IOW testing dumps which span multiple skbs. Let the tests set this parameter when initializing the YNL family. Keep the normal default, we don't want tests to unintentionally behave very differently than normal code. Reviewed-by: Joe Damato <jdamato@fastly.com> Reviewed-by: Petr Machata <petrm@nvidia.com> Link: https://patch.msgid.link/20241213152244.3080955-4-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
# 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, recv_size=0):
|
|
super().__init__((SPEC_PATH / Path('ethtool.yaml')).as_posix(),
|
|
schema='', recv_size=recv_size)
|
|
|
|
|
|
class RtnlFamily(YnlFamily):
|
|
def __init__(self, recv_size=0):
|
|
super().__init__((SPEC_PATH / Path('rt_link.yaml')).as_posix(),
|
|
schema='', recv_size=recv_size)
|
|
|
|
|
|
class NetdevFamily(YnlFamily):
|
|
def __init__(self, recv_size=0):
|
|
super().__init__((SPEC_PATH / Path('netdev.yaml')).as_posix(),
|
|
schema='', recv_size=recv_size)
|
|
|
|
class NetshaperFamily(YnlFamily):
|
|
def __init__(self, recv_size=0):
|
|
super().__init__((SPEC_PATH / Path('net_shaper.yaml')).as_posix(),
|
|
schema='', recv_size=recv_size)
|