# 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. The kernel registers the family with version 0, which the genetlink-legacy schema cannot express. The notifications multicast on the "gtp" group are not described: PDP context additions and deletions, and GTP-U echo responses, reuse the NEWPDP, DELPDP and ECHOREQ command values of the requests. kernel-policy: global definitions: - type: enum name: version name-prefix: gtp- enum-name: gtp-version header: linux/gtp.h entries: [v0, v1] 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 enum: version doc: GTP version of the context, GTPv0 or 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: min-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: min-len: 16 byte-order: big-endian display-hint: ipv6 doc: | IPv6 prefix of the mobile subscriber served by the context: a /64 prefix, with the lower 64 bits set to zero. - name: family type: u8 doc: | Address family (AF_INET or AF_INET6) of ms-address or ms-addr6, AF_INET when absent. The peer address uses the family of the tunnel socket. 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-find attributes: - link - version - tid - ms-address - ms-addr6 - i-tei - family - net-ns-fd - name: getpdp doc: Get or dump one or more PDP contexts. attribute-set: gtp dont-validate: [strict, dump] flags: [admin-perm] do: request: *pdp-find reply: &pdp-reply attributes: - link - 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. ms-address is not a mobile subscriber address here, but the local IPv4 address used as source of the request. attribute-set: gtp dont-validate: [strict, dump] flags: [admin-perm] do: request: attributes: - link - version - peer-address - ms-address - net-ns-fd mcast-groups: list: - name: gtp