From: Anil Kaushik <anilkaushikwireless@gmail.com>
To: Pablo Neira Ayuso <pablo@netfilter.org>,
Harald Welte <laforge@gnumonks.org>,
Donald Hunter <donald.hunter@gmail.com>,
Jakub Kicinski <kuba@kernel.org>
Cc: "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,
Anil Kaushik <anilkaushikwireless@gmail.com>
Subject: [PATCH net-next v2 2/3] netlink: specs: add genetlink-legacy spec for GTP
Date: Thu, 8 Oct 2026 18:10:30 +0000 [thread overview]
Message-ID: <20261008181031.4129029-3-anilkaushikwireless@gmail.com> (raw)
In-Reply-To: <20261008181031.4129029-1-anilkaushikwireless@gmail.com>
The GTP (GPRS Tunnelling Protocol, user plane) generic netlink family
has no YAML specification under Documentation/netlink/specs/, so it
cannot be consumed by the ynl tooling used for user-space clients,
documentation and selftests.
Add a genetlink-legacy spec describing the existing family: the PDP
context management commands (NEWPDP, DELPDP, GETPDP) and the GTP-U echo
request (ECHOREQ), the GTPA_* attribute set, and the "gtp" multicast
group. The spec is derived directly from include/uapi/linux/gtp.h and
the gtp_genl_policy / gtp_genl_ops tables in drivers/net/gtp.c; command
and attribute values match the existing uapi one-to-one.
This only adds the description; there is no kernel code or uapi change.
Signed-off-by: Anil Kaushik <anilkaushikwireless@gmail.com>
---
Documentation/netlink/specs/gtp.yaml | 170 +++++++++++++++++++++++++++
MAINTAINERS | 1 +
2 files changed, 171 insertions(+)
create mode 100644 Documentation/netlink/specs/gtp.yaml
diff --git a/Documentation/netlink/specs/gtp.yaml b/Documentation/netlink/specs/gtp.yaml
new file mode 100644
index 000000000..7193f5e53
--- /dev/null
+++ b/Documentation/netlink/specs/gtp.yaml
@@ -0,0 +1,170 @@
+# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
+---
+name: gtp
+
+protocol: genetlink-legacy
+
+doc: |
+ GPRS Tunnelling Protocol, user plane (GTP-U).
+
+ The gtp netdevice encapsulates and decapsulates user plane packets in
+ GTP-U tunnels (GTPv0 and GTPv1-U, see 3GPP TS 29.060 and TS 29.281).
+ This family manages the PDP contexts that describe the tunnels and
+ triggers GTP-U echo requests. It is driven by user space control planes
+ such as those built on libgtpnl.
+
+kernel-policy: global
+
+attribute-sets:
+ -
+ name: gtp
+ name-prefix: gtpa-
+ attributes:
+ -
+ name: link
+ type: u32
+ doc: ifindex of the gtp netdevice the context is attached to.
+ -
+ name: version
+ type: u32
+ doc: GTP version of the context, 0 for GTPv0 or 1 for GTPv1-U.
+ -
+ name: tid
+ type: u64
+ doc: Tunnel identifier, GTPv0 only.
+ -
+ name: peer-address
+ type: u32
+ byte-order: big-endian
+ display-hint: ipv4
+ doc: |
+ IPv4 address of the remote GSN peer (GGSN or SGSN). Also known
+ as GTPA_SGSN_ADDRESS, kept for legacy user space.
+ -
+ name: ms-address
+ type: u32
+ byte-order: big-endian
+ display-hint: ipv4
+ doc: IPv4 address of the mobile subscriber served by the context.
+ -
+ name: flow
+ type: u16
+ doc: Flow label, GTPv0 only.
+ -
+ name: net-ns-fd
+ type: u32
+ doc: File descriptor of the network namespace of the gtp netdevice.
+ -
+ name: i-tei
+ type: u32
+ doc: Ingress Tunnel Endpoint Identifier, GTPv1-U only.
+ -
+ name: o-tei
+ type: u32
+ doc: Egress Tunnel Endpoint Identifier, GTPv1-U only.
+ -
+ name: pad
+ type: pad
+ -
+ name: peer-addr6
+ type: binary
+ checks:
+ exact-len: 16
+ byte-order: big-endian
+ display-hint: ipv6
+ doc: IPv6 address of the remote GSN peer (GGSN or SGSN).
+ -
+ name: ms-addr6
+ type: binary
+ checks:
+ exact-len: 16
+ byte-order: big-endian
+ display-hint: ipv6
+ doc: IPv6 address of the mobile subscriber served by the context.
+ -
+ name: family
+ type: u8
+ doc: Address family (AF_INET or AF_INET6) of the context addresses.
+
+operations:
+ list:
+ -
+ name: newpdp
+ doc: Create or update a PDP context.
+ attribute-set: gtp
+ value: 0
+ dont-validate: [strict, dump]
+ flags: [admin-perm]
+ do:
+ request: &pdp-attrs
+ attributes:
+ - link
+ - version
+ - tid
+ - peer-address
+ - peer-addr6
+ - ms-address
+ - ms-addr6
+ - flow
+ - i-tei
+ - o-tei
+ - family
+ - net-ns-fd
+ -
+ name: delpdp
+ doc: Delete a PDP context.
+ attribute-set: gtp
+ dont-validate: [strict, dump]
+ flags: [admin-perm]
+ do:
+ request: *pdp-attrs
+ -
+ name: getpdp
+ doc: Get or dump one or more PDP contexts.
+ attribute-set: gtp
+ dont-validate: [strict, dump]
+ flags: [admin-perm]
+ do:
+ request:
+ attributes:
+ - link
+ - version
+ - tid
+ - ms-address
+ - ms-addr6
+ - i-tei
+ - family
+ - net-ns-fd
+ reply: &pdp-reply
+ attributes:
+ - version
+ - tid
+ - peer-address
+ - peer-addr6
+ - ms-address
+ - ms-addr6
+ - flow
+ - i-tei
+ - o-tei
+ - family
+ dump:
+ reply: *pdp-reply
+ -
+ name: echoreq
+ doc: Send a GTP-U echo request to a peer.
+ attribute-set: gtp
+ dont-validate: [strict, dump]
+ flags: [admin-perm]
+ do:
+ request:
+ attributes:
+ - link
+ - version
+ - peer-address
+ - peer-addr6
+ - family
+
+mcast-groups:
+ list:
+ -
+ name: gtp
diff --git a/MAINTAINERS b/MAINTAINERS
index 51873349b..a6e43995e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -11421,6 +11421,7 @@ M: Harald Welte <laforge@gnumonks.org>
L: osmocom-net-gprs@lists.osmocom.org
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
GUID PARTITION TABLE (GPT)
--
2.25.1
next prev parent reply other threads:[~2026-10-08 18:10 UTC|newest]
Thread overview: 5+ 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 ` Anil Kaushik [this message]
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
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=20261008181031.4129029-3-anilkaushikwireless@gmail.com \
--to=anilkaushikwireless@gmail.com \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox