xref: /linux/Documentation/netlink/specs/rt-route.yaml (revision c36461825469a9ceee2346a2e89286c522525da7)
1# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2---
3name: rt-route
4protocol: netlink-raw
5uapi-header: linux/rtnetlink.h
6protonum: 0
7
8doc: >-
9  Route configuration over rtnetlink.
10
11definitions:
12  -
13    name: rtm-type
14    name-prefix: rtn-
15    enum-name:
16    type: enum
17    entries:
18      - unspec
19      - unicast
20      - local
21      - broadcast
22      - anycast
23      - multicast
24      - blackhole
25      - unreachable
26      - prohibit
27      - throw
28      - nat
29      - xresolve
30  -
31    name: rtmsg
32    type: struct
33    members:
34      -
35        name: rtm-family
36        type: u8
37      -
38        name: rtm-dst-len
39        type: u8
40      -
41        name: rtm-src-len
42        type: u8
43      -
44        name: rtm-tos
45        type: u8
46      -
47        name: rtm-table
48        type: u8
49      -
50        name: rtm-protocol
51        type: u8
52      -
53        name: rtm-scope
54        type: u8
55      -
56        name: rtm-type
57        type: u8
58        enum: rtm-type
59      -
60        name: rtm-flags
61        type: u32
62  -
63    name: rta-cacheinfo
64    type: struct
65    members:
66      -
67        name: rta-clntref
68        type: u32
69      -
70        name: rta-lastuse
71        type: u32
72      -
73        name: rta-expires
74        type: u32
75      -
76        name: rta-error
77        type: u32
78      -
79        name: rta-used
80        type: u32
81  -
82    name: del-reason
83    type: enum
84    name-prefix: rt-del-reason-
85    enum-name: rt-del-reason
86    doc: |
87      Why the kernel deleted a route. New causes may be appended. The
88      value space is family-agnostic, a value is never reinterpreted
89      per address family.
90    entries:
91      -
92        name: unspec
93        doc: The deletion path does not record a cause.
94      -
95        name: expired
96        doc: The RTF_EXPIRES lifetime ran out and the route was garbage
97          collected.
98      -
99        name: ra-withdrawn
100        doc: A Router Advertisement withdrew the route with a zero
101          lifetime.
102
103attribute-sets:
104  -
105    name: route-attrs
106    name-prefix: rta-
107    attributes:
108      -
109        name: dst
110        type: binary
111        display-hint: ipv4-or-v6
112      -
113        name: src
114        type: binary
115        display-hint: ipv4-or-v6
116      -
117        name: iif
118        type: u32
119      -
120        name: oif
121        type: u32
122      -
123        name: gateway
124        type: binary
125        display-hint: ipv4-or-v6
126      -
127        name: priority
128        type: u32
129      -
130        name: prefsrc
131        type: binary
132        display-hint: ipv4-or-v6
133      -
134        name: metrics
135        type: nest
136        nested-attributes: metrics
137      -
138        name: multipath
139        type: binary
140      -
141        name: protoinfo  # not used
142        type: binary
143      -
144        name: flow
145        type: u32
146      -
147        name: cacheinfo
148        type: binary
149        struct: rta-cacheinfo
150      -
151        name: session  # not used
152        type: binary
153      -
154        name: mp-algo  # not used
155        type: binary
156      -
157        name: table
158        type: u32
159      -
160        name: mark
161        type: u32
162      -
163        name: mfc-stats
164        type: binary
165      -
166        name: via
167        type: binary
168      -
169        name: newdst
170        type: binary
171      -
172        name: pref
173        type: u8
174      -
175        name: encap-type
176        type: u16
177      -
178        name: encap
179        type: binary  # tunnel specific nest
180      -
181        name: expires
182        type: u32
183      -
184        name: pad
185        type: binary
186      -
187        name: uid
188        type: u32
189      -
190        name: ttl-propagate
191        type: u8
192      -
193        name: ip-proto
194        type: u8
195      -
196        name: sport
197        type: u16
198      -
199        name: dport
200        type: u16
201      -
202        name: nh-id
203        type: u32
204      -
205        name: flowlabel
206        type: u32
207        byte-order: big-endian
208        display-hint: hex
209      -
210        name: del-reason
211        type: u32
212        enum: del-reason
213        doc: |
214          Emitted only on RTM_DELROUTE notifications, and only when the
215          deletion path records a cause. An absent attribute means
216          either an older kernel or a deletion path that does not
217          record its cause, consumers must treat absent and unspec
218          identically. Currently only IPv6 deletion paths record a
219          cause. The attribute is notification-only, the kernel rejects
220          it in requests.
221  -
222    name: metrics
223    name-prefix: rtax-
224    attributes:
225      -
226        name: unspec
227        type: unused
228        value: 0
229      -
230        name: lock
231        type: u32
232      -
233        name: mtu
234        type: u32
235      -
236        name: window
237        type: u32
238      -
239        name: rtt
240        type: u32
241      -
242        name: rttvar
243        type: u32
244      -
245        name: ssthresh
246        type: u32
247      -
248        name: cwnd
249        type: u32
250      -
251        name: advmss
252        type: u32
253      -
254        name: reordering
255        type: u32
256      -
257        name: hoplimit
258        type: u32
259      -
260        name: initcwnd
261        type: u32
262      -
263        name: features
264        type: u32
265      -
266        name: rto-min
267        type: u32
268      -
269        name: initrwnd
270        type: u32
271      -
272        name: quickack
273        type: u32
274      -
275        name: cc-algo
276        type: string
277      -
278        name: fastopen-no-cookie
279        type: u32
280
281operations:
282  enum-model: directional
283  fixed-header: rtmsg
284  name-prefix: rtm-
285  list:
286    -
287      name: getroute
288      doc: Dump route information.
289      attribute-set: route-attrs
290      do:
291        request:
292          value: 26
293          attributes:
294            - src
295            - dst
296            - iif
297            - oif
298            - ip-proto
299            - sport
300            - dport
301            - mark
302            - uid
303            - flowlabel
304        reply:
305          value: 24
306          attributes: &all-route-attrs
307            - dst
308            - src
309            - iif
310            - oif
311            - gateway
312            - priority
313            - prefsrc
314            - metrics
315            - multipath
316            - flow
317            - cacheinfo
318            - table
319            - mark
320            - mfc-stats
321            - via
322            - newdst
323            - pref
324            - encap-type
325            - encap
326            - expires
327            - pad
328            - uid
329            - ttl-propagate
330            - ip-proto
331            - sport
332            - dport
333            - nh-id
334            - flowlabel
335            - del-reason
336      dump:
337        request:
338          value: 26
339          attributes: []
340        reply:
341          value: 24
342          attributes: *all-route-attrs
343    -
344      name: newroute
345      doc: Create a new route
346      attribute-set: route-attrs
347      do:
348        request:
349          value: 24
350          attributes: &route-req-attrs
351            - dst
352            - src
353            - iif
354            - oif
355            - gateway
356            - priority
357            - prefsrc
358            - metrics
359            - multipath
360            - flow
361            - cacheinfo
362            - table
363            - mark
364            - mfc-stats
365            - via
366            - newdst
367            - pref
368            - encap-type
369            - encap
370            - expires
371            - pad
372            - uid
373            - ttl-propagate
374            - ip-proto
375            - sport
376            - dport
377            - nh-id
378            - flowlabel
379    -
380      name: delroute
381      doc: Delete an existing route
382      attribute-set: route-attrs
383      do:
384        request:
385          value: 25
386          attributes: *route-req-attrs
387    -
388      name: newroute-ntf
389      doc: Notification about a created route.
390      value: 24
391      notify: getroute
392    -
393      name: delroute-ntf
394      doc: Notification about a deleted route.
395      value: 25
396      notify: getroute
397
398mcast-groups:
399  list:
400    -
401      name: rtnlgrp-ipv4-route
402      value: 7
403    -
404      name: rtnlgrp-ipv6-route
405      value: 11
406