annotate extensions/radius_gw/rg_utils.c @ 406:3a8e91184d4d

Added code to handle RADIUS client deconnection
author Sebastien Decugis <sdecugis@nict.go.jp>
date Wed, 10 Jun 2009 15:33:26 +0900
parents 03b512313cc1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
353
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1 /*********************************************************************************************************
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
2 * Software License Agreement (BSD License) *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
3 * Author: Sebastien Decugis <sdecugis@nict.go.jp> *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
4 * *
371
e86dba02630a Updated copyright information
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 365
diff changeset
5 * Copyright (c) 2009, WIDE Project and NICT *
353
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
6 * All rights reserved. *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
7 * *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
8 * Redistribution and use of this software in source and binary forms, with or without modification, are *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
9 * permitted provided that the following conditions are met: *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
10 * *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
11 * * Redistributions of source code must retain the above *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
12 * copyright notice, this list of conditions and the *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
13 * following disclaimer. *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
14 * *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
15 * * Redistributions in binary form must reproduce the above *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
16 * copyright notice, this list of conditions and the *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
17 * following disclaimer in the documentation and/or other *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
18 * materials provided with the distribution. *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
19 * *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
20 * * Neither the name of the WIDE Project or NICT nor the *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
21 * names of its contributors may be used to endorse or *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
22 * promote products derived from this software without *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
23 * specific prior written permission of WIDE Project and *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
24 * NICT. *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
25 * *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
27 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
28 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
29 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
30 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
32 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
33 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
34 *********************************************************************************************************/
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
35
365
0146c60af026 Moved to the hostap implementation of RADIUS processing (copied radius.* and md5.* files)
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 363
diff changeset
36 #include "rg_common.h"
353
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
37
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
38
365
0146c60af026 Moved to the hostap implementation of RADIUS processing (copied radius.* and md5.* files)
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 363
diff changeset
39 /************ Lists ***********/
356
555dc5a58aef Added server code for radius extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 355
diff changeset
40
555dc5a58aef Added server code for radius extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 355
diff changeset
41 void rg_list_init(struct rg_list * plist)
353
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
42 {
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
43 ASSERT(plist != NULL);
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
44 plist->next = plist;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
45 plist->prev = plist;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
46 plist->head = plist;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
47 }
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
48
356
555dc5a58aef Added server code for radius extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 355
diff changeset
49 int rg_list_is_empty(struct rg_list * plist)
353
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
50 {
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
51 ASSERT(plist != NULL);
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
52 return plist == plist->next;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
53 }
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
54
356
555dc5a58aef Added server code for radius extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 355
diff changeset
55 void rg_list_insert_after(struct rg_list * ref, struct rg_list * item)
353
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
56 {
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
57 ASSERT(ref != NULL);
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
58 ASSERT(item != NULL);
356
555dc5a58aef Added server code for radius extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 355
diff changeset
59 ASSERT(rg_list_is_empty(item));
353
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
60 item->next = ref->next;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
61 item->prev = ref;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
62 item->head = ref->head;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
63 ref->next->prev = item;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
64 ref->next = item;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
65 }
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
66
356
555dc5a58aef Added server code for radius extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 355
diff changeset
67 void rg_list_insert_before(struct rg_list * ref, struct rg_list * item)
355
b811859f9963 Added extensions management in radius_gw
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 353
diff changeset
68 {
b811859f9963 Added extensions management in radius_gw
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 353
diff changeset
69 ASSERT(ref != NULL);
b811859f9963 Added extensions management in radius_gw
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 353
diff changeset
70 ASSERT(item != NULL);
356
555dc5a58aef Added server code for radius extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 355
diff changeset
71 ASSERT(rg_list_is_empty(item));
355
b811859f9963 Added extensions management in radius_gw
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 353
diff changeset
72 item->prev = ref->prev;
b811859f9963 Added extensions management in radius_gw
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 353
diff changeset
73 item->next = ref;
b811859f9963 Added extensions management in radius_gw
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 353
diff changeset
74 item->head = ref->head;
b811859f9963 Added extensions management in radius_gw
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 353
diff changeset
75 ref->prev->next = item;
b811859f9963 Added extensions management in radius_gw
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 353
diff changeset
76 ref->prev = item;
b811859f9963 Added extensions management in radius_gw
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 353
diff changeset
77 }
b811859f9963 Added extensions management in radius_gw
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 353
diff changeset
78
356
555dc5a58aef Added server code for radius extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 355
diff changeset
79 void rg_list_unlink(struct rg_list * plist)
353
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
80 {
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
81 ASSERT(plist != NULL);
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
82 if (plist->head == plist)
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
83 return;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
84 plist->next->prev = plist->prev;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
85 plist->prev->next = plist->next;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
86 plist->next = plist;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
87 plist->prev = plist;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
88 plist->head = plist;
6ca21598562a Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
89 }
356
555dc5a58aef Added server code for radius extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 355
diff changeset
90
555dc5a58aef Added server code for radius extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 355
diff changeset
91
365
0146c60af026 Moved to the hostap implementation of RADIUS processing (copied radius.* and md5.* files)
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 363
diff changeset
92 /************ Other helpers ***********/
363
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
93
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
94 /* Terminate a thread */
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
95 int rg_thread_term(pthread_t * th)
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
96 {
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
97 int ret = 0;
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
98 void * th_ret = NULL;
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
99
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
100 CHECK_PARAMS(th);
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
101
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
102 /* Test if it was already terminated */
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
103 if (*th == (pthread_t)NULL)
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
104 return 0;
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
105
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
106 /* Cancel the thread if it is still running - ignore error if it was already terminated */
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
107 (void) pthread_cancel(*th);
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
108
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
109 /* Then join the thread */
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
110 CHECK_POSIX_DO( ret = pthread_join(*th, &th_ret), /* continue */ );
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
111
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
112 if (th_ret != NULL) {
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
113 TRACE_DEBUG(FULL, "The thread returned the following value: %p (ignored)", th_ret);
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
114 }
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
115
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
116 /* Clean the location */
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
117 *th = (pthread_t)NULL;
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
118
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
119 return ret;
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
120 }
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
121
365
0146c60af026 Moved to the hostap implementation of RADIUS processing (copied radius.* and md5.* files)
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 363
diff changeset
122 /* Cancellation cleanups */
0146c60af026 Moved to the hostap implementation of RADIUS processing (copied radius.* and md5.* files)
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 363
diff changeset
123 void rg_cleanup_mutex(void * mtx)
0146c60af026 Moved to the hostap implementation of RADIUS processing (copied radius.* and md5.* files)
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 363
diff changeset
124 {
0146c60af026 Moved to the hostap implementation of RADIUS processing (copied radius.* and md5.* files)
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 363
diff changeset
125 CHECK_POSIX_DO( pthread_mutex_unlock((pthread_mutex_t *)mtx), );
0146c60af026 Moved to the hostap implementation of RADIUS processing (copied radius.* and md5.* files)
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 363
diff changeset
126 }
363
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
127
9d330bd07134 Progress on the radius_gw gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 359
diff changeset
128
385
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
129 /* Global functions not exported through the API (bad practice since no ABI control...) */
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
130 int rg_pointers_init(void ** hdl)
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
131 {
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
132 CHECK_PARAMS(hdl);
406
3a8e91184d4d Added code to handle RADIUS client deconnection
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 385
diff changeset
133 *hdl = dlopen(0, RTLD_LAZY | RTLD_GLOBAL);
385
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
134 if (!*hdl) {
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
135 TRACE_DEBUG(INFO, "Error in dlopen(0): %s", dlerror());
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
136 return ENOTSUP;
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
137 }
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
138 return 0;
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
139 }
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
140 void rg_pointers_fini(void **hdl)
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
141 {
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
142 CHECK_PARAMS_DO(hdl, return);
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
143 dlclose(*hdl);
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
144 *hdl = NULL;
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
145 return;
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
146 }
365
0146c60af026 Moved to the hostap implementation of RADIUS processing (copied radius.* and md5.* files)
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 363
diff changeset
147
385
03b512313cc1 Added code to handle sessions
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 371
diff changeset
148
"Welcome to our mercurial repository"