xref: /linux/Documentation/netlink/specs/rt-rule.yaml (revision 6dfafbd0299a60bfb5d5e277fdf100037c7ded07)
1# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2---
3name: rt-rule
4protocol: netlink-raw
5uapi-header: linux/fib_rules.h
6protonum: 0
7
8doc: >-
9  FIB rule management over rtnetlink.
10
11definitions:
12  -
13    name: rtgenmsg
14    type: struct
15    members:
16      -
17        name: family
18        type: u8
19      -
20        name: pad
21        type: pad
22        len: 3
23  -
24    name: fib-rule-hdr
25    type: struct
26    members:
27      -
28        name: family
29        type: u8
30      -
31        name: dst-len
32        type: u8
33      -
34        name: src-len
35        type: u8
36      -
37        name: tos
38        type: u8
39      -
40        name: table
41        type: u8
42      -
43        name: res1
44        type: pad
45        len: 1
46      -
47        name: res2
48        type: pad
49        len: 1
50      -
51        name: action
52        type: u8
53        enum: fr-act
54      -
55        name: flags
56        type: u32
57  -
58    name: fr-act
59    type: enum
60    enum-name:
61    entries:
62      - unspec
63      - to-tbl
64      - goto
65      - nop
66      - res3
67      - res4
68      - blackhole
69      - unreachable
70      - prohibit
71  -
72    name: fib-rule-port-range
73    type: struct
74    members:
75      -
76        name: start
77        type: u16
78      -
79        name: end
80        type: u16
81  -
82    name: fib-rule-uid-range
83    type: struct
84    members:
85      -
86        name: start
87        type: u32
88      -
89        name: end
90        type: u32
91
92attribute-sets:
93  -
94    name: fib-rule-attrs
95    name-prefix: fra-
96    attributes:
97      -
98        name: dst
99        type: binary
100        display-hint: ipv4-or-v6
101      -
102        name: src
103        type: binary
104        display-hint: ipv4-or-v6
105      -
106        name: iifname
107        type: string
108      -
109        name: goto
110        type: u32
111      -
112        name: unused2
113        type: pad
114      -
115        name: priority
116        type: u32
117      -
118        name: unused3
119        type: pad
120      -
121        name: unused4
122        type: pad
123      -
124        name: unused5
125        type: pad
126      -
127        name: fwmark
128        type: u32
129        display-hint: hex
130      -
131        name: flow
132        type: u32
133      -
134        name: tun-id
135        type: u64
136      -
137        name: suppress-ifgroup
138        type: u32
139      -
140        name: suppress-prefixlen
141        type: u32
142        display-hint: hex
143      -
144        name: table
145        type: u32
146      -
147        name: fwmask
148        type: u32
149        display-hint: hex
150      -
151        name: oifname
152        type: string
153      -
154        name: pad
155        type: pad
156      -
157        name: l3mdev
158        type: u8
159      -
160        name: uid-range
161        type: binary
162        struct: fib-rule-uid-range
163      -
164        name: protocol
165        type: u8
166      -
167        name: ip-proto
168        type: u8
169      -
170        name: sport-range
171        type: binary
172        struct: fib-rule-port-range
173      -
174        name: dport-range
175        type: binary
176        struct: fib-rule-port-range
177      -
178        name: dscp
179        type: u8
180      -
181        name: flowlabel
182        type: u32
183        byte-order: big-endian
184        display-hint: hex
185      -
186        name: flowlabel-mask
187        type: u32
188        byte-order: big-endian
189        display-hint: hex
190      -
191        name: sport-mask
192        type: u16
193        display-hint: hex
194      -
195        name: dport-mask
196        type: u16
197        display-hint: hex
198      -
199        name: dscp-mask
200        type: u8
201        display-hint: hex
202
203operations:
204  enum-model: directional
205  fixed-header: fib-rule-hdr
206  name-prefix: rtm-
207  list:
208    -
209      name: newrule
210      doc: Add new FIB rule
211      attribute-set: fib-rule-attrs
212      do:
213        request:
214          value: 32
215          attributes: &fib-rule-all
216            - iifname
217            - oifname
218            - priority
219            - fwmark
220            - flow
221            - tun-id
222            - fwmask
223            - table
224            - suppress-prefixlen
225            - suppress-ifgroup
226            - goto
227            - l3mdev
228            - uid-range
229            - protocol
230            - ip-proto
231            - sport-range
232            - dport-range
233            - dscp
234            - flowlabel
235            - flowlabel-mask
236            - sport-mask
237            - dport-mask
238            - dscp-mask
239    -
240      name: newrule-ntf
241      doc: Notify a rule creation
242      value: 32
243      notify: getrule
244    -
245      name: delrule
246      doc: Remove an existing FIB rule
247      attribute-set: fib-rule-attrs
248      do:
249        request:
250          value: 33
251          attributes: *fib-rule-all
252    -
253      name: delrule-ntf
254      doc: Notify a rule deletion
255      value: 33
256      notify: getrule
257    -
258      name: getrule
259      doc: Dump all FIB rules
260      attribute-set: fib-rule-attrs
261      dump:
262        request:
263          value: 34
264        reply:
265          value: 32
266          attributes: *fib-rule-all
267
268mcast-groups:
269  list:
270    -
271      name: rtnlgrp-ipv4-rule
272      value: 8
273    -
274      name: rtnlgrp-ipv6-rule
275      value: 19
276