summaryrefslogtreecommitdiff
path: root/Documentation/netlink/specs/gtp.yaml
blob: b65e18ae5df24fa0015d6e3e2a24f1b3b6c1e945 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# 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
      flags: [uns-admin-perm]