Annotation of embedaddon/strongswan/src/libstrongswan/eap/eap.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2012 Tobias Brunner
3: * Copyright (C) 2010 Martin Willi
4: * Copyright (C) 2010 revosec AG
5: * HSR Hochschule fuer Technik Rapperswil
6: *
7: * This program is free software; you can redistribute it and/or modify it
8: * under the terms of the GNU General Public License as published by the
9: * Free Software Foundation; either version 2 of the License, or (at your
10: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
11: *
12: * This program is distributed in the hope that it will be useful, but
13: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15: * for more details.
16: */
17:
18: /**
19: * @defgroup leap eap
20: * @{ @ingroup libstrongswan
21: */
22:
23: #ifndef EAP_H_
24: #define EAP_H_
25:
26: typedef enum eap_code_t eap_code_t;
27: typedef enum eap_type_t eap_type_t;
28: typedef struct eap_vendor_type_t eap_vendor_type_t;
29:
30: #include <library.h>
31:
32: /**
33: * EAP code, type of an EAP message
34: */
35: enum eap_code_t {
36: EAP_REQUEST = 1,
37: EAP_RESPONSE = 2,
38: EAP_SUCCESS = 3,
39: EAP_FAILURE = 4,
40: };
41:
42: /**
43: * enum names for eap_code_t.
44: */
45: extern enum_name_t *eap_code_names;
46:
47: /**
48: * short string enum names for eap_code_t.
49: */
50: extern enum_name_t *eap_code_short_names;
51:
52: /**
53: * EAP types, defines the EAP method implementation
54: */
55: enum eap_type_t {
56: EAP_IDENTITY = 1,
57: EAP_NOTIFICATION = 2,
58: EAP_NAK = 3,
59: EAP_MD5 = 4,
60: EAP_OTP = 5,
61: EAP_GTC = 6,
62: EAP_TLS = 13,
63: EAP_SIM = 18,
64: EAP_TTLS = 21,
65: EAP_AKA = 23,
66: EAP_PEAP = 25,
67: EAP_MSCHAPV2 = 26,
68: EAP_MSTLV = 33,
69: EAP_TNC = 38,
70: EAP_PT_EAP = 54,
71: EAP_EXPANDED = 254,
72: EAP_EXPERIMENTAL = 255,
73: /** not a method, but an implementation providing different methods */
74: EAP_RADIUS = 256,
75: /** not a method, select method dynamically based on client selection */
76: EAP_DYNAMIC = 257,
77: };
78:
79: /**
80: * enum names for eap_type_t.
81: */
82: extern enum_name_t *eap_type_names;
83:
84: /**
85: * short string enum names for eap_type_t.
86: */
87: extern enum_name_t *eap_type_short_names;
88:
89: /**
90: * Struct that stores EAP type and vendor ID
91: */
92: struct eap_vendor_type_t {
93:
94: /**
95: * EAP type
96: */
97: eap_type_t type;
98:
99: /**
100: * Vendor Id
101: */
102: uint32_t vendor;
103: };
104:
105: /**
106: * EAP packet format
107: */
108: typedef struct __attribute__((packed)) {
109: uint8_t code;
110: uint8_t identifier;
111: uint16_t length;
112: uint8_t type;
113: uint8_t data;
114: } eap_packet_t;
115:
116: /**
117: * Lookup the EAP method type from a string.
118: *
119: * @param name EAP method name (such as "md5", "aka")
120: * @return method type, 0 if unknown
121: */
122: eap_type_t eap_type_from_string(char *name);
123:
124: /**
125: * Parse a string of the form [eap-]type[-vendor].
126: *
127: * @param str EAP method string
128: * @return parsed type (gets allocated), NULL if unknown or failed
129: */
130: eap_vendor_type_t *eap_vendor_type_from_string(char *str);
131:
132: #endif /** EAP_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>