# HG changeset patch # User Luke Mewburn # Date 1582584315 -39600 # Node ID ad50ef2eddeabb15cf33ab49727c4fa232a0aad2 # Parent 4bd30996ad7f3c19bce08bcfd6a60b18645a5065 dbg_dict_dump: new extension to dump dictionary when loaded Add extension dbg_dict_dump to log the dictionary when loaded. Remove debug code in extension dict_dcca_3gpp to log the vendor dictionary if the config file is the word "dumpdict" that I added on 2020-02-19. diff -r 4bd30996ad7f -r ad50ef2eddea extensions/CMakeLists.txt --- a/extensions/CMakeLists.txt Wed Feb 19 18:12:45 2020 +1100 +++ b/extensions/CMakeLists.txt Tue Feb 25 09:45:15 2020 +1100 @@ -88,6 +88,7 @@ #### # Debug & test extensions +FD_EXTENSION_SUBDIR(dbg_dict_dump "Log dictionary dump" ON) FD_EXTENSION_SUBDIR(dbg_loglevel "Read loglevel from file -- allows runtime change" ON) FD_EXTENSION_SUBDIR(dbg_monitor "Outputs periodical status information" ON) FD_EXTENSION_SUBDIR(dbg_msg_timings "Show some timing information for messages" ON) diff -r 4bd30996ad7f -r ad50ef2eddea extensions/dbg_dict_dump/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extensions/dbg_dict_dump/CMakeLists.txt Tue Feb 25 09:45:15 2020 +1100 @@ -0,0 +1,12 @@ +# Dictionary dump extension +PROJECT("Dictionary dump extension" C) +FD_ADD_EXTENSION(dbg_dict_dump dbg_dict_dump.c) + + +#### +## INSTALL section ## + +INSTALL(TARGETS dbg_dict_dump + LIBRARY DESTINATION ${INSTALL_EXTENSIONS_SUFFIX} + COMPONENT freeDiameter-debug-tools) + diff -r 4bd30996ad7f -r ad50ef2eddea extensions/dbg_dict_dump/dbg_dict_dump.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extensions/dbg_dict_dump/dbg_dict_dump.c Tue Feb 25 09:45:15 2020 +1100 @@ -0,0 +1,62 @@ +/********************************************************************************************************* +* Software License Agreement (BSD License) * +* Author: Luke Mewburn * +* * +* Copyright (c) 2020, WIDE Project and NICT * +* All rights reserved. * +* * +* Redistribution and use of this software in source and binary forms, with or without modification, are * +* permitted provided that the following conditions are met: * +* * +* * Redistributions of source code must retain the above * +* copyright notice, this list of conditions and the * +* following disclaimer. * +* * +* * Redistributions in binary form must reproduce the above * +* copyright notice, this list of conditions and the * +* following disclaimer in the documentation and/or other * +* materials provided with the distribution. * +* * +* * Neither the name of the WIDE Project or NICT nor the * +* names of its contributors may be used to endorse or * +* promote products derived from this software without * +* specific prior written permission of WIDE Project and * +* NICT. * +* * +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * +* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * +* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * +* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * +* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * +* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * +* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * +*********************************************************************************************************/ + +/* This extension logs a dump of the global dictionary */ + +#include + +static int dbg_dict_dump_entry(char * conffile) +{ + TRACE_ENTRY("%p", conffile); + + char * tbuf = NULL; size_t tbuflen = 0; + LOG_N("Dumping dictionary information"); + LOG_N("%s", fd_dict_dump(&tbuf, &tbuflen, NULL, fd_g_config->cnf_dict)); + free(tbuf); + + LOG_N("Dictionary dumped"); + + return 0; +} + +void fd_ext_fini(void) +{ + TRACE_ENTRY(); + + /* Nothing to do */ + return; +} + +EXTENSION_ENTRY("dbg_dict_dump", dbg_dict_dump_entry); diff -r 4bd30996ad7f -r ad50ef2eddea extensions/dict_dcca_3gpp/dict_dcca_3gpp.c --- a/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c Wed Feb 19 18:12:45 2020 +1100 +++ b/extensions/dict_dcca_3gpp/dict_dcca_3gpp.c Tue Feb 25 09:45:15 2020 +1100 @@ -144,14 +144,12 @@ static int dict_dcca_3gpp_entry(char * conffile) { - struct dict_object * vendor = NULL; - /* Applications section */ { /* Create the vendors */ { struct dict_vendor_data vendor_data = { 10415, "3GPP" }; - CHECK_FCT(fd_dict_new(fd_g_config->cnf_dict, DICT_VENDOR, &vendor_data, NULL, &vendor)); + CHECK_FCT(fd_dict_new(fd_g_config->cnf_dict, DICT_VENDOR, &vendor_data, NULL, NULL)); } { struct dict_vendor_data vendor_data = { 5535, "3GPP2" }; @@ -10898,12 +10896,6 @@ PARSE_loc_rules(rules, rule_avp); } - if (conffile && (0 == strcmp(conffile, "dumpdict"))) { - char * tbuf = NULL; size_t tbuflen = 0; - LOG_D("dict_dcca_3gpp dictionary: %s", fd_dict_dump_object(&tbuf, &tbuflen, NULL, vendor)); - free(tbuf); - } - LOG_D( "Extension 'Dictionary definitions for DCCA 3GPP' initialized"); return 0; }