Mercurial > hg > waaad
annotate extensions/rt_default/rt_default.c @ 400:22f29007b931
Detect when extensions are loaded several times (not allowed)
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Tue, 02 Jun 2009 14:49:37 +0900 |
parents | 316bb3f38d04 |
children |
rev | line source |
---|---|
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
1 /********************************************************************************************************* |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
2 * Software License Agreement (BSD License) * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
3 * Author: Sebastien Decugis <sdecugis@nict.go.jp> * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
4 * * |
371
e86dba02630a
Updated copyright information
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
353
diff
changeset
|
5 * Copyright (c) 2009, WIDE Project and NICT * |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
6 * All rights reserved. * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
7 * * |
b57b797e15fd
Added structure for default routing extension
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 * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
9 * permitted provided that the following conditions are met: * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
10 * * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
11 * * Redistributions of source code must retain the above * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
12 * copyright notice, this list of conditions and the * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
13 * following disclaimer. * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
14 * * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
15 * * Redistributions in binary form must reproduce the above * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
16 * copyright notice, this list of conditions and the * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
17 * following disclaimer in the documentation and/or other * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
18 * materials provided with the distribution. * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
19 * * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
20 * * Neither the name of the WIDE Project or NICT nor the * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
21 * names of its contributors may be used to endorse or * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
22 * promote products derived from this software without * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
23 * specific prior written permission of WIDE Project and * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
24 * NICT. * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
25 * * |
b57b797e15fd
Added structure for default routing extension
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 * |
b57b797e15fd
Added structure for default routing extension
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 * |
b57b797e15fd
Added structure for default routing extension
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 * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
29 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * |
b57b797e15fd
Added structure for default routing extension
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 * |
b57b797e15fd
Added structure for default routing extension
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 * |
b57b797e15fd
Added structure for default routing extension
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 * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
33 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
34 *********************************************************************************************************/ |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
35 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
36 /* |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
37 * Basic routing of the messages based on their Destination-Realm, Destination-Host, and configuration file. |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
38 */ |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
39 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
40 #define DECLARE_API_POINTERS |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
41 #include "rt_default.h" |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
42 |
267
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
43 static dict_object_t * dict_avp_DH = NULL; /* Destination-Host */ |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
44 static dict_object_t * dict_avp_DR = NULL; /* Destination-Realm */ |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
45 |
353
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
46 int rt_default_verbosity = 0; |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
47 |
267
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
48 /* Analyze a message content to find Destination-Realm and Destination-Host */ |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
49 static int find_avps(msg_t * msg, avp_value_t ** dr, avp_value_t ** dh) |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
50 { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
51 int ret = 0; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
52 msg_avp_t * avp = NULL; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
53 msg_avp_data_t * avpdata; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
54 |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
55 /* Destination-Host */ |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
56 ret = msg_search_avp( msg, dict_avp_DH, &avp ); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
57 if (ret != 0) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
58 TRACE_DEBUG(INFO, "Error in msg_search_avp: %s", strerror(ret)); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
59 return ret; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
60 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
61 |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
62 if (avp != NULL) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
63 ret = msg_avp_data( avp, &avpdata ); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
64 if (ret != 0) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
65 TRACE_DEBUG(INFO, "Error in msg_avp_data: %s", strerror(ret)); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
66 return ret; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
67 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
68 *dh = avpdata->avp_data; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
69 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
70 |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
71 /* Destination-Realm */ |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
72 ret = msg_search_avp( msg, dict_avp_DR, &avp ); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
73 if (ret != 0) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
74 TRACE_DEBUG(INFO, "Error in msg_search_avp: %s", strerror(ret)); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
75 return ret; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
76 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
77 |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
78 if (avp != NULL) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
79 ret = msg_avp_data( avp, &avpdata ); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
80 if (ret != 0) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
81 TRACE_DEBUG(INFO, "Error in msg_avp_data: %s", strerror(ret)); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
82 return ret; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
83 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
84 *dr = avpdata->avp_data; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
85 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
86 |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
87 return 0; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
88 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
89 |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
90 /* The callback doing all the work */ |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
91 static int cb_def_out(void * data, msg_t * msg, rt_dpl_t * list ) |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
92 { |
267
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
93 int ret = 0; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
94 avp_value_t * dr = NULL; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
95 avp_value_t * dh = NULL; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
96 rt_dpl_t * candidate = list; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
97 |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
98 TRACE_ENTRY("%p %p", msg, list); |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
99 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
100 /* First find Destination Realm and Destination Host AVPs in msg */ |
267
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
101 ret = find_avps(msg, &dr, &dh); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
102 if (ret != 0) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
103 TRACE_DEBUG(INFO, "Failed to analyze the message: %s", strerror(ret)); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
104 return ret; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
105 } |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
106 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
107 /* Then for each candidate peer for routing */ |
267
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
108 while (candidate != NULL) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
109 char * candname = NULL; /* name of this candidate peer */ |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
110 int tablescore = 0; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
111 |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
112 ret = peer_get(candidate->peer, PEER_DIAMETER_ID, (void *)&candname); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
113 if (ret != 0) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
114 TRACE_DEBUG(INFO, "Unable to retrieve peer name: %s", strerror(ret)); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
115 return ret; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
116 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
117 |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
118 /* Is destination host ? */ |
267
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
119 if ((rtd_conf->do_dest_host) && (dh != NULL)) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
120 if ((dh->os.len == strlen(candname)) && |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
121 (strncasecmp(candname, (char *)dh->os.data, dh->os.len) == 0)) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
122 TRACE_DEBUG(FULL, "Peer '%s' is Destination-Host, adding appropriate score", candname); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
123 candidate->score += rtd_conf->sc_dest_host; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
124 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
125 } |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
126 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
127 /* Is matching destination realm ? */ |
267
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
128 if ((rtd_conf->do_dest_realm) && (dr != NULL)) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
129 char * candrealm = NULL; /* realm of this candidate peer */ |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
130 |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
131 ret = peer_get(candidate->peer, PEER_REALM, (void *)&candrealm); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
132 if (ret != 0) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
133 TRACE_DEBUG(INFO, "Unable to retrieve peer realm: %s", strerror(ret)); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
134 return ret; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
135 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
136 |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
137 if ((dr->os.len == strlen(candrealm)) && |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
138 (strncasecmp(candrealm, (char *)dr->os.data, dr->os.len) == 0)) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
139 TRACE_DEBUG(FULL, "Peer '%s' has matching Destination-Realm, adding appropriate score", candname); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
140 candidate->score += rtd_conf->sc_dest_realm; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
141 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
142 } |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
143 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
144 /* Is defined in configuration as a default route ? */ |
267
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
145 ret = rtd_search( dr ? dr->os.data : NULL, dr ? dr->os.len : 0, candname, &tablescore); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
146 if (ret != 0) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
147 TRACE_DEBUG(INFO, "Internal extension error, search failed: %s", strerror(ret)); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
148 return ret; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
149 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
150 candidate->score += tablescore; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
151 |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
152 /* Move to next candidate */ |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
153 candidate = candidate->next; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
154 } |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
155 |
267
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
156 return 0; |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
157 } |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
158 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
159 /* Initialize the configuration */ |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
160 rtd_conf_t * rtd_conf = NULL; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
161 static rtd_conf_t _conf; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
162 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
163 static int conf_init(void) |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
164 { |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
165 rtd_conf = &_conf; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
166 memset(rtd_conf, 0, sizeof(rtd_conf_t)); |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
167 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
168 /* Set the default values */ |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
169 rtd_conf->do_dest_host = 1; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
170 rtd_conf->do_dest_realm = 1; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
171 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
172 rtd_conf->sc_dest_host = PEER_SCORE_FINALDEST; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
173 rtd_conf->sc_dest_realm = PEER_SCORE_DEFAULT_REALM; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
174 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
175 rtd_conf->sc_no_info = 0; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
176 rtd_conf->sc_all = PEER_SCORE_DEFAULT; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
177 rtd_conf->sc_all_pref = PEER_SCORE_DEFAULT + PEER_SCORE_LOAD_BALANCE; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
178 rtd_conf->sc_rlm = PEER_SCORE_DEFAULT_REALM; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
179 rtd_conf->sc_rlm_pref = PEER_SCORE_DEFAULT_REALM + PEER_SCORE_LOAD_BALANCE; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
180 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
181 return 0; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
182 } |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
183 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
184 static void conf_dump(void) |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
185 { |
353
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
186 TRACE_DEBUG(FULL, "rt_default configuration dump:\n" |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
187 " Verbosity...........: %d\n" |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
188 " Handle Dest Host....: %d\n" |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
189 " Handle Dest Realm...: %d\n" |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
190 " Score Dest Host.....: %d\n" |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
191 " Score Dest Realm....: %d\n" |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
192 " Score no info.......: %d\n" |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
193 " Score default route.: %d\n" |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
194 " Score default pref..: %d\n" |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
195 " Score realm.........: %d\n" |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
196 " Score realm pref....: %d", |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
197 rt_default_verbosity, |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
198 rtd_conf->do_dest_host, |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
199 rtd_conf->do_dest_realm, |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
200 rtd_conf->sc_dest_host, |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
201 rtd_conf->sc_dest_realm, |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
202 rtd_conf->sc_no_info, |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
203 rtd_conf->sc_all, |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
204 rtd_conf->sc_all_pref, |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
205 rtd_conf->sc_rlm, |
6ca21598562a
Unified TRACE_DEBUG handling between daemon and extensions + some progress on radius gateway
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
315
diff
changeset
|
206 rtd_conf->sc_rlm_pref); |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
207 } |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
208 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
209 /* handler */ |
399
316bb3f38d04
Changed dict_search definition to allow two useful behaviors
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
376
diff
changeset
|
210 static rt_out_hdl_t * rt_def_hdl = NULL; |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
211 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
212 /* entry point */ |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
213 static int entry(char * conffile) |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
214 { |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
215 int ret = 0; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
216 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
217 TRACE_ENTRY("%p", conffile); |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
218 |
399
316bb3f38d04
Changed dict_search definition to allow two useful behaviors
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
376
diff
changeset
|
219 ret = dict_search( DICT_AVP, AVP_BY_NAME, "Destination-Host", &dict_avp_DH, ENOENT ); |
267
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
220 if (ret != 0) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
221 log_error("Error initializing extension's dictionary objects: %s\n", strerror(ret)); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
222 return ret; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
223 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
224 |
399
316bb3f38d04
Changed dict_search definition to allow two useful behaviors
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
376
diff
changeset
|
225 ret = dict_search( DICT_AVP, AVP_BY_NAME, "Destination-Realm", &dict_avp_DR, ENOENT ); |
267
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
226 if (ret != 0) { |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
227 log_error("Error initializing extension's dictionary objects: %s\n", strerror(ret)); |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
228 return ret; |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
229 } |
21cb3f31861e
Completed the code of the extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
261
diff
changeset
|
230 |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
231 ret = conf_init(); |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
232 if (ret != 0) { |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
233 log_error("Error initializing extension: %s\n", strerror(ret)); |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
234 return ret; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
235 } |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
236 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
237 ret = rtd_init(); |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
238 if (ret != 0) { |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
239 log_error("Error initializing extension: %s\n", strerror(ret)); |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
240 return ret; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
241 } |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
242 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
243 if (conffile != NULL) { |
315
3cebe1c677ab
Change build system to CMake (lots of changes)
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
267
diff
changeset
|
244 ret = rtd_conf_handle(conffile); |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
245 if (ret != 0) { |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
246 log_error("Error parsing extension configuration: %s\n", strerror(ret)); |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
247 return ret; |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
248 } |
376
98806d0e175f
Unified debug messages when loading extensions
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
371
diff
changeset
|
249 TRACE_DEBUG(INFO, "Extension RT/Default initialized with configuration: '%s'", conffile); |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
250 conf_dump(); |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
251 rtd_dump(); |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
252 } else { |
376
98806d0e175f
Unified debug messages when loading extensions
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
371
diff
changeset
|
253 TRACE_DEBUG(INFO, "Extension RT/Default initialized with default configuration"); |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
254 } |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
255 |
399
316bb3f38d04
Changed dict_search definition to allow two useful behaviors
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
376
diff
changeset
|
256 return rt_out_register( cb_def_out, NULL, RT_OUT_NORMAL, &rt_def_hdl ); |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
257 } |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
258 |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
259 /* Unload */ |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
260 void waaad_ext_fini(void) |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
261 { |
399
316bb3f38d04
Changed dict_search definition to allow two useful behaviors
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
376
diff
changeset
|
262 rt_out_unregister ( rt_def_hdl ); |
261
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
263 rtd_fini(); |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
264 } |
b57b797e15fd
Added structure for default routing extension
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
265 |
400
22f29007b931
Detect when extensions are loaded several times (not allowed)
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
399
diff
changeset
|
266 EXTENSION_API_INIT( API_MODULE_ALL, entry, "rt_default", 1); |