1 /*********************************************************************************************************
2 * Software License Agreement (BSD License)                                                               *
3 * Author: Sebastien Decugis <sdecugis@freediameter.net>							 *
4 *													 *
5 * Copyright (c) 2019, WIDE Project and NICT								 *
6 * All rights reserved.											 *
7 * 													 *
8 * Redistribution and use of this software in source and binary forms, with or without modification, are  *
9 * permitted provided that the following conditions are met:						 *
10 * 													 *
11 * * Redistributions of source code must retain the above 						 *
12 *   copyright notice, this list of conditions and the 							 *
13 *   following disclaimer.										 *
14 *    													 *
15 * * Redistributions in binary form must reproduce the above 						 *
16 *   copyright notice, this list of conditions and the 							 *
17 *   following disclaimer in the documentation and/or other						 *
18 *   materials provided with the distribution.								 *
19 * 													 *
20 * * Neither the name of the WIDE Project or NICT nor the 						 *
21 *   names of its contributors may be used to endorse or 						 *
22 *   promote products derived from this software without 						 *
23 *   specific prior written permission of WIDE Project and 						 *
24 *   NICT.												 *
25 * 													 *
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
27 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
28 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
29 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 	 *
30 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 	 *
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
32 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF   *
33 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.								 *
34 *********************************************************************************************************/
35 
36 /* Header file for the rt_default extension.
37  *
38  *  See the rt_default.conf.sample file for the format of the configuration file.
39  */
40 
41 /* FreeDiameter's common include file */
42 #include <freeDiameter/extension.h>
43 
44 /* Host configuration for this specific extension */
45 #include <rt_default-host.h>
46 
47 /* Parse the configuration file */
48 int rtd_conf_handle(char * conffile);
49 
50 /* Initialize the rules repository */
51 int rtd_init(void);
52 
53 /* Destroy the rules repository */
54 void rtd_fini(void);
55 
56 /* Some constants definitions */
57 enum rtd_crit_type {
58 	RTD_CRI_ALL	= 0,
59 	RTD_CRI_OH,
60 	RTD_CRI_OR,
61 	RTD_CRI_DH,
62 	RTD_CRI_DR,
63 	RTD_CRI_UN,
64 	RTD_CRI_SI,
65 
66 	RTD_CRI_MAX
67 };
68 
69 enum rtd_targ_type {
70 	RTD_TAR_ID     = 0,
71 	RTD_TAR_REALM,
72 
73 	RTD_TAR_MAX
74 };
75 
76 #define RTD_CRIT_REG	0x1
77 #define RTD_TARG_REG	0x2
78 
79 /* Add a rule */
80 int rtd_add(enum rtd_crit_type ct, char * criteria, enum rtd_targ_type tt, char * target, int score, int flags);
81 
82 /* Process a message & peer list through the rules repository, updating the scores */
83 int rtd_process( struct msg * msg, struct fd_list * candidates );
84 
85 /* Reload the config file */
86 void rtd_conf_reload(char *config_file);
87 
88 /* For debug: dump the rule repository */
89 void rtd_dump(void);
90