All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Kicinski <kuba@kernel.org>
To: Anil Kaushik <anilkaushikwireless@gmail.com>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>,
	Harald Welte <laforge@gnumonks.org>,
	Donald Hunter <donald.hunter@gmail.com>,
	"David S . Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>,
	netdev@vger.kernel.org, osmocom-net-gprs@lists.osmocom.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next v2 3/3] selftests: net: add a test for the gtp netlink family
Date: Thu, 8 Oct 2026 17:11:47 -0700	[thread overview]
Message-ID: <20261008171147.0c4ef171@kernel.org> (raw)
In-Reply-To: <20261008181031.4129029-4-anilkaushikwireless@gmail.com>

On Thu,  8 Oct 2026 18:10:31 +0000 Anil Kaushik wrote:
> Exercise the gtp generic netlink family through its ynl spec: create a
> gtp device, add a PDP context with newpdp, check getpdp lists it and
> delpdp removes it. Two more cases check that two contexts are dumped and
> that deleting an unknown context fails.
> 
> Add a GtpFamily ynl wrapper and register the test.
> 
> Signed-off-by: Anil Kaushik <anilkaushikwireless@gmail.com>
> ---
>  MAINTAINERS                                   |  1 +
>  tools/testing/selftests/net/Makefile          |  1 +
>  tools/testing/selftests/net/gtp.py            | 77 +++++++++++++++++++
>  .../testing/selftests/net/lib/py/__init__.py  |  5 +-
>  tools/testing/selftests/net/lib/py/ynl.py     |  8 +-
>  5 files changed, 89 insertions(+), 3 deletions(-)
>  create mode 100644 tools/testing/selftests/net/gtp.py

You need to add GTP to the config (please not that configs are sorted)

> diff --git a/MAINTAINERS b/MAINTAINERS
> index a6e43995e..8ac817a78 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -11423,6 +11423,7 @@ S:	Maintained
>  T:	git git://git.kernel.org/pub/scm/linux/kernel/git/pablo/gtp.git
>  F:	Documentation/netlink/specs/gtp.yaml
>  F:	drivers/net/gtp.c
> +F:	tools/testing/selftests/net/gtp.py
>  
>  GUID PARTITION TABLE (GPT)
>  M:	Davidlohr Bueso <dave@stgolabs.net>
> diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile
> index d4ca82fec..5366de878 100644
> --- a/tools/testing/selftests/net/Makefile
> +++ b/tools/testing/selftests/net/Makefile
> @@ -44,6 +44,7 @@ TEST_PROGS := \
>  	fin_ack_lat.sh \
>  	fou_mcast_encap.sh \
>  	fq_band_pktlimit.sh \
> +	gtp.py \
>  	gre_gso.sh \
>  	gre_ipv6_lladdr.sh \

this is not the correct alphabetical order

>  	icmp.sh \
> diff --git a/tools/testing/selftests/net/gtp.py b/tools/testing/selftests/net/gtp.py
> new file mode 100644
> index 000000000..984c626b7
> --- /dev/null
> +++ b/tools/testing/selftests/net/gtp.py
> @@ -0,0 +1,77 @@
> +#!/usr/bin/env python3
> +# SPDX-License-Identifier: GPL-2.0
> +
> +"""Tests for the gtp netlink family."""
> +
> +from lib.py import ksft_run, ksft_exit
> +from lib.py import ksft_eq, ksft_in, ksft_not_in, ksft_raises
> +from lib.py import KsftSkipEx
> +from lib.py import NetNS, NetNSEnter
> +from lib.py import GtpFamily, NlError
> +from lib.py import CmdExitFailure
> +from lib.py import ip, defer
> +
> +
> +def _add_gtp_dev(ns):
> +    try:
> +        ip("link add gtp0 type gtp role ggsn", ns=str(ns))
> +    except CmdExitFailure:
> +        raise KsftSkipEx("no gtp support (CONFIG_GTP, iproute2)")
> +    defer(ip, "link del gtp0", ns=str(ns))
> +    ip("link set gtp0 up", ns=str(ns))
> +    return ip("-d link show gtp0", ns=str(ns), json=True)[0]["ifindex"]
> +
> +
> +def _iteis(contexts):
> +    return [c.get("i-tei") for c in contexts]
> +
> +
> +def add_del_pdp(gtp, ns) -> None:

We need a sentence or three describing what the test is trying to
validate

