1/*
2 * IEEE Std 802.1X-2010 definitions
3 * Copyright (c) 2013-2014, Qualcomm Atheros, Inc.
4 *
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
7 */
8
9#ifndef IEEE802_1X_DEFS_H
10#define IEEE802_1X_DEFS_H
11
12#define CS_ID_LEN		8
13#define CS_ID_GCM_AES_128	0x0080020001000001ULL
14#define CS_NAME_GCM_AES_128	"GCM-AES-128"
15#define CS_ID_GCM_AES_256	0x0080c20001000002ULL
16#define CS_NAME_GCM_AES_256	"GCM-AES-256"
17
18enum macsec_policy {
19	/**
20	 * Should secure sessions.
21	 * This accepts key server's advice to determine whether to secure the
22	 * session or not.
23	 */
24	SHOULD_SECURE,
25
26	/**
27	 * Disabled MACsec - do not secure sessions.
28	 */
29	DO_NOT_SECURE,
30
31	/**
32	 * Should secure sessions, and try to use encryption.
33	 * Like @SHOULD_SECURE, this follows the key server's decision.
34	 */
35	SHOULD_ENCRYPT,
36};
37
38
39/* IEEE Std 802.1X-2010 - Table 11-6 - MACsec Capability */
40enum macsec_cap {
41	/**
42	 * MACsec is not implemented
43	 */
44	MACSEC_CAP_NOT_IMPLEMENTED,
45
46	/**
47	 * 'Integrity without confidentiality'
48	 */
49	MACSEC_CAP_INTEGRITY,
50
51	/**
52	 * 'Integrity without confidentiality' and
53	 * 'Integrity and confidentiality' with a confidentiality offset of 0
54	 */
55	MACSEC_CAP_INTEG_AND_CONF,
56
57	/**
58	 * 'Integrity without confidentiality' and
59	 * 'Integrity and confidentiality' with a confidentiality offset of 0,
60	 * 30, 50
61	 */
62	MACSEC_CAP_INTEG_AND_CONF_0_30_50,
63};
64
65enum validate_frames {
66	Disabled,
67	Checked,
68	Strict,
69};
70
71/* IEEE Std 802.1X-2010 - Table 11-6 - Confidentiality Offset */
72enum confidentiality_offset {
73	CONFIDENTIALITY_NONE      = 0,
74	CONFIDENTIALITY_OFFSET_0  = 1,
75	CONFIDENTIALITY_OFFSET_30 = 2,
76	CONFIDENTIALITY_OFFSET_50 = 3,
77};
78
79/* IEEE Std 802.1X-2010 - Table 9-2 */
80#define DEFAULT_PRIO_INFRA_PORT        0x10
81#define DEFAULT_PRIO_PRIMRAY_AP        0x30
82#define DEFAULT_PRIO_SECONDARY_AP      0x50
83#define DEFAULT_PRIO_GROUP_CA_MEMBER   0x70
84#define DEFAULT_PRIO_NOT_KEY_SERVER    0xFF
85
86#endif /* IEEE802_1X_DEFS_H */
87