1 # SPDX-License-Identifier: ((GPL-2.0 WITH Linu 1 # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 2 %YAML 1.2 2 %YAML 1.2 3 --- 3 --- 4 $id: http://kernel.org/schemas/netlink/genetli 4 $id: http://kernel.org/schemas/netlink/genetlink-legacy.yaml# 5 $schema: https://json-schema.org/draft-07/sche 5 $schema: https://json-schema.org/draft-07/schema 6 6 7 # Common defines 7 # Common defines 8 $defs: 8 $defs: 9 uint: 9 uint: 10 type: integer 10 type: integer 11 minimum: 0 11 minimum: 0 12 len-or-define: 12 len-or-define: 13 type: [ string, integer ] 13 type: [ string, integer ] 14 pattern: ^[0-9A-Za-z_-]+( - 1)?$ !! 14 pattern: ^[0-9A-Za-z_]+( - 1)?$ 15 minimum: 0 << 16 len-or-limit: << 17 # literal int or limit based on fixed-widt << 18 type: [ string, integer ] << 19 pattern: ^[su](8|16|32|64)-(min|max)$ << 20 minimum: 0 15 minimum: 0 21 16 22 # Schema for specs 17 # Schema for specs 23 title: Protocol 18 title: Protocol 24 description: Specification of a genetlink prot 19 description: Specification of a genetlink protocol 25 type: object 20 type: object 26 required: [ name, doc, attribute-sets, operati 21 required: [ name, doc, attribute-sets, operations ] 27 additionalProperties: False 22 additionalProperties: False 28 properties: 23 properties: 29 name: 24 name: 30 description: Name of the genetlink family. 25 description: Name of the genetlink family. 31 type: string 26 type: string 32 doc: 27 doc: 33 type: string 28 type: string >> 29 version: >> 30 description: Generic Netlink family version. Default is 1. >> 31 type: integer >> 32 minimum: 1 34 protocol: 33 protocol: 35 description: Schema compatibility level. D 34 description: Schema compatibility level. Default is "genetlink". 36 enum: [ genetlink ] 35 enum: [ genetlink ] 37 uapi-header: 36 uapi-header: 38 description: Path to the uAPI header, defa 37 description: Path to the uAPI header, default is linux/${family-name}.h 39 type: string 38 type: string 40 39 41 definitions: 40 definitions: 42 description: List of type and constant def 41 description: List of type and constant definitions (enums, flags, defines). 43 type: array 42 type: array 44 items: 43 items: 45 type: object 44 type: object 46 required: [ type, name ] 45 required: [ type, name ] 47 additionalProperties: False 46 additionalProperties: False 48 properties: 47 properties: 49 name: 48 name: 50 type: string 49 type: string 51 header: 50 header: 52 description: For C-compatible langua 51 description: For C-compatible languages, header which already defines this value. 53 type: string 52 type: string 54 type: 53 type: 55 enum: [ const, enum, flags ] 54 enum: [ const, enum, flags ] 56 doc: 55 doc: 57 type: string 56 type: string 58 # For const 57 # For const 59 value: 58 value: 60 description: For const - the value. 59 description: For const - the value. 61 type: [ string, integer ] 60 type: [ string, integer ] 62 # For enum and flags 61 # For enum and flags 63 value-start: 62 value-start: 64 description: For enum or flags the l 63 description: For enum or flags the literal initializer for the first value. 65 type: [ string, integer ] 64 type: [ string, integer ] 66 entries: 65 entries: 67 description: For enum or flags array 66 description: For enum or flags array of values. 68 type: array 67 type: array 69 items: 68 items: 70 oneOf: 69 oneOf: 71 - type: string 70 - type: string 72 - type: object 71 - type: object 73 required: [ name ] 72 required: [ name ] 74 additionalProperties: False 73 additionalProperties: False 75 properties: 74 properties: 76 name: 75 name: 77 type: string 76 type: string 78 value: 77 value: 79 type: integer 78 type: integer 80 doc: 79 doc: 81 type: string 80 type: string 82 render-max: 81 render-max: 83 description: Render the max members 82 description: Render the max members for this enum. 84 type: boolean 83 type: boolean 85 84 86 attribute-sets: 85 attribute-sets: 87 description: Definition of attribute space 86 description: Definition of attribute spaces for this family. 88 type: array 87 type: array 89 items: 88 items: 90 description: Definition of a single attr 89 description: Definition of a single attribute space. 91 type: object 90 type: object 92 required: [ name, attributes ] 91 required: [ name, attributes ] 93 additionalProperties: False 92 additionalProperties: False 94 properties: 93 properties: 95 name: 94 name: 96 description: | 95 description: | 97 Name used when referring to this s 96 Name used when referring to this space in other definitions, not used outside of the spec. 98 type: string 97 type: string 99 name-prefix: 98 name-prefix: 100 description: | 99 description: | 101 Prefix for the C enum name of the 100 Prefix for the C enum name of the attributes. Default family[name]-set[name]-a- 102 type: string 101 type: string 103 enum-name: 102 enum-name: 104 description: Name for the enum type 103 description: Name for the enum type of the attribute. 105 type: string 104 type: string 106 doc: 105 doc: 107 description: Documentation of the sp 106 description: Documentation of the space. 108 type: string 107 type: string 109 subset-of: 108 subset-of: 110 description: | 109 description: | 111 Name of another space which this i 110 Name of another space which this is a logical part of. Sub-spaces can be used to define 112 a limited group of attributes whic 111 a limited group of attributes which are used in a nest. 113 type: string 112 type: string 114 attributes: 113 attributes: 115 description: List of attributes in t 114 description: List of attributes in the space. 116 type: array 115 type: array 117 items: 116 items: 118 type: object 117 type: object 119 required: [ name ] !! 118 required: [ name, type ] 120 additionalProperties: False 119 additionalProperties: False 121 properties: 120 properties: 122 name: 121 name: 123 type: string 122 type: string 124 type: &attr-type 123 type: &attr-type 125 enum: [ unused, pad, flag, bin !! 124 enum: [ unused, pad, flag, binary, u8, u16, u32, u64, s32, s64, 126 uint, sint, u8, u16, u !! 125 string, nest, array-nest, nest-type-value ] 127 string, nest, indexed- << 128 doc: 126 doc: 129 description: Documentation of 127 description: Documentation of the attribute. 130 type: string 128 type: string 131 value: 129 value: 132 description: Value for the enu 130 description: Value for the enum item representing this attribute in the uAPI. 133 $ref: '#/$defs/uint' 131 $ref: '#/$defs/uint' 134 type-value: 132 type-value: 135 description: Name of the value 133 description: Name of the value extracted from the type of a nest-type-value attribute. 136 type: array 134 type: array 137 items: 135 items: 138 type: string 136 type: string 139 byte-order: 137 byte-order: 140 enum: [ little-endian, big-end 138 enum: [ little-endian, big-endian ] 141 multi-attr: 139 multi-attr: 142 type: boolean 140 type: boolean 143 nested-attributes: 141 nested-attributes: 144 description: Name of the space 142 description: Name of the space (sub-space) used inside the attribute. 145 type: string 143 type: string 146 enum: 144 enum: 147 description: Name of the enum 145 description: Name of the enum type used for the attribute. 148 type: string 146 type: string 149 enum-as-flags: 147 enum-as-flags: 150 description: | 148 description: | 151 Treat the enum as flags. In 149 Treat the enum as flags. In most cases enum is either used as flags or as values. 152 Sometimes, however, both for 150 Sometimes, however, both forms are necessary, in which case header contains the enum 153 form while specific attribut 151 form while specific attributes may request to convert the values into a bitfield. 154 type: boolean 152 type: boolean 155 checks: 153 checks: 156 description: Kernel input vali 154 description: Kernel input validation. 157 type: object 155 type: object 158 additionalProperties: False 156 additionalProperties: False 159 properties: 157 properties: 160 flags-mask: 158 flags-mask: 161 description: Name of the f 159 description: Name of the flags constant on which to base mask (unsigned scalar types only). 162 type: string 160 type: string 163 min: 161 min: 164 description: Min value for 162 description: Min value for an integer attribute. 165 $ref: '#/$defs/len-or-limi !! 163 type: integer 166 max: << 167 description: Max value for << 168 $ref: '#/$defs/len-or-limi << 169 min-len: 164 min-len: 170 description: Min length fo 165 description: Min length for a binary attribute. 171 $ref: '#/$defs/len-or-defi 166 $ref: '#/$defs/len-or-define' 172 max-len: 167 max-len: 173 description: Max length fo 168 description: Max length for a string or a binary attribute. 174 $ref: '#/$defs/len-or-defi 169 $ref: '#/$defs/len-or-define' 175 exact-len: << 176 description: Exact length << 177 $ref: '#/$defs/len-or-defi << 178 sub-type: *attr-type 170 sub-type: *attr-type 179 display-hint: &display-hint << 180 description: | << 181 Optional format indicator th << 182 the right formatting mechani << 183 type. << 184 enum: [ hex, mac, fddi, ipv4, << 185 171 186 # Make sure name-prefix does not appear 172 # Make sure name-prefix does not appear in subsets (subsets inherit naming) 187 dependencies: 173 dependencies: 188 name-prefix: 174 name-prefix: 189 not: 175 not: 190 required: [ subset-of ] 176 required: [ subset-of ] 191 subset-of: 177 subset-of: 192 not: 178 not: 193 required: [ name-prefix ] 179 required: [ name-prefix ] 194 180 195 # type property is only required if not << 196 if: << 197 properties: << 198 subset-of: << 199 not: << 200 type: string << 201 then: << 202 properties: << 203 attributes: << 204 items: << 205 required: [ type ] << 206 << 207 operations: 181 operations: 208 description: Operations supported by the p 182 description: Operations supported by the protocol. 209 type: object 183 type: object 210 required: [ list ] 184 required: [ list ] 211 additionalProperties: False 185 additionalProperties: False 212 properties: 186 properties: 213 enum-model: 187 enum-model: 214 description: | 188 description: | 215 The model of assigning values to the 189 The model of assigning values to the operations. 216 "unified" is the recommended model w 190 "unified" is the recommended model where all message types belong 217 to a single enum. 191 to a single enum. 218 "directional" has the messages sent 192 "directional" has the messages sent to the kernel and from the kernel 219 enumerated separately. 193 enumerated separately. 220 enum: [ unified ] 194 enum: [ unified ] 221 name-prefix: 195 name-prefix: 222 description: | 196 description: | 223 Prefix for the C enum name of the co 197 Prefix for the C enum name of the command. The name is formed by concatenating 224 the prefix with the upper case name 198 the prefix with the upper case name of the command, with dashes replaced by underscores. 225 type: string 199 type: string 226 enum-name: 200 enum-name: 227 description: Name for the enum type wi 201 description: Name for the enum type with commands. 228 type: string 202 type: string 229 async-prefix: 203 async-prefix: 230 description: Same as name-prefix but u 204 description: Same as name-prefix but used to render notifications and events to separate enum. 231 type: string 205 type: string 232 async-enum: 206 async-enum: 233 description: Name for the enum type wi 207 description: Name for the enum type with notifications/events. 234 type: string 208 type: string 235 list: 209 list: 236 description: List of commands 210 description: List of commands 237 type: array 211 type: array 238 items: 212 items: 239 type: object 213 type: object 240 additionalProperties: False 214 additionalProperties: False 241 required: [ name, doc ] 215 required: [ name, doc ] 242 properties: 216 properties: 243 name: 217 name: 244 description: Name of the operati 218 description: Name of the operation, also defining its C enum value in uAPI. 245 type: string 219 type: string 246 doc: 220 doc: 247 description: Documentation for t 221 description: Documentation for the command. 248 type: string 222 type: string 249 value: 223 value: 250 description: Value for the enum 224 description: Value for the enum in the uAPI. 251 $ref: '#/$defs/uint' 225 $ref: '#/$defs/uint' 252 attribute-set: 226 attribute-set: 253 description: | 227 description: | 254 Attribute space from which att 228 Attribute space from which attributes directly in the requests and replies 255 to this command are defined. 229 to this command are defined. 256 type: string 230 type: string 257 flags: &cmd_flags 231 flags: &cmd_flags 258 description: Command flags. 232 description: Command flags. 259 type: array 233 type: array 260 items: 234 items: 261 enum: [ admin-perm ] 235 enum: [ admin-perm ] 262 dont-validate: 236 dont-validate: 263 description: Kernel attribute va 237 description: Kernel attribute validation flags. 264 type: array 238 type: array 265 items: 239 items: 266 enum: [ strict, dump, dump-str !! 240 enum: [ strict, dump ] 267 config-cond: << 268 description: | << 269 Name of the kernel config opti << 270 the operation, without the 'CO << 271 type: string << 272 do: &subop-type 241 do: &subop-type 273 description: Main command handle 242 description: Main command handler. 274 type: object 243 type: object 275 additionalProperties: False 244 additionalProperties: False 276 properties: 245 properties: 277 request: &subop-attr-list 246 request: &subop-attr-list 278 description: Definition of t 247 description: Definition of the request message for a given command. 279 type: object 248 type: object 280 additionalProperties: False 249 additionalProperties: False 281 properties: 250 properties: 282 attributes: 251 attributes: 283 description: | 252 description: | 284 Names of attributes fr 253 Names of attributes from the attribute-set (not full attribute 285 definitions, just name 254 definitions, just names). 286 type: array 255 type: array 287 items: 256 items: 288 type: string 257 type: string 289 reply: *subop-attr-list 258 reply: *subop-attr-list 290 pre: 259 pre: 291 description: Hook for a func 260 description: Hook for a function to run before the main callback (pre_doit or start). 292 type: string 261 type: string 293 post: 262 post: 294 description: Hook for a func 263 description: Hook for a function to run after the main callback (post_doit or done). 295 type: string 264 type: string 296 dump: *subop-type 265 dump: *subop-type 297 notify: 266 notify: 298 description: Name of the command 267 description: Name of the command sharing the reply type with this notification. 299 type: string 268 type: string 300 event: 269 event: 301 type: object 270 type: object 302 additionalProperties: False 271 additionalProperties: False 303 properties: 272 properties: 304 attributes: 273 attributes: 305 description: Explicit list o 274 description: Explicit list of the attributes for the notification. 306 type: array 275 type: array 307 items: 276 items: 308 type: string 277 type: string 309 mcgrp: 278 mcgrp: 310 description: Name of the multica 279 description: Name of the multicast group generating given notification. 311 type: string 280 type: string 312 mcast-groups: 281 mcast-groups: 313 description: List of multicast groups. 282 description: List of multicast groups. 314 type: object 283 type: object 315 required: [ list ] 284 required: [ list ] 316 additionalProperties: False 285 additionalProperties: False 317 properties: 286 properties: 318 list: 287 list: 319 description: List of groups. 288 description: List of groups. 320 type: array 289 type: array 321 items: 290 items: 322 type: object 291 type: object 323 required: [ name ] 292 required: [ name ] 324 additionalProperties: False 293 additionalProperties: False 325 properties: 294 properties: 326 name: 295 name: 327 description: | 296 description: | 328 The name for the group, used t 297 The name for the group, used to form the define and the value of the define. 329 type: string 298 type: string 330 flags: *cmd_flags 299 flags: *cmd_flags 331 << 332 kernel-family: << 333 description: Additional global attributes << 334 type: object << 335 additionalProperties: False << 336 properties: << 337 headers: << 338 description: | << 339 List of extra headers which should b << 340 of the generated code. << 341 type: array << 342 items: << 343 type: string << 344 sock-priv: << 345 description: | << 346 Literal name of the type which is us << 347 to store the socket state. The type << 348 to the kernel, and is not defined in << 349 type: string <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.