modules/ims_qos: added patch for flow-description bug when request originates from...
[sip-router] / src / lib / kmi / mi.h
1 /*
2  * $Id: mi.h 5003 2008-09-26 11:01:51Z henningw $
3  *
4  * Copyright (C) 2006 Voice Sistem SRL
5  *
6  * This file is part of Kamailio, a free SIP server.
7  *
8  * Kamailio 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  * Kamailio 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  *
23  * History:
24  * ---------
25  *  2006-09-08  first version (bogdan)
26  *  2010-08-18  use mi types from ../../mi/mi_types.h (andrei)
27  */
28
29 /*!
30  * \file 
31  * \brief MI :: Management
32  * \ingroup mi
33  */
34
35
36 #ifndef _MI_MI_H_
37 #define _MI_MI_H_
38
39 #include "../../str.h"
40 #include "../../mi/mi_types.h"
41 #include "tree.h"
42
43 #define MI_ASYNC_RPL_FLAG   (1<<0)
44 #define MI_NO_INPUT_FLAG    (1<<1)
45
46 #define MI_ROOT_ASYNC_RPL   ((struct mi_root*)-1)
47
48
49
50 struct mi_handler {
51         mi_handler_f *handler_f;
52         void * param;
53 };
54
55
56 struct mi_cmd {
57         int id;
58         str name;
59         mi_child_init_f *init_f;
60         mi_cmd_f *f;
61         unsigned int flags;
62         void *param;
63 };
64
65
66 int register_mi_cmd( mi_cmd_f f, char *name, void *param,
67                 mi_child_init_f in, unsigned int flags);
68
69 int register_mi_mod( char *mod_name, mi_export_t *mis);
70
71 int init_mi_child(int rank, int mode);
72
73 struct mi_cmd* lookup_mi_cmd( char *name, int len);
74
75 static inline struct mi_root* run_mi_cmd(struct mi_cmd *cmd, struct mi_root *t)
76 {
77         return cmd->f( t, cmd->param);
78 }
79
80 void get_mi_cmds( struct mi_cmd** cmds, int *size);
81
82 int init_mi_core(void);
83
84 #endif
85