* [RFC net-next] netlink: specs: add genetlink-legacy spec for GTP
@ 2026-10-01 9:02 Anil Kaushik
2026-10-07 23:18 ` Jakub Kicinski
0 siblings, 1 reply; 3+ messages in thread
From: Anil Kaushik @ 2026-10-01 9:02 UTC (permalink / raw)
To: Pablo Neira Ayuso, Harald Welte, Donald Hunter, Jakub Kicinski
Cc: David S . Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
netdev, osmocom-net-gprs, linux-kernel, Anil Kaushik
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFC net-next] netlink: specs: add genetlink-legacy spec for GTP
2026-10-01 9:02 [RFC net-next] netlink: specs: add genetlink-legacy spec for GTP Anil Kaushik
@ 2026-10-07 23:18 ` Jakub Kicinski
2026-10-08 18:09 ` Anil Kaushik
0 siblings, 1 reply; 3+ messages in thread
From: Jakub Kicinski @ 2026-10-07 23:18 UTC (permalink / raw)
To: Anil Kaushik
Cc: Pablo Neira Ayuso, Harald Welte, Donald Hunter, David S . Miller,
Eric Dumazet, Paolo Abeni, Simon Horman, netdev,
osmocom-net-gprs, linux-kernel
On Thu, 1 Oct 2026 09:02:50 +0000 Anil Kaushik wrote:
> 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.
Do you have any plans to use this?
Why send it as RFC and not PATCH?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFC net-next] netlink: specs: add genetlink-legacy spec for GTP
2026-10-07 23:18 ` Jakub Kicinski
@ 2026-10-08 18:09 ` Anil Kaushik
0 siblings, 0 replies; 3+ messages in thread
From: Anil Kaushik @ 2026-10-08 18:09 UTC (permalink / raw)
To: Jakub Kicinski
Cc: Pablo Neira Ayuso, Harald Welte, Donald Hunter, David S . Miller,
Eric Dumazet, Paolo Abeni, Simon Horman, netdev,
osmocom-net-gprs, linux-kernel
Thanks Jakub
On Thu, Oct 8, 2026 at 4:48 AM Jakub Kicinski <kuba@kernel.org> wrote:
>
> On Thu, 1 Oct 2026 09:02:50 +0000 Anil Kaushik wrote:
> > 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.
>
> Do you have any plans to use this?
Yes. v2 adds a self test that uses the spec: it creates a gtp device, adds a
PDP context with newpdp, checks getpdp lists it, then delpdp removes it.
Writing it also surfaced a real bug in the driver (the get/dump replies put
the family id in the command field instead of a GTP_CMD_* value), so v2 is
now a small set of items: fix, spec, and the self test.
> Why send it as RFC and not PATCH?
I used RFC intentionally, to get feedback on whether a genetlink-legacy spec
for an older family was required.
Regards
Anil
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-08 18:09 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-01 9:02 [RFC net-next] netlink: specs: add genetlink-legacy spec for GTP Anil Kaushik
2026-10-07 23:18 ` Jakub Kicinski
2026-10-08 18:09 ` Anil Kaushik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®