all: updated FSF address in GPL text
[sip-router] / modules / outbound / api.h
1 /*
2  * $Id$
3  *
4  * Copyright (C) 2012-2013 Crocodile RCS Ltd
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  * Exception: permission to copy, modify, propagate, and distribute a work
23  * formed by combining OpenSSL toolkit software and the code in this file,
24  * such as linking with software components and libraries released under
25  * OpenSSL project license.
26  *
27  */
28
29 #ifndef OB_API_H
30 #define OB_API_H
31
32 #include "../../str.h"
33 #include "../../sr_module.h"
34
35 typedef int (*encode_flow_token_t)(str *, struct receive_info);
36 typedef int (*decode_flow_token_t)(struct sip_msg *, struct receive_info **, str);
37 typedef int (*use_outbound_t)(struct sip_msg *);
38
39 typedef struct ob_binds {
40         encode_flow_token_t encode_flow_token;
41         decode_flow_token_t decode_flow_token;
42         use_outbound_t use_outbound;
43 } ob_api_t;
44
45 typedef int (*bind_ob_f)(ob_api_t*);
46
47 int bind_ob(struct ob_binds*);
48
49 inline static int ob_load_api(ob_api_t *pxb)
50 {
51         bind_ob_f bind_ob_exports;
52         if (!(bind_ob_exports = (bind_ob_f)find_export("bind_ob", 1, 0)))
53         {
54                 LM_INFO("Failed to import bind_ob\n");
55                 return -1;
56         }
57         return bind_ob_exports(pxb);
58 }
59
60 #endif /* OB_API_H */