1 # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
4 $id: http://kernel.org/schemas/netlink/genetlink-legacy.yaml#
5 $schema: https://json-schema.org/draft-07/schema
13 type: [ string, integer ]
14 pattern: ^[0-9A-Za-z_-]+( - 1)?$
17 # literal int or limit based on fixed-width type e.g. u8-min, u16-max, etc.
18 type: [ string, integer ]
19 pattern: ^[su](8|16|32|64)-(min|max)$
24 description: Specification of a genetlink protocol
26 required: [ name, doc, attribute-sets, operations ]
27 additionalProperties: False
30 description: Name of the genetlink family.
35 description: Schema compatibility level. Default is "genetlink".
36 enum: [ genetlink, genetlink-c, genetlink-legacy ] # Trim
38 description: Path to the uAPI header, default is linux/${family-name}.h
42 description: Name of the define for the family name.
45 description: Name of the define for the version of the family.
48 description: Makes the number of attributes and commands be specified by a define, not an enum value.
51 description: Name of the define for the last operation in the list.
54 description: The explicit name for constant holding the count of operations (last operation + 1).
57 # Start genetlink-legacy
60 Defines if the input policy in the kernel is global, per-operation, or split per operation type.
62 enum: [ split, per-op, global ]
64 description: Generic Netlink family version. Default is 1.
67 # End genetlink-legacy
70 description: List of type and constant definitions (enums, flags, defines).
74 required: [ type, name ]
75 additionalProperties: False
80 description: For C-compatible languages, header which already defines this value.
83 enum: [ const, enum, flags, struct ] # Trim
88 description: For const - the value.
89 type: [ string, integer ]
92 description: For enum or flags the literal initializer for the first value.
93 type: [ string, integer ]
95 description: For enum or flags array of values.
102 additionalProperties: False
111 description: Render the max members for this enum.
115 description: Name for enum, if empty no name will be used.
116 type: [ string, "null" ]
118 description: For enum the prefix of the values, optional.
121 # Start genetlink-legacy
123 description: List of struct members. Only scalars and strings members allowed.
127 required: [ name, type ]
128 additionalProperties: False
133 description: The netlink attribute type
134 enum: [ u8, u16, u32, u64, s8, s16, s32, s64, string, binary ]
136 $ref: '#/$defs/len-or-define'
138 enum: [ little-endian, big-endian ]
140 description: Documentation for the struct member attribute.
143 description: Name of the enum type used for the attribute.
145 display-hint: &display-hint
147 Optional format indicator that is intended only for choosing
148 the right formatting mechanism when displaying values of this
150 enum: [ hex, mac, fddi, ipv4, ipv6, uuid ]
151 # End genetlink-legacy
154 description: Definition of attribute spaces for this family.
157 description: Definition of a single attribute space.
159 required: [ name, attributes ]
160 additionalProperties: False
164 Name used when referring to this space in other definitions, not used outside of the spec.
168 Prefix for the C enum name of the attributes. Default family[name]-set[name]-a-
172 Name for the enum type of the attribute, if empty no name will be used.
173 type: [ string, "null" ]
175 description: Documentation of the space.
179 Name of another space which this is a logical part of. Sub-spaces can be used to define
180 a limited group of attributes which are used in a nest.
184 description: The explicit name for constant holding the count of attributes (last attr + 1).
187 description: The explicit name for last member of attribute enum.
191 description: List of attributes in the space.
196 additionalProperties: False
201 description: The netlink attribute type
202 enum: [ unused, pad, flag, binary, bitfield32,
203 uint, sint, u8, u16, u32, u64, s32, s64,
204 string, nest, indexed-array, nest-type-value ]
206 description: Documentation of the attribute.
209 description: Value for the enum item representing this attribute in the uAPI.
212 description: Name of the value extracted from the type of a nest-type-value attribute.
217 enum: [ little-endian, big-endian ]
221 description: Name of the space (sub-space) used inside the attribute.
224 description: Name of the enum type used for the attribute.
228 Treat the enum as flags. In most cases enum is either used as flags or as values.
229 Sometimes, however, both forms are necessary, in which case header contains the enum
230 form while specific attributes may request to convert the values into a bitfield.
233 description: Kernel input validation.
235 additionalProperties: False
238 description: Name of the flags constant on which to base mask (unsigned scalar types only).
241 description: Min value for an integer attribute.
242 $ref: '#/$defs/len-or-limit'
244 description: Max value for an integer attribute.
245 $ref: '#/$defs/len-or-limit'
247 description: Min length for a binary attribute.
248 $ref: '#/$defs/len-or-define'
250 description: Max length for a string or a binary attribute.
251 $ref: '#/$defs/len-or-define'
253 description: Exact length for a string or a binary attribute.
254 $ref: '#/$defs/len-or-define'
257 For string attributes, do not check whether attribute
258 contains the terminating null character.
261 display-hint: *display-hint
266 # Start genetlink-legacy
268 description: Name of the struct type used for the attribute.
270 # End genetlink-legacy
272 # Make sure name-prefix does not appear in subsets (subsets inherit naming)
276 required: [ subset-of ]
279 required: [ name-prefix ]
281 # type property is only required if not in subset definition
294 description: Operations supported by the protocol.
297 additionalProperties: False
301 The model of assigning values to the operations.
302 "unified" is the recommended model where all message types belong
304 "directional" has the messages sent to the kernel and from the kernel
305 enumerated separately.
306 enum: [ unified, directional ] # Trim
309 Prefix for the C enum name of the command. The name is formed by concatenating
310 the prefix with the upper case name of the command, with dashes replaced by underscores.
314 Name for the enum type with commands, if empty no name will be used.
315 type: [ string, "null" ]
317 description: Same as name-prefix but used to render notifications and events to separate enum.
321 Name for the enum type with commands, if empty no name will be used.
322 type: [ string, "null" ]
323 # Start genetlink-legacy
324 fixed-header: &fixed-header
326 Name of the structure defining the optional fixed-length protocol
327 header. This header is placed in a message after the netlink and
328 genetlink headers and before any attributes.
330 # End genetlink-legacy
332 description: List of commands
336 additionalProperties: False
337 required: [ name, doc ]
340 description: Name of the operation, also defining its C enum value in uAPI.
343 description: Documentation for the command.
346 description: Value for the enum in the uAPI.
350 Attribute space from which attributes directly in the requests and replies
351 to this command are defined.
354 description: Command flags.
357 enum: [ admin-perm, uns-admin-perm ]
359 description: Kernel attribute validation flags.
362 enum: [ strict, dump, dump-strict ]
365 Name of the kernel config option gating the presence of
366 the operation, without the 'CONFIG_' prefix.
368 # Start genetlink-legacy
369 fixed-header: *fixed-header
370 # End genetlink-legacy
372 description: Main command handler.
374 additionalProperties: False
376 request: &subop-attr-list
377 description: Definition of the request message for a given command.
379 additionalProperties: False
383 Names of attributes from the attribute-set (not full attribute
384 definitions, just names).
388 # Start genetlink-legacy
391 ID of this message if value for request and response differ,
392 i.e. requests and responses have different message enums.
394 # End genetlink-legacy
395 reply: *subop-attr-list
397 description: Hook for a function to run before the main callback (pre_doit or start).
400 description: Hook for a function to run after the main callback (post_doit or done).
404 description: Name of the command sharing the reply type with this notification.
408 additionalProperties: False
411 description: Explicit list of the attributes for the notification.
416 description: Name of the multicast group generating given notification.
419 description: List of multicast groups.
422 additionalProperties: False
425 description: List of groups.
430 additionalProperties: False
434 The name for the group, used to form the define and the value of the define.
438 description: Override for the name of the define in C uAPI.
444 description: Additional global attributes used for kernel C code generation.
446 additionalProperties: False
450 List of extra headers which should be included in the source
451 of the generated code.
457 Literal name of the type which is used within the kernel
458 to store the socket state. The type / structure is internal
459 to the kernel, and is not defined in the spec.