diff options
author | Alexander Aring <alex.aring@gmail.com> | 2015-09-28 03:00:25 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2015-09-30 07:16:44 -0400 |
commit | a26c5fd7622d4951425131d54a8c99f076fe2068 (patch) | |
tree | 1a2a5c0db1ee837902382a48f655a61840a8cc73 /include/net/nl802154.h | |
parent | 1ee06ef1596dcc5858ea29ef9faf0f29e139dfcc (diff) |
nl802154: add support for security layer
This patch adds support for accessing mac802154 llsec implementation
over nl802154. I added for a new Kconfig entry to provide this
functionality CONFIG_IEEE802154_NL802154_EXPERIMENTAL. This interface is
still in development. It provides to change security parameters and
add/del/dump entries of security tables. Later we can add also a get to
get an entry by unique identifier.
Cc: Phoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de>
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'include/net/nl802154.h')
-rw-r--r-- | include/net/nl802154.h | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/include/net/nl802154.h b/include/net/nl802154.h index cf2713d8b975..32cb3e591e07 100644 --- a/include/net/nl802154.h +++ b/include/net/nl802154.h | |||
@@ -56,6 +56,22 @@ enum nl802154_commands { | |||
56 | 56 | ||
57 | /* add new commands above here */ | 57 | /* add new commands above here */ |
58 | 58 | ||
59 | #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL | ||
60 | NL802154_CMD_SET_SEC_PARAMS, | ||
61 | NL802154_CMD_GET_SEC_KEY, /* can dump */ | ||
62 | NL802154_CMD_NEW_SEC_KEY, | ||
63 | NL802154_CMD_DEL_SEC_KEY, | ||
64 | NL802154_CMD_GET_SEC_DEV, /* can dump */ | ||
65 | NL802154_CMD_NEW_SEC_DEV, | ||
66 | NL802154_CMD_DEL_SEC_DEV, | ||
67 | NL802154_CMD_GET_SEC_DEVKEY, /* can dump */ | ||
68 | NL802154_CMD_NEW_SEC_DEVKEY, | ||
69 | NL802154_CMD_DEL_SEC_DEVKEY, | ||
70 | NL802154_CMD_GET_SEC_LEVEL, /* can dump */ | ||
71 | NL802154_CMD_NEW_SEC_LEVEL, | ||
72 | NL802154_CMD_DEL_SEC_LEVEL, | ||
73 | #endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */ | ||
74 | |||
59 | /* used to define NL802154_CMD_MAX below */ | 75 | /* used to define NL802154_CMD_MAX below */ |
60 | __NL802154_CMD_AFTER_LAST, | 76 | __NL802154_CMD_AFTER_LAST, |
61 | NL802154_CMD_MAX = __NL802154_CMD_AFTER_LAST - 1 | 77 | NL802154_CMD_MAX = __NL802154_CMD_AFTER_LAST - 1 |
@@ -110,6 +126,18 @@ enum nl802154_attrs { | |||
110 | 126 | ||
111 | /* add attributes here, update the policy in nl802154.c */ | 127 | /* add attributes here, update the policy in nl802154.c */ |
112 | 128 | ||
129 | #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL | ||
130 | NL802154_ATTR_SEC_ENABLED, | ||
131 | NL802154_ATTR_SEC_OUT_LEVEL, | ||
132 | NL802154_ATTR_SEC_OUT_KEY_ID, | ||
133 | NL802154_ATTR_SEC_FRAME_COUNTER, | ||
134 | |||
135 | NL802154_ATTR_SEC_LEVEL, | ||
136 | NL802154_ATTR_SEC_DEVICE, | ||
137 | NL802154_ATTR_SEC_DEVKEY, | ||
138 | NL802154_ATTR_SEC_KEY, | ||
139 | #endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */ | ||
140 | |||
113 | __NL802154_ATTR_AFTER_LAST, | 141 | __NL802154_ATTR_AFTER_LAST, |
114 | NL802154_ATTR_MAX = __NL802154_ATTR_AFTER_LAST - 1 | 142 | NL802154_ATTR_MAX = __NL802154_ATTR_AFTER_LAST - 1 |
115 | }; | 143 | }; |
@@ -247,4 +275,167 @@ enum nl802154_supported_bool_states { | |||
247 | NL802154_SUPPORTED_BOOL_MAX = __NL802154_SUPPORTED_BOOL_AFTER_LAST - 1 | 275 | NL802154_SUPPORTED_BOOL_MAX = __NL802154_SUPPORTED_BOOL_AFTER_LAST - 1 |
248 | }; | 276 | }; |
249 | 277 | ||
278 | #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL | ||
279 | |||
280 | enum nl802154_dev_addr_modes { | ||
281 | NL802154_DEV_ADDR_NONE, | ||
282 | __NL802154_DEV_ADDR_INVALID, | ||
283 | NL802154_DEV_ADDR_SHORT, | ||
284 | NL802154_DEV_ADDR_EXTENDED, | ||
285 | |||
286 | /* keep last */ | ||
287 | __NL802154_DEV_ADDR_AFTER_LAST, | ||
288 | NL802154_DEV_ADDR_MAX = __NL802154_DEV_ADDR_AFTER_LAST - 1 | ||
289 | }; | ||
290 | |||
291 | enum nl802154_dev_addr_attrs { | ||
292 | NL802154_DEV_ADDR_ATTR_UNSPEC, | ||
293 | |||
294 | NL802154_DEV_ADDR_ATTR_PAN_ID, | ||
295 | NL802154_DEV_ADDR_ATTR_MODE, | ||
296 | NL802154_DEV_ADDR_ATTR_SHORT, | ||
297 | NL802154_DEV_ADDR_ATTR_EXTENDED, | ||
298 | |||
299 | /* keep last */ | ||
300 | __NL802154_DEV_ADDR_ATTR_AFTER_LAST, | ||
301 | NL802154_DEV_ADDR_ATTR_MAX = __NL802154_DEV_ADDR_ATTR_AFTER_LAST - 1 | ||
302 | }; | ||
303 | |||
304 | enum nl802154_key_id_modes { | ||
305 | NL802154_KEY_ID_MODE_IMPLICIT, | ||
306 | NL802154_KEY_ID_MODE_INDEX, | ||
307 | NL802154_KEY_ID_MODE_INDEX_SHORT, | ||
308 | NL802154_KEY_ID_MODE_INDEX_EXTENDED, | ||
309 | |||
310 | /* keep last */ | ||
311 | __NL802154_KEY_ID_MODE_AFTER_LAST, | ||
312 | NL802154_KEY_ID_MODE_MAX = __NL802154_KEY_ID_MODE_AFTER_LAST - 1 | ||
313 | }; | ||
314 | |||
315 | enum nl802154_key_id_attrs { | ||
316 | NL802154_KEY_ID_ATTR_UNSPEC, | ||
317 | |||
318 | NL802154_KEY_ID_ATTR_MODE, | ||
319 | NL802154_KEY_ID_ATTR_INDEX, | ||
320 | NL802154_KEY_ID_ATTR_IMPLICIT, | ||
321 | NL802154_KEY_ID_ATTR_SOURCE_SHORT, | ||
322 | NL802154_KEY_ID_ATTR_SOURCE_EXTENDED, | ||
323 | |||
324 | /* keep last */ | ||
325 | __NL802154_KEY_ID_ATTR_AFTER_LAST, | ||
326 | NL802154_KEY_ID_ATTR_MAX = __NL802154_KEY_ID_ATTR_AFTER_LAST - 1 | ||
327 | }; | ||
328 | |||
329 | enum nl802154_seclevels { | ||
330 | NL802154_SECLEVEL_NONE, | ||
331 | NL802154_SECLEVEL_MIC32, | ||
332 | NL802154_SECLEVEL_MIC64, | ||
333 | NL802154_SECLEVEL_MIC128, | ||
334 | NL802154_SECLEVEL_ENC, | ||
335 | NL802154_SECLEVEL_ENC_MIC32, | ||
336 | NL802154_SECLEVEL_ENC_MIC64, | ||
337 | NL802154_SECLEVEL_ENC_MIC128, | ||
338 | |||
339 | /* keep last */ | ||
340 | __NL802154_SECLEVEL_AFTER_LAST, | ||
341 | NL802154_SECLEVEL_MAX = __NL802154_SECLEVEL_AFTER_LAST - 1 | ||
342 | }; | ||
343 | |||
344 | enum nl802154_frames { | ||
345 | NL802154_FRAME_BEACON, | ||
346 | NL802154_FRAME_DATA, | ||
347 | NL802154_FRAME_ACK, | ||
348 | NL802154_FRAME_CMD, | ||
349 | |||
350 | /* keep last */ | ||
351 | __NL802154_FRAME_AFTER_LAST, | ||
352 | NL802154_FRAME_MAX = __NL802154_FRAME_AFTER_LAST - 1 | ||
353 | }; | ||
354 | |||
355 | enum nl802154_cmd_frames { | ||
356 | __NL802154_CMD_FRAME_INVALID, | ||
357 | NL802154_CMD_FRAME_ASSOC_REQUEST, | ||
358 | NL802154_CMD_FRAME_ASSOC_RESPONSE, | ||
359 | NL802154_CMD_FRAME_DISASSOC_NOTIFY, | ||
360 | NL802154_CMD_FRAME_DATA_REQUEST, | ||
361 | NL802154_CMD_FRAME_PAN_ID_CONFLICT_NOTIFY, | ||
362 | NL802154_CMD_FRAME_ORPHAN_NOTIFY, | ||
363 | NL802154_CMD_FRAME_BEACON_REQUEST, | ||
364 | NL802154_CMD_FRAME_COORD_REALIGNMENT, | ||
365 | NL802154_CMD_FRAME_GTS_REQUEST, | ||
366 | |||
367 | /* keep last */ | ||
368 | __NL802154_CMD_FRAME_AFTER_LAST, | ||
369 | NL802154_CMD_FRAME_MAX = __NL802154_CMD_FRAME_AFTER_LAST - 1 | ||
370 | }; | ||
371 | |||
372 | enum nl802154_seclevel_attrs { | ||
373 | NL802154_SECLEVEL_ATTR_UNSPEC, | ||
374 | |||
375 | NL802154_SECLEVEL_ATTR_LEVELS, | ||
376 | NL802154_SECLEVEL_ATTR_FRAME, | ||
377 | NL802154_SECLEVEL_ATTR_CMD_FRAME, | ||
378 | NL802154_SECLEVEL_ATTR_DEV_OVERRIDE, | ||
379 | |||
380 | /* keep last */ | ||
381 | __NL802154_SECLEVEL_ATTR_AFTER_LAST, | ||
382 | NL802154_SECLEVEL_ATTR_MAX = __NL802154_SECLEVEL_ATTR_AFTER_LAST - 1 | ||
383 | }; | ||
384 | |||
385 | /* TODO what is this? couldn't find in mib */ | ||
386 | enum { | ||
387 | NL802154_DEVKEY_IGNORE, | ||
388 | NL802154_DEVKEY_RESTRICT, | ||
389 | NL802154_DEVKEY_RECORD, | ||
390 | |||
391 | /* keep last */ | ||
392 | __NL802154_DEVKEY_AFTER_LAST, | ||
393 | NL802154_DEVKEY_MAX = __NL802154_DEVKEY_AFTER_LAST - 1 | ||
394 | }; | ||
395 | |||
396 | enum nl802154_dev { | ||
397 | NL802154_DEV_ATTR_UNSPEC, | ||
398 | |||
399 | NL802154_DEV_ATTR_FRAME_COUNTER, | ||
400 | NL802154_DEV_ATTR_PAN_ID, | ||
401 | NL802154_DEV_ATTR_SHORT_ADDR, | ||
402 | NL802154_DEV_ATTR_EXTENDED_ADDR, | ||
403 | NL802154_DEV_ATTR_SECLEVEL_EXEMPT, | ||
404 | NL802154_DEV_ATTR_KEY_MODE, | ||
405 | |||
406 | /* keep last */ | ||
407 | __NL802154_DEV_ATTR_AFTER_LAST, | ||
408 | NL802154_DEV_ATTR_MAX = __NL802154_DEV_ATTR_AFTER_LAST - 1 | ||
409 | }; | ||
410 | |||
411 | enum nl802154_devkey { | ||
412 | NL802154_DEVKEY_ATTR_UNSPEC, | ||
413 | |||
414 | NL802154_DEVKEY_ATTR_FRAME_COUNTER, | ||
415 | NL802154_DEVKEY_ATTR_EXTENDED_ADDR, | ||
416 | NL802154_DEVKEY_ATTR_ID, | ||
417 | |||
418 | /* keep last */ | ||
419 | __NL802154_DEVKEY_ATTR_AFTER_LAST, | ||
420 | NL802154_DEVKEY_ATTR_MAX = __NL802154_DEVKEY_ATTR_AFTER_LAST - 1 | ||
421 | }; | ||
422 | |||
423 | enum nl802154_key { | ||
424 | NL802154_KEY_ATTR_UNSPEC, | ||
425 | |||
426 | NL802154_KEY_ATTR_ID, | ||
427 | NL802154_KEY_ATTR_USAGE_FRAMES, | ||
428 | NL802154_KEY_ATTR_USAGE_CMDS, | ||
429 | NL802154_KEY_ATTR_BYTES, | ||
430 | |||
431 | /* keep last */ | ||
432 | __NL802154_KEY_ATTR_AFTER_LAST, | ||
433 | NL802154_KEY_ATTR_MAX = __NL802154_KEY_ATTR_AFTER_LAST - 1 | ||
434 | }; | ||
435 | |||
436 | #define NL802154_KEY_SIZE 16 | ||
437 | #define NL802154_CMD_FRAME_NR_IDS 256 | ||
438 | |||
439 | #endif /* CONFIG_IEEE802154_NL802154_EXPERIMENTAL */ | ||
440 | |||
250 | #endif /* __NL802154_H */ | 441 | #endif /* __NL802154_H */ |