xref: /linux/Documentation/netlink/specs/rt-rule.yaml (revision 23ca32e4ead48f68e37000f2552b973ef1439acb)
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: u32
100      -
101        name: src
102        type: u32
103      -
104        name: iifname
105        type: string
106      -
107        name: goto
108        type: u32
109      -
110        name: unused2
111        type: pad
112      -
113        name: priority
114        type: u32
115      -
116        name: unused3
117        type: pad
118      -
119        name: unused4
120        type: pad
121      -
122        name: unused5
123        type: pad
124      -
125        name: fwmark
126        type: u32
127        display-hint: hex
128      -
129        name: flow
130        type: u32
131      -
132        name: tun-id
133        type: u64
134      -
135        name: suppress-ifgroup
136        type: u32
137      -
138        name: suppress-prefixlen
139        type: u32
140        display-hint: hex
141      -
142        name: table
143        type: u32
144      -
145        name: fwmask
146        type: u32
147        display-hint: hex
148      -
149        name: oifname
150        type: string
151      -
152        name: pad
153        type: pad
154      -
155        name: l3mdev
156        type: u8
157      -
158        name: uid-range
159        type: binary
160        struct: fib-rule-uid-range
161      -
162        name: protocol
163        type: u8
164      -
165        name: ip-proto
166        type: u8
167      -
168        name: sport-range
169        type: binary
170        struct: fib-rule-port-range
171      -
172        name: dport-range
173        type: binary
174        struct: fib-rule-port-range
175      -
176        name: dscp
177        type: u8
178      -
179        name: flowlabel
180        type: u32
181        byte-order: big-endian
182        display-hint: hex
183      -
184        name: flowlabel-mask
185        type: u32
186        byte-order: big-endian
187        display-hint: hex
188      -
189        name: sport-mask
190        type: u16
191        display-hint: hex
192      -
193        name: dport-mask
194        type: u16
195        display-hint: hex
196      -
197        name: dscp-mask
198        type: u8
199        display-hint: hex
200
201operations:
202  enum-model: directional
203  fixed-header: fib-rule-hdr
204  name-prefix: rtm-
205  list:
206    -
207      name: newrule
208      doc: Add new FIB rule
209      attribute-set: fib-rule-attrs
210      do:
211        request:
212          value: 32
213          attributes: &fib-rule-all
214            - iifname
215            - oifname
216            - priority
217            - fwmark
218            - flow
219            - tun-id
220            - fwmask
221            - table
222            - suppress-prefixlen
223            - suppress-ifgroup
224            - goto
225            - l3mdev
226            - uid-range
227            - protocol
228            - ip-proto
229            - sport-range
230            - dport-range
231            - dscp
232            - flowlabel
233            - flowlabel-mask
234            - sport-mask
235            - dport-mask
236            - dscp-mask
237    -
238      name: newrule-ntf
239      doc: Notify a rule creation
240      value: 32
241      notify: getrule
242    -
243      name: delrule
244      doc: Remove an existing FIB rule
245      attribute-set: fib-rule-attrs
246      do:
247        request:
248          value: 33
249          attributes: *fib-rule-all
250    -
251      name: delrule-ntf
252      doc: Notify a rule deletion
253      value: 33
254      notify: getrule
255    -
256      name: getrule
257      doc: Dump all FIB rules
258      attribute-set: fib-rule-attrs
259      dump:
260        request:
261          value: 34
262        reply:
263          value: 32
264          attributes: *fib-rule-all
265
266mcast-groups:
267  list:
268    -
269      name: rtnlgrp-ipv4-rule
270      value: 8
271    -
272      name: rtnlgrp-ipv6-rule
273      value: 19
274