Add missing module dependencies to various res_sip* modules
[asterisk/asterisk.git] / res / res_sip_logger.c
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2013, Digium, Inc.
5  *
6  * Mark Michelson <mmichelson@digium.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 /*** MODULEINFO
20         <depend>pjproject</depend>
21         <depend>res_sip</depend>
22         <support_level>core</support_level>
23  ***/
24
25 #include "asterisk.h"
26
27 #include <pjsip.h>
28
29 #include "asterisk/res_sip.h"
30 #include "asterisk/module.h"
31 #include "asterisk/logger.h"
32
33 static pj_status_t logging_on_tx_msg(pjsip_tx_data *tdata)
34 {
35         ast_verbose("<--- Transmitting SIP %s (%d bytes) to %s:%s:%d --->\n%.*s\n",
36                     tdata->msg->type == PJSIP_REQUEST_MSG ? "request" : "response",
37                     (int) (tdata->buf.cur - tdata->buf.start),
38                     tdata->tp_info.transport->type_name,
39                     tdata->tp_info.dst_name,
40                     tdata->tp_info.dst_port,
41                     (int) (tdata->buf.end - tdata->buf.start), tdata->buf.start);
42         return PJ_SUCCESS;
43 }
44
45 static pj_bool_t logging_on_rx_msg(pjsip_rx_data *rdata)
46 {
47         ast_verbose("<--- Received SIP %s (%d bytes) from %s:%s:%d --->\n%s\n",
48                     rdata->msg_info.msg->type == PJSIP_REQUEST_MSG ? "request" : "response",
49                     rdata->msg_info.len,
50                     rdata->tp_info.transport->type_name,
51                     rdata->pkt_info.src_name,
52                     rdata->pkt_info.src_port,
53                     rdata->pkt_info.packet);
54         return PJ_FALSE;
55 }
56
57 static pjsip_module logging_module = {
58         .name = { "Logging Module", 14 },
59         .priority = 0,
60         .on_rx_request = logging_on_rx_msg,
61         .on_rx_response = logging_on_rx_msg,
62         .on_tx_request = logging_on_tx_msg,
63         .on_tx_response = logging_on_tx_msg,
64 };
65
66 static int load_module(void)
67 {
68         ast_sip_register_service(&logging_module);
69         return AST_MODULE_LOAD_SUCCESS;
70 }
71
72 static int unload_module(void)
73 {
74         ast_sip_unregister_service(&logging_module);
75         return 0;
76 }
77
78 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "SIP Packet Logger",
79                 .load = load_module,
80                 .unload = unload_module,
81                 .load_pri = AST_MODPRI_APP_DEPEND,
82                );