Added eap-dynamic plugin which can proxy any other EAP method
[strongswan.git] / src / libstrongswan / eap / eap.h
index e98a3a2..0e144b1 100644 (file)
@@ -1,6 +1,8 @@
 /*
+ * Copyright (C) 2012 Tobias Brunner
  * Copyright (C) 2010 Martin Willi
  * Copyright (C) 2010 revosec AG
+ * Hochschule fuer Technik Rapperswil
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
@@ -14,7 +16,7 @@
  */
 
 /**
- * @defgroup eap eap
+ * @defgroup leap eap
  * @{ @ingroup libstrongswan
  */
 
@@ -23,6 +25,7 @@
 
 typedef enum eap_code_t eap_code_t;
 typedef enum eap_type_t eap_type_t;
+typedef struct eap_vendor_type_t eap_vendor_type_t;
 
 #include <library.h>
 
@@ -60,12 +63,16 @@ enum eap_type_t {
        EAP_SIM = 18,
        EAP_TTLS = 21,
        EAP_AKA = 23,
+       EAP_PEAP = 25,
        EAP_MSCHAPV2 = 26,
+       EAP_MSTLV = 33,
        EAP_TNC = 38,
-       /** not a method, but an implementation providing different methods */
-       EAP_RADIUS = 253,
        EAP_EXPANDED = 254,
        EAP_EXPERIMENTAL = 255,
+       /** not a method, but an implementation providing different methods */
+       EAP_RADIUS = 256,
+       /** not a method, select method dynamically based on client selection */
+       EAP_DYNAMIC = 257,
 };
 
 /**
@@ -79,6 +86,33 @@ extern enum_name_t *eap_type_names;
 extern enum_name_t *eap_type_short_names;
 
 /**
+ * Struct that stores EAP type and vendor ID
+ */
+struct eap_vendor_type_t {
+
+       /**
+        * EAP type
+        */
+       eap_type_t type;
+
+       /**
+        * Vendor Id
+        */
+       u_int32_t vendor;
+};
+
+/**
+ * EAP packet format
+ */
+typedef struct __attribute__((packed)) {
+       u_int8_t code;
+       u_int8_t identifier;
+       u_int16_t length;
+       u_int8_t type;
+       u_int8_t data;
+} eap_packet_t;
+
+/**
  * Lookup the EAP method type from a string.
  *
  * @param name         EAP method name (such as "md5", "aka")
@@ -86,4 +120,12 @@ extern enum_name_t *eap_type_short_names;
  */
 eap_type_t eap_type_from_string(char *name);
 
+/**
+ * Parse a string of the form [eap-]type[-vendor].
+ *
+ * @param str          EAP method string
+ * @return                     parsed type (gets allocated), NULL if unknown or failed
+ */
+eap_vendor_type_t *eap_vendor_type_from_string(char *str);
+
 #endif /** EAP_H_ @}*/