Core Update of doxygen, removal of history, changing "ser" to "kamailio"
[sip-router] / script_cb.h
1 /*
2  * Copyright (C) 2001-2003 FhG Fokus
3  *
4  * This file is part of Kamailio, a free SIP server.
5  *
6  * Kamailio is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version
10  *
11  * Kamailio is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License 
17  * along with this program; if not, write to the Free Software 
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
19  *
20  */
21 /*!
22  * \file
23  * \brief Kamailio core :: Script callbacks
24  * \ingroup core
25  * Module: \ref core
26  */
27
28 #ifndef _SCRIPT_CB_H_
29 #define _SCRIPT_CB_H_
30
31 #include "parser/msg_parser.h"
32
33 typedef int (cb_function)(struct sip_msg *msg, unsigned int flags, void *param);
34
35
36 #define PRE_SCRIPT_CB    (1<<30)
37 #define POST_SCRIPT_CB   (1<<31)
38
39 /* Pre- and post-script callback flags. Use these flags to register
40  * for the callbacks, and to check the type of the callback from the
41  * functions.
42  * (Power of 2 so more callbacks can be registered at once.)
43  */
44 enum script_cb_flag { REQUEST_CB=1, FAILURE_CB=2, ONREPLY_CB=4,
45                         BRANCH_CB=8, ONSEND_CB=16, ERROR_CB=32,
46                         LOCAL_CB=64, EVENT_CB=128, BRANCH_FAILURE_CB=256 };
47
48 /* Callback types used for executing the callbacks.
49  * Keep in sync with script_cb_flag!!!
50  */
51 enum script_cb_type { REQUEST_CB_TYPE=1, FAILURE_CB_TYPE, ONREPLY_CB_TYPE,
52                         BRANCH_CB_TYPE, ONSEND_CB_TYPE, ERROR_CB_TYPE,
53                         LOCAL_CB_TYPE, EVENT_CB_TYPE, BRANCH_FAILURE_CB_TYPE, MAX_CB_TYPE };
54
55 struct script_cb{
56         cb_function *cbf;
57         struct script_cb *next;
58         void *param;
59 };
60
61 /* Register pre- or post-script callbacks.
62  * Returns -1 on error, 0 on success
63  */
64 int register_script_cb( cb_function f, unsigned int flags, void *param );
65
66 int init_script_cb(void);
67 void destroy_script_cb(void);
68
69 /* Execute pre-script callbacks of a given type.
70  * Returns 0 on error, 1 on success
71  */
72 int exec_pre_script_cb( struct sip_msg *msg, enum script_cb_type type);
73
74 /* Execute post-script callbacks of a given type.
75  * Always returns 1, success.
76  */
77 int exec_post_script_cb( struct sip_msg *msg, enum script_cb_type type);
78
79 #endif
80