> +    link = _add_gtp_dev(ns)
> +
> +    gtp.newpdp({"link": link, "version": 1,
> +                "i-tei": 0x100, "o-tei": 0x200,
> +                "ms-address": "10.0.0.1", "peer-address": "192.0.2.1"})
> +
> +    pdp = [c for c in gtp.getpdp({}, dump=True) if c.get("i-tei") == 0x100]
> +    ksft_eq(len(pdp), 1)
> +    ksft_eq(pdp[0]["o-tei"], 0x200)
> +    ksft_eq(pdp[0]["ms-address"], "10.0.0.1")
> +    ksft_eq(pdp[0]["peer-address"], "192.0.2.1")
> +
> +    gtp.delpdp({"link": link, "version": 1,
> +                "i-tei": 0x100, "ms-address": "10.0.0.1"})
> +    ksft_not_in(0x100, _iteis(gtp.getpdp({}, dump=True)))
> +
> +
> +def add_two_pdp(gtp, ns) -> None:
> +    link = _add_gtp_dev(ns)
> +
> +    for i_tei, o_tei, ms in ((0x111, 0x211, "10.0.1.1"),
> +                             (0x112, 0x212, "10.0.1.2")):
> +        gtp.newpdp({"link": link, "version": 1,
> +                    "i-tei": i_tei, "o-tei": o_tei,
> +                    "ms-address": ms, "peer-address": "192.0.2.5"})
> +
> +    iteis = _iteis(gtp.getpdp({}, dump=True))
> +    ksft_in(0x111, iteis)
> +    ksft_in(0x112, iteis)
> +
> +
> +def del_unknown_pdp(gtp, ns) -> None:
> +    link = _add_gtp_dev(ns)
> +    with ksft_raises(NlError):
> +        gtp.delpdp({"link": link, "version": 1,
> +                    "i-tei": 0x999, "ms-address": "10.9.9.9"})
> +
> +
> +def main() -> None:

add some docstring here too, to avoid pylint warnings
please make sure ruff check is also clean

> +    with NetNS() as ns:
> +        with NetNSEnter(str(ns)):
> +            gtp = GtpFamily()
> +        ksft_run([add_del_pdp, add_two_pdp, del_unknown_pdp], args=(gtp, ns))
> +    ksft_exit()
> +
> +
> +if __name__ == "__main__":
> +    main()
> diff --git a/tools/testing/selftests/net/lib/py/__init__.py b/tools/testing/selftests/net/lib/py/__init__.py
> index 71df5880b..8d34f2659 100644
> --- a/tools/testing/selftests/net/lib/py/__init__.py
> +++ b/tools/testing/selftests/net/lib/py/__init__.py
> @@ -18,7 +18,7 @@ from .utils import CmdExitFailure, fd_read_timeout, cmd, bkg, defer, \
>  from .bpf import bpf_map_set, bpf_map_dump, bpf_prog_map_ids
>  from .ynl import NlError, NlctrlFamily, YnlFamily, \
>      EthtoolFamily, NetdevFamily, RtnlFamily, RtnlAddrFamily, RtnlRouteFamily
> -from .ynl import NetshaperFamily, DevlinkFamily, PSPFamily, Netlink
> +from .ynl import NetshaperFamily, DevlinkFamily, PSPFamily, GtpFamily, Netlink
>  
>  __all__ = ["KSRC",
>             "KsftFailEx", "KsftSkipEx", "KsftXfailEx", "ksft_pr", "ksft_eq",
> @@ -32,6 +32,7 @@ __all__ = ["KSRC",
>             "wait_port_listen", "ctl_file_write", "wait_file", "tool", "tc",
>             "bpf_map_set", "bpf_map_dump", "bpf_prog_map_ids",
>             "NetdevSim", "NetdevSimDev",
> -           "NetshaperFamily", "DevlinkFamily", "PSPFamily", "NlError",
> +           "NetshaperFamily", "DevlinkFamily", "PSPFamily", "GtpFamily",

strange place to insert the GtpFamily, alphabetically would be before
PSP ?

  reply	other threads:[~2026-10-09  0:11 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-08 18:10 [PATCH net-next v2 0/3] gtp: ynl spec for the GTP netlink family, a reply-command fix, and a selftest Anil Kaushik
2026-10-08 18:10 ` [PATCH net-next v2 1/3] gtp: set a valid genl command in PDP context get and dump replies Anil Kaushik
2026-10-08 18:10 ` [PATCH net-next v2 2/3] netlink: specs: add genetlink-legacy spec for GTP Anil Kaushik
2026-10-12 18:55   ` netdev-bot+sashiko
2026-10-08 18:10 ` [PATCH net-next v2 3/3] selftests: net: add a test for the gtp netlink family Anil Kaushik
2026-10-09  0:11   ` Jakub Kicinski [this message]
2026-10-12 18:55   ` netdev-bot+sashiko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261008171147.0c4ef171@kernel.org \
    --to=kuba@kernel.org \
    --cc=anilkaushikwireless@gmail.com \
    --cc=davem@davemloft.net \
    --cc=donald.hunter@gmail.com \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=laforge@gnumonks.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=osmocom-net-gprs@lists.osmocom.org \
    --cc=pabeni@redhat.com \
    --cc=pablo@netfilter.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.