xref: /linux/Documentation/netlink/specs/nlctrl.yaml (revision 70c29b35fd87f87a7b8dad6eb8d55ce54a0d549a)
1# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2---
3name: nlctrl
4protocol: genetlink-legacy
5uapi-header: linux/genetlink.h
6
7doc: |
8  genetlink meta-family that exposes information about all genetlink
9  families registered in the kernel (including itself).
10
11definitions:
12  -
13    name: op-flags
14    type: flags
15    enum-name:
16    entries:
17      - admin-perm
18      - cmd-cap-do
19      - cmd-cap-dump
20      - cmd-cap-haspol
21      - uns-admin-perm
22  -
23    name: attr-type
24    enum-name: netlink-attribute-type
25    type: enum
26    entries:
27      - invalid
28      - flag
29      - u8
30      - u16
31      - u32
32      - u64
33      - s8
34      - s16
35      - s32
36      - s64
37      - binary
38      - string
39      - nul-string
40      - nested
41      - nested-array
42      - bitfield32
43      - sint
44      - uint
45  -
46    name: policy-byte-order
47    doc: |
48      Byte order of an integer attribute. Zero is left unused so that it
49      can be taken to mean host byte order.
50    enum-name: netlink-policy-byte-order
51    type: enum
52    value-start: 1
53    entries:
54      - big-endian
55
56attribute-sets:
57  -
58    name: ctrl-attrs
59    name-prefix: ctrl-attr-
60    attributes:
61      -
62        name: family-id
63        type: u16
64      -
65        name: family-name
66        type: string
67      -
68        name: version
69        type: u32
70      -
71        name: hdrsize
72        type: u32
73      -
74        name: maxattr
75        type: u32
76      -
77        name: ops
78        type: indexed-array
79        sub-type: nest
80        nested-attributes: op-attrs
81      -
82        name: mcast-groups
83        type: indexed-array
84        sub-type: nest
85        nested-attributes: mcast-group-attrs
86      -
87        name: policy
88        type: nest-type-value
89        type-value: [policy-id, attr-id]
90        nested-attributes: policy-attrs
91      -
92        name: op-policy
93        type: nest-type-value
94        type-value: [op-id]
95        nested-attributes: op-policy-attrs
96      -
97        name: op
98        type: u32
99  -
100    name: mcast-group-attrs
101    name-prefix: ctrl-attr-mcast-grp-
102    enum-name:
103    attributes:
104      -
105        name: name
106        type: string
107      -
108        name: id
109        type: u32
110  -
111    name: op-attrs
112    name-prefix: ctrl-attr-op-
113    enum-name:
114    attributes:
115      -
116        name: id
117        type: u32
118      -
119        name: flags
120        type: u32
121        enum: op-flags
122        enum-as-flags: true
123  -
124    name: policy-attrs
125    name-prefix: nl-policy-type-attr-
126    enum-name:
127    attributes:
128      -
129        name: type
130        type: u32
131        enum: attr-type
132      -
133        name: min-value-s
134        type: s64
135      -
136        name: max-value-s
137        type: s64
138      -
139        name: min-value-u
140        type: u64
141      -
142        name: max-value-u
143        type: u64
144      -
145        name: min-length
146        type: u32
147      -
148        name: max-length
149        type: u32
150      -
151        name: policy-idx
152        type: u32
153      -
154        name: policy-maxtype
155        type: u32
156      -
157        name: bitfield32-mask
158        type: u32
159      -
160        name: pad
161        type: pad
162      -
163        name: mask
164        type: u64
165      -
166        name: byte-order
167        doc: Byte order of the attribute, absent means host byte order.
168        type: u32
169        enum: policy-byte-order
170  -
171    name: op-policy-attrs
172    name-prefix: ctrl-attr-policy-
173    enum-name:
174    attributes:
175      -
176        name: do
177        type: u32
178      -
179        name: dump
180        type: u32
181
182operations:
183  enum-model: directional
184  name-prefix: ctrl-cmd-
185  list:
186    -
187      name: getfamily
188      doc: Get / dump genetlink families
189      attribute-set: ctrl-attrs
190      do:
191        request:
192          value: 3
193          attributes:
194            - family-id
195            - family-name
196        reply: &all-attrs
197          value: 1
198          attributes:
199            - family-id
200            - family-name
201            - hdrsize
202            - maxattr
203            - mcast-groups
204            - ops
205            - version
206      dump:
207        reply: *all-attrs
208    -
209      name: getpolicy
210      doc: Get / dump genetlink policies
211      attribute-set: ctrl-attrs
212      dump:
213        request:
214          value: 10
215          attributes:
216            - family-name
217            - family-id
218            - op
219        reply:
220          value: 10
221          attributes:
222            - family-id
223            - op-policy
224            - policy
225