MACsec: Add common IEEE 802.1X definitions
authorHu Wang <huw@qti.qualcomm.com>
Tue, 25 Mar 2014 19:39:02 +0000 (21:39 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 9 May 2014 17:05:28 +0000 (20:05 +0300)
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
src/common/eapol_common.h
src/common/ieee802_1x_defs.h [new file with mode: 0644]

index a81e9ff..6958661 100644 (file)
@@ -22,6 +22,12 @@ struct ieee802_1x_hdr {
        /* followed by length octets of data */
 } STRUCT_PACKED;
 
+struct ieee8023_hdr {
+       u8 dest[ETH_ALEN];
+       u8 src[ETH_ALEN];
+       u16 ethertype;
+} STRUCT_PACKED;
+
 #ifdef _MSC_VER
 #pragma pack(pop)
 #endif /* _MSC_VER */
diff --git a/src/common/ieee802_1x_defs.h b/src/common/ieee802_1x_defs.h
new file mode 100644 (file)
index 0000000..cc88caa
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * IEEE Std 802.1X-2010 definitions
+ * Copyright (c) 2013-2014, Qualcomm Atheros, Inc.
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+#ifndef IEEE802_1X_DEFS_H
+#define IEEE802_1X_DEFS_H
+
+#define CS_ID_LEN              8
+#define CS_ID_GCM_AES_128      {0x00, 0x80, 0x02, 0x00, 0x01, 0x00, 0x00, 0x01}
+#define CS_NAME_GCM_AES_128    "GCM-AES-128"
+
+enum macsec_policy {
+       /**
+        * Should secure sessions.
+        * This accepts key server's advice to determine whether to secure the
+        * session or not.
+        */
+       SHOULD_SECURE,
+
+       /**
+        * Disabled MACsec - do not secure sessions.
+        */
+       DO_NOT_SECURE,
+};
+
+
+/* IEEE Std 802.1X-2010 - Table 11-6 - MACsec Capability */
+enum macsec_cap {
+       /**
+        * MACsec is not implemented
+        */
+       MACSEC_CAP_NOT_IMPLEMENTED,
+
+       /**
+        * 'Integrity without confidentiality'
+        */
+       MACSEC_CAP_INTEGRITY,
+
+       /**
+        * 'Integrity without confidentiality' and
+        * 'Integrity and confidentiality' with a confidentiality offset of 0
+        */
+       MACSEC_CAP_INTEG_AND_CONF,
+
+       /**
+        * 'Integrity without confidentiality' and
+        * 'Integrity and confidentiality' with a confidentiality offset of 0,
+        * 30, 50
+        */
+       MACSEC_CAP_INTEG_AND_CONF_0_30_50,
+};
+
+enum validate_frames {
+       Disabled,
+       Checked,
+       Strict,
+};
+
+/* IEEE Std 802.1X-2010 - Table 11-6 - Confidentiality Offset */
+enum confidentiality_offset {
+       CONFIDENTIALITY_NONE      = 0,
+       CONFIDENTIALITY_OFFSET_0  = 1,
+       CONFIDENTIALITY_OFFSET_30 = 2,
+       CONFIDENTIALITY_OFFSET_50 = 3,
+};
+
+/* IEEE Std 802.1X-2010 - Table 9-2 */
+#define DEFAULT_PRIO_INFRA_PORT        0x10
+#define DEFAULT_PRIO_PRIMRAY_AP        0x30
+#define DEFAULT_PRIO_SECONDARY_AP      0x50
+#define DEFAULT_PRIO_GROUP_CA_MEMBER   0x70
+#define DEFAULT_PRIO_NOT_KEY_SERVER    0xFF
+
+#endif /* IEEE802_1X_DEFS_H */