annotate extensions/dbg_msg_dumps/dbg_msg_dumps.c @ 1554:566bb46cc73f

Updated copyright information
author Sebastien Decugis <sdecugis@freediameter.net>
date Tue, 06 Oct 2020 21:34:53 +0800
parents 7a2ab0087788
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
1 /*********************************************************************************************************
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
2 * Software License Agreement (BSD License) *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
3 * Author: Sebastien Decugis <sdecugis@freediameter.net> *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
4 * *
1554
566bb46cc73f Updated copyright information
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1307
diff changeset
5 * Copyright (c) 2016, WIDE Project and NICT *
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
6 * All rights reserved. *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
7 * *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
8 * Redistribution and use of this software in source and binary forms, with or without modification, are *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
9 * permitted provided that the following conditions are met: *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
10 * *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
11 * * Redistributions of source code must retain the above *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
12 * copyright notice, this list of conditions and the *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
13 * following disclaimer. *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
14 * *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
15 * * Redistributions in binary form must reproduce the above *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
16 * copyright notice, this list of conditions and the *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
17 * following disclaimer in the documentation and/or other *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
18 * materials provided with the distribution. *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
19 * *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
20 * * Neither the name of the WIDE Project or NICT nor the *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
21 * names of its contributors may be used to endorse or *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
22 * promote products derived from this software without *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
23 * specific prior written permission of WIDE Project and *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
24 * NICT. *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
25 * *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
27 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
28 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
29 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
30 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
32 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
33 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
34 *********************************************************************************************************/
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
35
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
36 /* This extension uses the hooks mechanism to display the full content of received and sent messages, for
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
37 learning & debugging purpose.
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
38 Do NOT use this extension in production environment because it will slow down all operation. */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
39
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
40 /* You can add a configuration parameter on the LoadExtension line, e.g.
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
41 LoadExtension="dbg_msg_dump.fdx":"0x149";
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
42 The value is an hexadecimal value with the following bits meaning: */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
43 #define HK_ERRORS_QUIET 0x0001 /* errors are not dumped -- removes the default handling as well */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
44 #define HK_ERRORS_COMPACT 0x0002 /* errors in compact mode */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
45 #define HK_ERRORS_FULL 0x0004 /* errors in full mode (1 line with all the data) */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
46 #define HK_ERRORS_TREE 0x0008 /* errors in treeview mode (message split over multiple lines) */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
47
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
48 #define HK_SNDRCV_QUIET 0x0010 /* send+rcv are not dumped -- removes the default handling as well */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
49 #define HK_SNDRCV_COMPACT 0x0020 /* send+rcv in compact mode */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
50 #define HK_SNDRCV_FULL 0x0040 /* send+rcv in full mode */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
51 #define HK_SNDRCV_TREE 0x0080 /* send+rcv in tree mode */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
52
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
53 #define HK_ROUTING_QUIET 0x0100 /* routing decisions are not dumped -- removes the default handling as well */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
54 #define HK_ROUTING_COMPACT 0x0200 /* routing decisions in compact mode */
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
55 #define HK_ROUTING_FULL 0x0400 /* routing decisions in full mode */
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
56 #define HK_ROUTING_TREE 0x0800 /* routing decisions in tree mode */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
57
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
58 #define HK_PEERS_QUIET 0x1000 /* peers connections events are not dumped -- removes the default handling as well */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
59 #define HK_PEERS_COMPACT 0x2000 /* peers connections events in compact mode */
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
60 #define HK_PEERS_FULL 0x4000 /* peers connections events in full mode */
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
61 #define HK_PEERS_TREE 0x8000 /* peers connections events in tree mode */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
62 /*
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
63 Default value is HK_ERRORS_TREE + HK_SNDRCV_TREE + HK_PEERS_TREE
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
64 */
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
65
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
66 #include <freeDiameter/extension.h>
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
67
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
68 static struct fd_hook_hdl *md_hdl[4] = {NULL,NULL,NULL,NULL};
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
69 static uint32_t dump_level = HK_ERRORS_TREE | HK_SNDRCV_TREE | HK_PEERS_TREE; /* default */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
70 static char * buf = NULL;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
71 static size_t len;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
72 static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
73
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
74 /* The callback called when messages are received and sent */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
75 static void md_hook_cb_tree(enum fd_hook_type type, struct msg * msg, struct peer_hdr * peer, void * other, struct fd_hook_permsgdata *pmd, void * regdata)
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
76 {
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
77 char * peer_name = peer ? peer->info.pi_diamid : "<unknown peer>";
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
78
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
79 CHECK_POSIX_DO( pthread_mutex_lock(&mtx), );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
80
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
81 if (msg) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
82 CHECK_MALLOC_DO( fd_msg_dump_treeview(&buf, &len, NULL, msg, fd_g_config->cnf_dict, (type == HOOK_MESSAGE_PARSING_ERROR) ? 0 : 1, 1),
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
83 { LOG_E("Error while dumping a message"); pthread_mutex_unlock(&mtx); return; } );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
84 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
85
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
86 switch (type) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
87 /* errors */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
88 case HOOK_MESSAGE_FAILOVER:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
89 LOG_E("FAILOVER from '%s':", peer_name);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
90 LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
91 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
92 case HOOK_MESSAGE_PARSING_ERROR:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
93 if (msg) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
94 DiamId_t id = NULL;
1306
0d15dad33f0b Fix logic error when calling fd_msg_source_get().
Thomas Klausner <tk@giga.or.at>
parents: 1247
diff changeset
95 if (fd_msg_source_get( msg, &id, NULL ))
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
96 id = (DiamId_t)"<error getting source>";
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
97 if (!id)
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
98 id = (DiamId_t)"<local>";
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
99 LOG_E("PARSING ERROR: '%s' from '%s': ", (char *)other, (char *)id);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
100 LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
101 } else {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
102 struct fd_cnx_rcvdata *rcv_data = other;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
103 CHECK_MALLOC_DO(fd_dump_extend_hexdump(&buf, &len, NULL, rcv_data->buffer, rcv_data->length, 0, 0), break);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
104 LOG_E("PARSING ERROR: %zdB msg from '%s': %s", rcv_data->length, peer_name, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
105 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
106 break;
1301
50fb308e84f7 Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1299
diff changeset
107 case HOOK_MESSAGE_PARSING_ERROR2:
50fb308e84f7 Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1299
diff changeset
108 LOG_E("PARSING ERROR, returning:");
50fb308e84f7 Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1299
diff changeset
109 LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL);
50fb308e84f7 Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1299
diff changeset
110 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
111 case HOOK_MESSAGE_ROUTING_ERROR:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
112 LOG_E("ROUTING ERROR '%s' for: ", (char *)other);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
113 LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
114 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
115 case HOOK_MESSAGE_DROPPED:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
116 LOG_E("DROPPED '%s'", (char *)other);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
117 LOG_SPLIT(FD_LOG_ERROR, " ", buf, NULL);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
118 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
119
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
120 /* send receive */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
121 case HOOK_MESSAGE_RECEIVED:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
122 LOG_N("RCV from '%s':", peer_name);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
123 LOG_SPLIT(FD_LOG_NOTICE, " ", buf, NULL);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
124 break;
1299
035f489b845b Added a new hook HOOK_MESSAGE_SENDING
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1247
diff changeset
125 case HOOK_MESSAGE_SENDING:
035f489b845b Added a new hook HOOK_MESSAGE_SENDING
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1247
diff changeset
126 LOG_N("SNDING to '%s':", peer_name);
035f489b845b Added a new hook HOOK_MESSAGE_SENDING
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1247
diff changeset
127 LOG_SPLIT(FD_LOG_NOTICE, " ", buf, NULL);
035f489b845b Added a new hook HOOK_MESSAGE_SENDING
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1247
diff changeset
128 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
129 case HOOK_MESSAGE_SENT:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
130 LOG_N("SND to '%s':", peer_name);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
131 LOG_SPLIT(FD_LOG_NOTICE, " ", buf, NULL);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
132 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
133
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
134 /* routing */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
135 case HOOK_MESSAGE_LOCAL:
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
136 LOG_N("ISSUED:");
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
137 LOG_SPLIT(FD_LOG_NOTICE, " ", buf, NULL);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
138 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
139 case HOOK_MESSAGE_ROUTING_FORWARD:
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
140 LOG_N("FORWARDING: %s", buf);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
141 LOG_SPLIT(FD_LOG_NOTICE, " ", buf, NULL);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
142 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
143 case HOOK_MESSAGE_ROUTING_LOCAL:
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
144 LOG_N("DISPATCHING: %s", buf);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
145 LOG_SPLIT(FD_LOG_NOTICE, " ", buf, NULL);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
146 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
147
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
148 /* peers */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
149 case HOOK_PEER_CONNECT_FAILED:
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
150 LOG_N("CONNECT FAILED to %s: %s", peer_name, (char *)other);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
151 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
152 case HOOK_PEER_CONNECT_SUCCESS:
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
153 {
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
154 char protobuf[40];
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
155 if (peer) {
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
156 CHECK_FCT_DO(fd_peer_cnx_proto_info(peer, protobuf, sizeof(protobuf)), break );
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
157 } else {
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
158 protobuf[0] = '-';
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
159 protobuf[1] = '\0';
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
160 }
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
161 LOG_N("CONNECTED TO '%s' (%s):", peer_name, protobuf);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
162 LOG_SPLIT(FD_LOG_NOTICE, " ", buf, NULL);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
163 }
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
164 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
165
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
166 /* Not handled */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
167 case HOOK_DATA_RECEIVED:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
168 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
169 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
170
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
171 CHECK_POSIX_DO( pthread_mutex_unlock(&mtx), );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
172 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
173
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
174 static void md_hook_cb_full(enum fd_hook_type type, struct msg * msg, struct peer_hdr * peer, void * other, struct fd_hook_permsgdata *pmd, void * regdata)
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
175 {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
176 char * peer_name = peer ? peer->info.pi_diamid : "<unknown peer>";
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
177
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
178 CHECK_POSIX_DO( pthread_mutex_lock(&mtx), );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
179
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
180 if (msg) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
181 CHECK_MALLOC_DO( fd_msg_dump_full(&buf, &len, NULL, msg, fd_g_config->cnf_dict, (type == HOOK_MESSAGE_PARSING_ERROR) ? 0 : 1, 1),
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
182 { LOG_E("Error while dumping a message"); pthread_mutex_unlock(&mtx); return; } );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
183 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
184
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
185 switch (type) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
186 /* errors */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
187 case HOOK_MESSAGE_FAILOVER:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
188 LOG_E("FAILOVER from '%s': %s", peer_name, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
189 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
190 case HOOK_MESSAGE_PARSING_ERROR:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
191 if (msg) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
192 DiamId_t id = NULL;
1306
0d15dad33f0b Fix logic error when calling fd_msg_source_get().
Thomas Klausner <tk@giga.or.at>
parents: 1247
diff changeset
193 if (fd_msg_source_get( msg, &id, NULL ))
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
194 id = (DiamId_t)"<error getting source>";
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
195 if (!id)
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
196 id = (DiamId_t)"<local>";
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
197 LOG_E("PARSING ERROR: '%s' from '%s': %s", (char *)other, (char *)id, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
198 } else {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
199 struct fd_cnx_rcvdata *rcv_data = other;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
200 CHECK_MALLOC_DO(fd_dump_extend_hexdump(&buf, &len, NULL, rcv_data->buffer, rcv_data->length, 0, 0), break);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
201 LOG_E("PARSING ERROR: %zdB msg from '%s': %s", rcv_data->length, peer_name, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
202 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
203 break;
1301
50fb308e84f7 Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1299
diff changeset
204 case HOOK_MESSAGE_PARSING_ERROR2:
50fb308e84f7 Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1299
diff changeset
205 LOG_E("PARSING ERROR, returning: %s", buf);
50fb308e84f7 Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1299
diff changeset
206 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
207 case HOOK_MESSAGE_ROUTING_ERROR:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
208 LOG_E("ROUTING ERROR '%s' for: %s", (char *)other, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
209 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
210 case HOOK_MESSAGE_DROPPED:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
211 LOG_E("DROPPED '%s' %s", (char *)other, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
212 break;
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
213
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
214 /* send receive */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
215 case HOOK_MESSAGE_RECEIVED:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
216 LOG_N("RCV from '%s': %s", peer_name, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
217 break;
1299
035f489b845b Added a new hook HOOK_MESSAGE_SENDING
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1247
diff changeset
218 case HOOK_MESSAGE_SENDING:
035f489b845b Added a new hook HOOK_MESSAGE_SENDING
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1247
diff changeset
219 LOG_N("SNDING to '%s': %s", peer_name, buf);
035f489b845b Added a new hook HOOK_MESSAGE_SENDING
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1247
diff changeset
220 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
221 case HOOK_MESSAGE_SENT:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
222 LOG_N("SND to '%s': %s", peer_name, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
223 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
224
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
225 /* routing */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
226 case HOOK_MESSAGE_LOCAL:
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
227 LOG_N("ISSUED: %s", buf);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
228 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
229 case HOOK_MESSAGE_ROUTING_FORWARD:
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
230 LOG_N("FORWARDING: %s", buf);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
231 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
232 case HOOK_MESSAGE_ROUTING_LOCAL:
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
233 LOG_N("DISPATCHING: %s", buf);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
234 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
235
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
236 /* peers */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
237 case HOOK_PEER_CONNECT_FAILED:
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
238 LOG_N("CONNECT FAILED to %s: %s", peer_name, (char *)other);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
239 break;
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
240 case HOOK_PEER_CONNECT_SUCCESS: {
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
241 char protobuf[40];
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
242 if (peer) {
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
243 CHECK_FCT_DO(fd_peer_cnx_proto_info(peer, protobuf, sizeof(protobuf)), break );
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
244 } else {
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
245 protobuf[0] = '-';
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
246 protobuf[1] = '\0';
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
247 }
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
248 LOG_N("CONNECTED TO '%s' (%s): %s", peer_name, protobuf, buf);
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
249 }
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
250 break;
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
251 /* Not handled */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
252 case HOOK_DATA_RECEIVED:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
253 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
254 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
255
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
256 CHECK_POSIX_DO( pthread_mutex_unlock(&mtx), );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
257 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
258
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
259 static void md_hook_cb_compact(enum fd_hook_type type, struct msg * msg, struct peer_hdr * peer, void * other, struct fd_hook_permsgdata *pmd, void * regdata)
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
260 {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
261 char * peer_name = peer ? peer->info.pi_diamid : "<unknown peer>";
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
262
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
263 CHECK_POSIX_DO( pthread_mutex_lock(&mtx), );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
264
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
265 if (msg) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
266 CHECK_MALLOC_DO( fd_msg_dump_summary(&buf, &len, NULL, msg, fd_g_config->cnf_dict, 0, 0),
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
267 { LOG_E("Error while dumping a message"); pthread_mutex_unlock(&mtx); return; } );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
268 }
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
269
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
270 switch (type) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
271 /* errors */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
272 case HOOK_MESSAGE_FAILOVER:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
273 LOG_E("FAILOVER from '%s': %s", peer_name, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
274 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
275 case HOOK_MESSAGE_PARSING_ERROR:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
276 if (msg) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
277 DiamId_t id = NULL;
1306
0d15dad33f0b Fix logic error when calling fd_msg_source_get().
Thomas Klausner <tk@giga.or.at>
parents: 1247
diff changeset
278 if (fd_msg_source_get( msg, &id, NULL ))
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
279 id = (DiamId_t)"<error getting source>";
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
280 if (!id)
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
281 id = (DiamId_t)"<local>";
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
282 LOG_E("PARSING ERROR: '%s' from '%s': %s", (char *)other, (char *)id, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
283 } else {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
284 struct fd_cnx_rcvdata *rcv_data = other;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
285 CHECK_MALLOC_DO(fd_dump_extend_hexdump(&buf, &len, NULL, rcv_data->buffer, rcv_data->length, 0, 0), break);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
286 LOG_E("PARSING ERROR: %zdB msg from '%s': %s", rcv_data->length, peer_name, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
287 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
288 break;
1301
50fb308e84f7 Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1299
diff changeset
289 case HOOK_MESSAGE_PARSING_ERROR2:
50fb308e84f7 Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1299
diff changeset
290 LOG_E("PARSING ERROR, returning: %s", buf);
50fb308e84f7 Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1299
diff changeset
291 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
292 case HOOK_MESSAGE_ROUTING_ERROR:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
293 LOG_E("ROUTING ERROR '%s' for: %s", (char *)other, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
294 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
295 case HOOK_MESSAGE_DROPPED:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
296 LOG_E("DROPPED '%s' %s", (char *)other, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
297 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
298
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
299 /* send receive */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
300 case HOOK_MESSAGE_RECEIVED:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
301 LOG_N("RCV from '%s': %s", peer_name, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
302 break;
1299
035f489b845b Added a new hook HOOK_MESSAGE_SENDING
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1247
diff changeset
303 case HOOK_MESSAGE_SENDING:
035f489b845b Added a new hook HOOK_MESSAGE_SENDING
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1247
diff changeset
304 LOG_N("SNDING to '%s': %s", peer_name, buf);
035f489b845b Added a new hook HOOK_MESSAGE_SENDING
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1247
diff changeset
305 break;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
306 case HOOK_MESSAGE_SENT:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
307 LOG_N("SND to '%s': %s", peer_name, buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
308 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
309
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
310 /* routing */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
311 case HOOK_MESSAGE_LOCAL:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
312 LOG_N("ISSUED: %s", buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
313 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
314 case HOOK_MESSAGE_ROUTING_FORWARD:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
315 LOG_N("FORWARDING: %s", buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
316 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
317 case HOOK_MESSAGE_ROUTING_LOCAL:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
318 LOG_N("DISPATCHING: %s", buf);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
319 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
320
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
321 /* peers */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
322 case HOOK_PEER_CONNECT_FAILED:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
323 LOG_N("CONNECT FAILED to %s: %s", peer_name, (char *)other);
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
324 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
325 case HOOK_PEER_CONNECT_SUCCESS: {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
326 char protobuf[40];
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
327 if (peer) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
328 CHECK_FCT_DO(fd_peer_cnx_proto_info(peer, protobuf, sizeof(protobuf)), break );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
329 } else {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
330 protobuf[0] = '-';
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
331 protobuf[1] = '\0';
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
332 }
1247
2c09e2545188 Remove useless CER/CEA compact dump in dbg_msg_dumps extension
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1245
diff changeset
333 LOG_N("CONNECTED TO '%s' (%s)", peer_name, protobuf);
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
334 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
335 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
336 /* Not handled */
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
337 case HOOK_DATA_RECEIVED:
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
338 break;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
339 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
340
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
341 CHECK_POSIX_DO( pthread_mutex_unlock(&mtx), );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
342 }
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
343
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
344 static void md_hook_cb_quiet(enum fd_hook_type type, struct msg * msg, struct peer_hdr * peer, void * other, struct fd_hook_permsgdata *pmd, void * regdata)
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
345 {
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
346 }
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
347
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
348 /* Entry point */
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
349 static int md_main(char * conffile)
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
350 {
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
351 uint32_t mask_errors, mask_sndrcv, mask_routing, mask_peers;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
352 uint32_t mask_quiet, mask_compact, mask_full, mask_tree;
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
353 TRACE_ENTRY("%p", conffile);
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
354
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
355 if (conffile != NULL) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
356 char * endp;
1244
24a03140a6aa Bug: parameters for peers were not taken into account
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1204
diff changeset
357 dump_level = (uint32_t)strtoul(conffile, &endp, 16);
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
358 CHECK_PARAMS_DO( *endp == '\0', {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
359 LOG_E("Configuration parameter must be in the form \"0xNNNN\"");
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
360 return EINVAL; });
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
361 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
362
1301
50fb308e84f7 Added a new hook to allow extensions act on the error messages being returned in case of parsing error (e.g. if some mandatory AVP are expected in error messages)
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1299
diff changeset
363 mask_errors = HOOK_MASK( HOOK_MESSAGE_FAILOVER, HOOK_MESSAGE_PARSING_ERROR, HOOK_MESSAGE_PARSING_ERROR2, HOOK_MESSAGE_ROUTING_ERROR, HOOK_MESSAGE_DROPPED );
1299
035f489b845b Added a new hook HOOK_MESSAGE_SENDING
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1247
diff changeset
364 mask_sndrcv = HOOK_MASK( HOOK_MESSAGE_RECEIVED, HOOK_MESSAGE_SENT ); /* We don t access SENDING hook here */
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
365 mask_routing= HOOK_MASK( HOOK_MESSAGE_LOCAL, HOOK_MESSAGE_ROUTING_FORWARD, HOOK_MESSAGE_ROUTING_LOCAL );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
366 mask_peers = HOOK_MASK( HOOK_PEER_CONNECT_FAILED, HOOK_PEER_CONNECT_SUCCESS );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
367
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
368 mask_quiet = (dump_level & HK_ERRORS_QUIET) ? mask_errors : 0;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
369 mask_quiet |= (dump_level & HK_SNDRCV_QUIET) ? mask_sndrcv : 0;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
370 mask_quiet |= (dump_level & HK_ROUTING_QUIET) ? mask_routing : 0;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
371 mask_quiet |= (dump_level & HK_PEERS_QUIET) ? mask_peers : 0;
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
372
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
373 mask_compact = (dump_level & HK_ERRORS_COMPACT) ? mask_errors : 0;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
374 mask_compact |= (dump_level & HK_SNDRCV_COMPACT) ? mask_sndrcv : 0;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
375 mask_compact |= (dump_level & HK_ROUTING_COMPACT) ? mask_routing : 0;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
376 mask_compact |= (dump_level & HK_PEERS_COMPACT) ? mask_peers : 0;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
377
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
378 mask_full = (dump_level & HK_ERRORS_FULL) ? mask_errors : 0;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
379 mask_full |= (dump_level & HK_SNDRCV_FULL) ? mask_sndrcv : 0;
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
380 mask_full |= (dump_level & HK_ROUTING_FULL) ? mask_routing : 0;
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
381 mask_full |= (dump_level & HK_PEERS_FULL) ? mask_peers : 0;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
382
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
383 mask_tree = (dump_level & HK_ERRORS_TREE) ? mask_errors : 0;
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
384 mask_tree |= (dump_level & HK_SNDRCV_TREE) ? mask_sndrcv : 0;
1245
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
385 mask_tree |= (dump_level & HK_ROUTING_TREE) ? mask_routing : 0;
4b511d9b3def Change default dump of peer connection, add more options to the dbg_msg_dumps extensions
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1244
diff changeset
386 mask_tree |= (dump_level & HK_PEERS_TREE) ? mask_peers : 0;
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
387
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
388 if (mask_quiet) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
389 CHECK_FCT( fd_hook_register( mask_quiet, md_hook_cb_quiet, NULL, NULL, &md_hdl[0]) );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
390 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
391 if (mask_compact) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
392 CHECK_FCT( fd_hook_register( mask_compact, md_hook_cb_compact, NULL, NULL, &md_hdl[1]) );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
393 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
394 if (mask_full) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
395 CHECK_FCT( fd_hook_register( mask_full, md_hook_cb_full, NULL, NULL, &md_hdl[2]) );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
396 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
397 if (mask_tree) {
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
398 CHECK_FCT( fd_hook_register( mask_tree, md_hook_cb_tree, NULL, NULL, &md_hdl[3]) );
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
399 }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
400
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
401 return 0;
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
402 }
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
403
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
404 /* Cleanup */
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
405 void fd_ext_fini(void)
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
406 {
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
407 TRACE_ENTRY();
1204
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
408 if (md_hdl[0]) { CHECK_FCT_DO( fd_hook_unregister( md_hdl[0] ), ); }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
409 if (md_hdl[1]) { CHECK_FCT_DO( fd_hook_unregister( md_hdl[1] ), ); }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
410 if (md_hdl[2]) { CHECK_FCT_DO( fd_hook_unregister( md_hdl[2] ), ); }
a4cdde705f30 Add options to dbg_msg_dumps.fdx to allow more control over the behavior
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1168
diff changeset
411 if (md_hdl[2]) { CHECK_FCT_DO( fd_hook_unregister( md_hdl[3] ), ); }
1126
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
412 return ;
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
413 }
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
414
d6e18ebca0c5 New extension dbg_msg_dumps for debug / learning.
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff changeset
415 EXTENSION_ENTRY("dbg_msg_dumps", md_main);
"Welcome to our mercurial repository"