all: updated FSF address in GPL text
[sip-router] / cfg / cfg_script.h
1 /*
2  * $Id$
3  *
4  * Copyright (C) 2008 iptelorg GmbH
5  *
6  * This file is part of SIP-router, a free SIP server.
7  *
8  * SIP-router is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version
12  *
13  * SIP-router is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
21  *
22  * History
23  * -------
24  *  2008-01-24  dynamic groups are introduced in order to make
25  *              variable declaration possible in the script (Miklos)
26  */
27
28 #ifndef _CFG_SCRIPT_H
29 #define _CFG_SCRIPT_H
30
31 #include "../str.h"
32 #include "cfg_struct.h"
33
34 /* structure used for temporary storing the variables
35  * which are declared in the script */
36 typedef struct _cfg_script_var {
37         unsigned int    type;
38         union {
39                 str     s;
40                 int     i;
41         } val;
42         int     min;
43         int     max;
44         struct _cfg_script_var  *next;
45         int     name_len;
46         char    *name;
47         char    *descr;
48 } cfg_script_var_t;
49
50 /* allocates memory for a new config script variable
51  * The value of the variable is not set!
52  */
53 cfg_script_var_t *new_cfg_script_var(char *gname, char *vname, unsigned int type,
54                                         char *descr);
55
56 /* Rewrite the value of an already declared script variable before forking.
57  * Return value:
58  *       0: success
59  *      -1: error
60  *       1: variable not found
61  */
62 int cfg_set_script_var(cfg_group_t *group, str *var_name,
63                         void *val, unsigned int val_type);
64
65 /* fix-up the dynamically declared group */
66 int cfg_script_fixup(cfg_group_t *group, unsigned char *block);
67
68 /* destory a dynamically allocated group definition */
69 void cfg_script_destroy(cfg_group_t *group);
70
71 #endif /* _CFG_SCRIPT_H */