blob: cef11c74453321dc5c5ea95e8e08fab03b1729e8 [file] [log] [blame]
Brian Waters13d96012017-12-08 16:53:31 -06001/*****************************************************************************************************
2 * Software License Agreement (BSD License)
3 * Author : Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>
4 *
5 * Copyright (c) 2009-2010, Souheil Ben Ayed, Teraoka Laboratory of Keio University, and the WIDE Project
6 * All rights reserved.
7 *
8 * Redistribution and use of this software in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 *
18 * 3. All advertising materials mentioning features or use of this software
19 * must display the following acknowledgement:
20 * This product includes software developed by Souheil Ben Ayed <souheil@tera.ics.keio.ac.jp>.
21 *
22 * 4. Neither the name of Souheil Ben Ayed, Teraoka Laboratory of Keio University or the WIDE Project nor the
23 * names of its contributors may be used to endorse or promote products
24 * derived from this software without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS'' AND ANY
27 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
30 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
33 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 *****************************************************************************************************/
37
38
39#ifndef DIAMEAP_SERVER_H_
40#define DIAMEAP_SERVER_H_
41
42
43/* session data structure to store */
44struct sess_state
45{
46 int invalid_eappackets; /* Number of invalid EAP Packet received*/
47
48 eap_type currentMethod;
49 u32 currentVendor;
50 int currentId;
51 int lastId;
52 void * methodData;
53
54 u8 NAKproposedMethods[251];
55
56 eap_method_state methodState;
57
58 struct eap_user user;
59};
60
61typedef enum
62{
63 AUTHENTICATE_ONLY = 1, AUTHORIZE_ONLY = 2, AUTHORIZE_AUTHENTICATE = 3
64} auth_request;
65
66struct diameap_state_machine
67{
68 int invalid_eappackets; /* Number of invalid EAP Packet received*/
69 struct avp * lastReqEAPavp; //last EAP-Payload AVP
70
71 int result_code; /*Error number for Result_code*/
72 struct fd_list attributes; //database attributes
73 struct fd_list req_attributes; //attributes from DER
74 struct fd_list ans_attributes; //attributes to be set for DEA
75 struct avp * failedavp; /* The Failed-AVP AVP. should be update whenever a Failed AVP is encountered during authentication. */
76 struct eap_state_machine eap_sm; /* EAP State Machine */
77 auth_request auth_request_val; /*the Request Type of Auth-Request-Type AVP*/
78 boolean verify_authorization; /* Set to TRUE at the authorization state. Parameter used to indicate that authorization is performed.*/
79 boolean authSuccess; // Set to TRUE if client authenticated and authorized
80 boolean authFailure; //set to TRUE if client is not authenticated
81 boolean authorized; //set to TRUE if client is authorized
82 enum
83 {
84 DIAMEAP_DISABLED,
85 DIAMEAP_INITIALIZE,
86 DIAMEAP_RECEIVED,
87 DIAMEAP_IDLE,
88 DIAMEAP_AUTHENTICATION_VERIFY,
89 DIAMEAP_SEND_ERROR_MSG,
90 DIAMEAP_SELECT_DECISION,
91 DIAMEAP_DIAMETER_EAP_ANSWER,
92 DIAMEAP_END,
93 DIAMEAP_AUTHORIZATION_VERIFY,
94 DIAMEAP_SEND_REQUEST,
95 DIAMEAP_SEND_SUCCESS,
96 DIAMEAP_SEND_FAILURE
97
98 } state; // state of DiamEAP
99
100 boolean privateUser;//TD
101};
102
103struct avp_max_occurences
104{
105 char * avp_attribute;
106 int max; //-1 means no limits
107};
108
109
110
111/* start server */
112int diameap_start_server(void);
113
114/* stop server*/
115int diameap_stop_server(void);
116
117#endif /* DIAMEAP_SERVER_H_ */