Changes in / [961:d95cd3ca9e8d:933:04f590da5821] in freeDiameter
- Files:
-
- 6 deleted
- 24 edited
Legend:
- Unmodified
- Added
- Removed
-
.hgtags
r961 r932 30 30 226f5957186ae4369467b070aeb61b1c631c9a5c 1.1.5-rc2 31 31 ae96ae28f3ddc48b9e2676e9538008eab2b9d60a 1.1.5 32 8500947421cb412b5f4f2dfffdf1a35b6fb369e0 FORK33 32 155d45d0653025f45b58ab96b6ba0d5e6fb7fcf8 1.1.6 -
extensions/_sample/CMakeLists.txt
r958 r653 1 1 # The sample extension 2 2 PROJECT("Sample extension") 3 4 # Overwrite the debug level for the extension code if configured 5 OPTION(DEBUG_LEVEL__SAMPLE "Overwrite debug level for the extension _sample if defined (valid values: FULL, ANNOYING, CALL...)" OFF) 6 IF (DEBUG_LEVEL__SAMPLE) 7 ADD_DEFINITIONS(-DTRACE_LEVEL=${DEBUG_LEVEL__SAMPLE}) 8 ENDIF (DEBUG_LEVEL__SAMPLE) 9 IF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") 10 MARK_AS_ADVANCED(DEBUG_LEVEL__SAMPLE) 11 ENDIF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") 3 12 4 13 # Compile as a module -
extensions/acl_wl/CMakeLists.txt
r958 r833 17 17 ) 18 18 19 # Overwrite the debug level for the extension code if configured 20 OPTION(DEBUG_LEVEL_ACL_WL "Overwrite debug level for the extension acl_wl if defined (valid values: FULL, ANNOYING, CALL...)" OFF) 21 IF (DEBUG_LEVEL_ACL_WL) 22 ADD_DEFINITIONS(-DTRACE_LEVEL=${DEBUG_LEVEL_ACL_WL}) 23 ENDIF (DEBUG_LEVEL_ACL_WL) 24 IF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") 25 MARK_AS_ADVANCED(DEBUG_LEVEL_ACL_WL) 26 ENDIF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") 27 19 28 # Compile as a module 20 29 FD_ADD_EXTENSION(acl_wl ${ACL_WL_SRC}) -
extensions/acl_wl/aw_conf.y
r961 r928 35 35 36 36 /* Yacc extension's configuration parser. 37 * See doc/a cl_wl.conf.sample for configuration file format37 * See doc/app_test.conf.sample for configuration file format 38 38 */ 39 39 -
extensions/app_diameap/diameap_tls.h
r959 r565 42 42 #include "diameap_defs.h" 43 43 #include <gnutls/gnutls.h> 44 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"45 44 #include <gcrypt.h> 46 #pragma GCC diagnostic warning "-Wdeprecated-declarations"47 45 #include <errno.h> 48 46 #include <pthread.h> -
extensions/app_diameap/libcrypt.h
r959 r425 40 40 #define LIBCRYPT_H_ 41 41 42 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"43 42 #include <gcrypt.h> 44 #pragma GCC diagnostic warning "-Wdeprecated-declarations"45 43 #include <stdio.h> 46 44 -
extensions/app_diameap/plugins/eap_md5/eap_md5.c
r959 r425 38 38 39 39 #include "../../plugins.h" 40 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"41 40 #include <gcrypt.h> 42 #pragma GCC diagnostic warning "-Wdeprecated-declarations"43 41 44 42 #define CHALLENGE_LEN 16 -
extensions/app_radgw/CMakeLists.txt
r958 r845 1 1 # The app_radgw extension 2 2 PROJECT("RADIUS/Diameter extensible gateway application for freeDiameter" C) 3 4 5 # Overwrite the debug level for the extension code if configured 6 OPTION(DEBUG_LEVEL_APP_RADGW "Overwrite debug level for the extension app_radgw if defined (valid values: FULL, ANNOYING, CALL...)" OFF) 7 IF (DEBUG_LEVEL_APP_RADGW) 8 ADD_DEFINITIONS(-DTRACE_LEVEL=${DEBUG_LEVEL_APP_RADGW}) 9 ENDIF (DEBUG_LEVEL_APP_RADGW) 10 IF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") 11 MARK_AS_ADVANCED(DEBUG_LEVEL_APP_RADGW) 12 ENDIF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") 3 13 4 14 -
extensions/app_sip/app_sip.h
r959 r639 39 39 #include <stdlib.h> 40 40 #include <stdio.h> 41 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"42 41 #include <gcrypt.h> 43 #pragma GCC diagnostic warning "-Wdeprecated-declarations"44 42 #include <string.h> 45 43 #include <mysql.h> -
extensions/rt_default/CMakeLists.txt
r958 r313 31 31 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) 32 32 33 # Overwrite the debug level for the extension code if configured, example: cmake -DDEBUG_LEVEL_RT_DEFAULT:STATIC=CALL ... 34 OPTION(DEBUG_LEVEL_RT_DEFAULT "Overwrite debug level for the extension rt_default if defined (valid values: FULL, ANNOYING, CALL...)" OFF) 35 IF (DEBUG_LEVEL_RT_DEFAULT) 36 ADD_DEFINITIONS(-DTRACE_LEVEL=${DEBUG_LEVEL_RT_DEFAULT}) 37 ENDIF (DEBUG_LEVEL_RT_DEFAULT) 38 IF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") 39 MARK_AS_ADVANCED(DEBUG_LEVEL_RT_DEFAULT) 40 ENDIF (NOT CMAKE_BUILD_TYPE MATCHES "Debug") 41 33 42 # Compile these files as a freeDiameter extension 34 43 FD_ADD_EXTENSION(rt_default ${RT_DEFAULT_SRC}) -
extensions/test_sip/test_sip.h
r959 r639 39 39 #include <stdlib.h> 40 40 #include <stdio.h> 41 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"42 41 #include <gcrypt.h> 43 #pragma GCC diagnostic warning "-Wdeprecated-declarations"44 42 #include <string.h> 45 43 #include <mysql.h> -
include/freeDiameter/libfdcore.h
r947 r904 87 87 88 88 /* Parse the freeDiameter.conf configuration file, load the extensions */ 89 int fd_core_parseconf(c onst char * conffile);89 int fd_core_parseconf(char * conffile); 90 90 91 91 /* Start the server & client threads */ … … 111 111 int cnf_eyec; /* Eye catcher: EYEC_CONFIG */ 112 112 113 c onst char*cnf_file; /* Configuration file to parse, default is DEFAULT_CONF_FILE */113 char *cnf_file; /* Configuration file to parse, default is DEFAULT_CONF_FILE */ 114 114 115 115 DiamId_t cnf_diamid; /* Diameter Identity of the local peer (FQDN -- ASCII) */ … … 350 350 * ENOMEM : Memory allocation for the new object element failed.) 351 351 */ 352 int fd_peer_add ( struct peer_info * info, c onst char * orig_dbg, void (*cb)(struct peer_info *, void *), void * cb_data );352 int fd_peer_add ( struct peer_info * info, char * orig_dbg, void (*cb)(struct peer_info *, void *), void * cb_data ); 353 353 354 354 /* -
include/freeDiameter/libfdproto.h
r961 r928 110 110 111 111 /* 112 * FUNCTION: fd_log 112 * FUNCTION: fd_log_debug_fstr 113 113 * MACRO: fd_log_debug 114 114 * 115 115 * PARAMETERS: 116 * loglevel : Integer, how important the message is116 * fstr : Stream where the text will be sent (default: stdout) 117 117 * format : Same format string as in the printf function 118 118 * ... : Same list as printf 119 119 * 120 120 * DESCRIPTION: 121 * Write information to log.121 * Log internal information for use of developpers only. 122 122 * The format and arguments may contain UTF-8 encoded data. The 123 * output medium is expected to support this encoding.123 * output medium (file or console) is expected to support this encoding. 124 124 * 125 125 * RETURN VALUE: 126 126 * None. 127 127 */ 128 void fd_log ( int, const char *, ... ); 129 #define fd_log_debug(format,args...) fd_log(FD_LOG_DEBUG, format, ## args) 130 void fd_log_debug_fstr( FILE *, const char *, ... ); 128 void fd_log_debug_fstr ( FILE * fstr, const char * format, ... ); 129 #define fd_log_debug(format,args...) fd_log_debug_fstr(NULL, format, ## args) 131 130 132 131 /* these are internal objects of the debug facility, … … 175 174 * 176 175 * PARAMETERS: 177 * loglevel : priority of the message176 * fstr : Stream where the text will be sent to (default: stdout) 178 177 * format : Same format string as in the printf function 179 178 * va_list : Argument list … … 185 184 * int : Success or failure 186 185 */ 187 int fd_log_handler_register ( void (*logger)( int loglevel, const char * format, va_listargs) );186 int fd_log_handler_register ( void (*logger)(const char * format, va_list *args) ); 188 187 189 188 /* … … 210 209 #endif /* ASSERT */ 211 210 212 /* log levels definitions */ 213 #define FD_LOG_DEBUG 0 214 #define FD_LOG_ERROR 5 215 216 /* print level definitions */ 211 /* levels definitions */ 217 212 #define NONE 0 /* Display no debug message */ 218 213 #define INFO 1 /* Display errors only */ … … 221 216 #define FCTS 6 /* Display entry parameters of most functions */ 222 217 #define CALL 9 /* Display calls to most functions (with CHECK macros) */ 218 219 /* Increment the debug level for a file at compilation time by defining -DTRACE_LEVEL=FULL for example. */ 220 #ifndef TRACE_LEVEL 221 #define TRACE_LEVEL NONE 222 #endif /* TRACE_LEVEL */ 223 224 /* The level of the file being compiled. */ 225 static int local_debug_level = TRACE_LEVEL; 223 226 224 227 /* A global level, changed by configuration or cmd line for example. Default is INFO (in libfdproto/log.c). */ … … 244 247 /* Boolean for tracing at a certain level */ 245 248 #ifdef DEBUG 246 #define TRACE_BOOL(_level_) ( ((_level_) <= fd_g_debug_lvl) \249 #define TRACE_BOOL(_level_) ( ((_level_) <= local_debug_level + fd_g_debug_lvl) \ 247 250 || (fd_debug_one_function && !strcmp(fd_debug_one_function, __PRETTY_FUNCTION__)) \ 248 251 || (fd_debug_one_file && !strcmp(fd_debug_one_file, __STRIPPED_FILE__) ) ) 249 252 #else /* DEBUG */ 250 #define TRACE_BOOL(_level_) ((_level_) <= fd_g_debug_lvl)253 #define TRACE_BOOL(_level_) ((_level_) <= local_debug_level + fd_g_debug_lvl) 251 254 #endif /* DEBUG */ 252 255 253 256 254 #define STD_TRACE_FMT_STRING "thread %s in %s@%s:%d: "255 257 /************* 256 258 The general debug macro, each call results in two lines of debug messages (change the macro for more compact output) … … 260 262 #define TRACE_DEBUG(level,format,args... ) { \ 261 263 if ( TRACE_BOOL(level) ) { \ 264 char __buf[25]; \ 262 265 const char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ 263 fd_log(level, STD_TRACE_FMT_STRING format, \ 264 __thn, __PRETTY_FUNCTION__, __FILE__, __LINE__, ## args); \ 266 fd_log_debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ 267 "\t%s|%*s" format "\n", \ 268 __thn, fd_log_time(NULL, __buf, sizeof(__buf)), __PRETTY_FUNCTION__, __FILE__, __LINE__,\ 269 (level < FULL)?"@":" ",level, "", ## args); \ 265 270 } \ 266 271 } … … 270 275 if ( TRACE_BOOL(level) ) { \ 271 276 if (fd_g_debug_lvl > FULL) { \ 277 char __buf[25]; \ 272 278 const char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ 273 fd_log(level, STD_TRACE_FMT_STRING format, \ 274 __thn, __PRETTY_FUNCTION__, __FILE__, __LINE__, ## args); \ 279 fd_log_debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ 280 "\t%s|%*s" format "\n", \ 281 __thn, fd_log_time(NULL, __buf, sizeof(__buf)), __PRETTY_FUNCTION__, __FILE__, __LINE__,\ 282 (level < FULL)?"@":" ",level, "", ## args); \ 275 283 } else { \ 276 fd_log (level, format, ## args);\284 fd_log_debug(format "\n", ## args); \ 277 285 } \ 278 286 } \ … … 308 316 #define TRACE_DEBUG_BUFFER(level, prefix, buf, bufsz, suffix ) { \ 309 317 if ( TRACE_BOOL(level) ) { \ 318 char __ts[25]; \ 310 319 int __i; \ 311 320 size_t __sz = (size_t)(bufsz); \ 312 321 uint8_t * __buf = (uint8_t *)(buf); \ 313 322 char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ 314 fd_log(level, STD_TRACE_FMT_STRING prefix, \ 315 __thn, __PRETTY_FUNCTION__, __FILE__, __LINE__); \ 323 fd_log_debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ 324 "\t%s|%*s" prefix , \ 325 __thn, fd_log_time(NULL, __ts, sizeof(__ts)), __PRETTY_FUNCTION__, __FILE__, __LINE__, \ 326 (level < FULL)?"@":" ",level, ""); \ 316 327 for (__i = 0; __i < __sz; __i++) { \ 317 fd_log (level, "%02.2hhx", __buf[__i]);\328 fd_log_debug("%02.2hhx", __buf[__i]); \ 318 329 } \ 319 fd_log (level, suffix);\330 fd_log_debug(suffix "\n"); \ 320 331 } \ 321 332 } … … 334 345 335 346 /* Dump one sockaddr Node information */ 336 #define sSA_DUMP_NODE( buf, bufsize, sa, flag ) {\347 #define sSA_DUMP_NODE( sa, flag ) { \ 337 348 sSA * __sa = (sSA *)(sa); \ 338 349 char __addrbuf[INET6_ADDRSTRLEN]; \ … … 346 357 flag); \ 347 358 if (__rc) \ 348 snprintf(buf, bufsize, "%s",gai_strerror(__rc)); \359 fd_log_debug("%s", (char *)gai_strerror(__rc)); \ 349 360 else \ 350 snprintf(buf, bufsize, "%s", &__addrbuf[0]);\361 fd_log_debug("%s", &__addrbuf[0]); \ 351 362 } else { \ 352 snprintf(buf, bufsize, "(NULL / ANY)");\363 fd_log_debug("(NULL / ANY)"); \ 353 364 } \ 354 365 } 355 366 /* Same but with the port (service) also */ 356 #define sSA_DUMP_NODE_SERV( buf, bufsize, sa, flag ) {\367 #define sSA_DUMP_NODE_SERV( sa, flag ) { \ 357 368 sSA * __sa = (sSA *)(sa); \ 358 369 char __addrbuf[INET6_ADDRSTRLEN]; \ … … 367 378 flag); \ 368 379 if (__rc) \ 369 snprintf(buf, bufsize, "%s", gai_strerror(__rc));\380 fd_log_debug("%s", (char *)gai_strerror(__rc)); \ 370 381 else \ 371 snprintf(buf, bufsize, "[%s]:%s", &__addrbuf[0],&__servbuf[0]);\382 fd_log_debug("[%s]:%s", &__addrbuf[0],&__servbuf[0]); \ 372 383 } else { \ 373 snprintf(buf, bufsize,"(NULL / ANY)");\384 fd_log_debug("(NULL / ANY)"); \ 374 385 } \ 375 386 } … … 378 389 #define TRACE_DEBUG_sSA(level, prefix, sa, flags, suffix ) { \ 379 390 if ( TRACE_BOOL(level) ) { \ 380 char buf[1024];\391 char __buf[25]; \ 381 392 char * __thn = ((char *)pthread_getspecific(fd_log_thname) ?: "unnamed"); \ 382 sSA_DUMP_NODE_SERV(buf, sizeof(buf), sa, flags ); \ 383 fd_log(level, STD_TRACE_FMT_STRING "%s%s%s", \ 384 __thn, __PRETTY_FUNCTION__, __FILE__, __LINE__, prefix, buf, suffix); \ 393 fd_log_debug("\t | tid:%-20s\t%s\tin %s@%s:%d\n" \ 394 "\t%s|%*s" prefix , \ 395 __thn, fd_log_time(NULL, __buf, sizeof(__buf)), __PRETTY_FUNCTION__, __FILE__, __LINE__,\ 396 (level < FULL)?"@":" ",level, ""); \ 397 sSA_DUMP_NODE_SERV( sa, flags ); \ 398 fd_log_debug(suffix "\n"); \ 385 399 } \ 386 400 } … … 404 418 #define TRACE_DEBUG_sSA(level, prefix, sa, flags, suffix ) 405 419 #define TRACE_DEBUG_ERROR(format,args... ) { \ 406 fd_log (FD_LOG_ERROR, format, ## args); \420 fd_log_debug(format "\n", ## args); \ 407 421 } 408 422 #endif /* STRIP_DEBUG_CODE */ … … 1431 1445 1432 1446 ret = fd_dict_search ( dict, DICT_AVP, AVP_BY_NAME_AND_VENDOR, &avpvendorboolean, &avp_sampleboolean, ENOENT); 1433 1434 -- this would also work, but be slower, because it has to search all vendor dictionaries --1435 ret = fd_dict_search ( dict, DICT_AVP, AVP_BY_NAME_ALL_VENDORS, "Sample-Boolean", &avp_sampleboolean, ENOENT);1436 1447 1437 1448 } -
libfdcore/cnxctx.c
r961 r928 229 229 230 230 if (TRACE_BOOL(INFO)) { 231 char buf[1024];232 sSA_DUMP_NODE( buf, sizeof(buf),&ss, NI_NUMERICHOST );233 fd_log_debug(" %s : accepted new client [%s].\n", fd_cnx_getid(serv), buf);231 fd_log_debug("%s : accepted new client [", fd_cnx_getid(serv)); 232 sSA_DUMP_NODE( &ss, NI_NUMERICHOST ); 233 fd_log_debug("].\n"); 234 234 } 235 235 … … 312 312 313 313 if (TRACE_BOOL(INFO)) { 314 char buf[1024];315 sSA_DUMP_NODE_SERV( buf, sizeof(buf),sa, NI_NUMERICSERV);316 fd_log_debug(" Connection established to server '%s' (TCP:%d).\n", buf, sock);314 fd_log_debug("Connection established to server '"); 315 sSA_DUMP_NODE_SERV( sa, NI_NUMERICSERV); 316 fd_log_debug("' (TCP:%d).\n", sock); 317 317 } 318 318 … … 404 404 405 405 if (TRACE_BOOL(INFO)) { 406 char buf[1024];407 sSA_DUMP_NODE_SERV( buf, sizeof(buf),&primary, NI_NUMERICSERV);408 fd_log_debug(" Connection established to server '%s' (SCTP:%d, %d/%d streams).\n", buf, sock, cnx->cc_sctp_para.str_in, cnx->cc_sctp_para.str_out);406 fd_log_debug("Connection established to server '"); 407 sSA_DUMP_NODE_SERV( &primary, NI_NUMERICSERV); 408 fd_log_debug("' (SCTP:%d, %d/%d streams).\n", sock, cnx->cc_sctp_para.str_in, cnx->cc_sctp_para.str_out); 409 409 } 410 410 -
libfdcore/config.c
r947 r897 230 230 { 231 231 extern FILE * fddin; 232 c onst char * orig = NULL;232 char * orig = NULL; 233 233 234 234 /* Attempt to find the configuration file */ … … 238 238 fddin = fopen(fd_g_config->cnf_file, "r"); 239 239 if ((fddin == NULL) && (*fd_g_config->cnf_file != '/')) { 240 char * new_cnf = NULL;241 240 /* We got a relative path, attempt to add the default directory prefix */ 242 241 orig = fd_g_config->cnf_file; 243 CHECK_MALLOC( new_cnf = malloc(strlen(orig) + strlen(DEFAULT_CONF_PATH) + 2) ); /* we will not free it, but not important */ 244 sprintf( new_cnf, DEFAULT_CONF_PATH "/%s", orig ); 245 fd_g_config->cnf_file = new_cnf; 242 CHECK_MALLOC( fd_g_config->cnf_file = malloc(strlen(orig) + strlen(DEFAULT_CONF_PATH) + 2) ); /* we will not free it, but not important */ 243 sprintf( fd_g_config->cnf_file, DEFAULT_CONF_PATH "/%s", orig ); 246 244 fddin = fopen(fd_g_config->cnf_file, "r"); 247 245 } 248 246 if (fddin == NULL) { 249 247 int ret = errno; 250 TRACE_DEBUG_ERROR("Unable to open configuration file for reading; tried the following locations: %s%s%s; Error: %s\n", 251 orig ?: "", orig? " and " : "", fd_g_config->cnf_file, strerror(ret)); 248 if (orig) { 249 fprintf(stderr, "Unable to open configuration file for reading\n" 250 "Tried the following locations:\n" 251 " - %s\n" 252 " - %s\n" 253 "Error: %s\n", orig, fd_g_config->cnf_file, strerror(ret)); 254 } else { 255 fprintf(stderr, "Unable to open '%s' for reading: %s\n", fd_g_config->cnf_file, strerror(ret)); 256 } 252 257 return ret; 253 258 } … … 347 352 fd_list_unlink(&ep->chain); 348 353 if (TRACE_BOOL(INFO)) { 349 char buf[1024];350 sSA_DUMP_NODE( buf, sizeof(buf),&ep->sa, NI_NUMERICHOST );351 fd_log_debug(" Info: Removing local address conflicting with the flags no_IP / no_IP6 : %s\n", buf);354 fd_log_debug("Info: Removing local address conflicting with the flags no_IP / no_IP6 : "); 355 sSA_DUMP_NODE( &ep->sa, NI_NUMERICHOST ); 356 fd_log_debug("\n"); 352 357 } 353 358 free(ep); -
libfdcore/core.c
r961 r928 226 226 227 227 /* Parse the freeDiameter.conf configuration file, load the extensions */ 228 int fd_core_parseconf(c onst char * conffile)228 int fd_core_parseconf(char * conffile) 229 229 { 230 230 TRACE_ENTRY("%p", conffile); -
libfdcore/endpoints.c
r946 r740 59 59 60 60 if (TRACE_BOOL(ANNOYING + 1)) { 61 char buf[1024];62 sSA_DUMP_NODE_SERV( buf, sizeof(buf), sa, NI_NUMERICHOST | NI_NUMERICSERV );63 61 TRACE_DEBUG(ANNOYING, " DEBUG:fd_ep_add_merge Current list:"); 64 62 fd_ep_dump( 4, list ); 65 63 TRACE_DEBUG(ANNOYING, " DEBUG:fd_ep_add_merge Adding:"); 66 fd_log_debug(" %s {%s%s%s%s}\n", buf, 64 fd_log_debug(" "); 65 sSA_DUMP_NODE_SERV( sa, NI_NUMERICHOST | NI_NUMERICSERV ); 66 fd_log_debug(" {%s%s%s%s}\n", 67 67 (flags & EP_FL_CONF) ? "C" : "-", 68 68 (flags & EP_FL_DISC) ? "D" : "-", … … 336 336 void fd_ep_dump_one( char * prefix, struct fd_endpoint * ep, char * suffix ) 337 337 { 338 char buf[1024]; 339 340 sSA_DUMP_NODE_SERV( buf, sizeof(buf), &ep->sa, NI_NUMERICHOST | NI_NUMERICSERV ); 341 fd_log_debug("%s%s {%s%s%s%s}%s", prefix ?: "", buf, 338 if (prefix) 339 fd_log_debug("%s", prefix); 340 341 sSA_DUMP_NODE_SERV( &ep->sa, NI_NUMERICHOST | NI_NUMERICSERV ); 342 fd_log_debug(" {%s%s%s%s}", 342 343 (ep->flags & EP_FL_CONF) ? "C" : "-", 343 344 (ep->flags & EP_FL_DISC) ? "D" : "-", 344 345 (ep->flags & EP_FL_ADV) ? "A" : "-", 345 346 (ep->flags & EP_FL_LL) ? "L" : "-", 346 (ep->flags & EP_FL_PRIMARY) ? "P" : "-", 347 suffix ?: ""); 347 (ep->flags & EP_FL_PRIMARY) ? "P" : "-"); 348 if (suffix) 349 fd_log_debug("%s", suffix); 348 350 } 349 351 -
libfdcore/peers.c
r961 r933 91 91 92 92 /* Add a new peer entry */ 93 int fd_peer_add ( struct peer_info * info, c onst char * orig_dbg, void (*cb)(struct peer_info *, void *), void * cb_data )93 int fd_peer_add ( struct peer_info * info, char * orig_dbg, void (*cb)(struct peer_info *, void *), void * cb_data ) 94 94 { 95 95 struct fd_peer *p = NULL; -
libfdcore/sctp.c
r961 r928 909 909 } 910 910 if (TRACE_BOOL(SCTP_LEVEL)) { 911 char buf[1024];912 sSA_DUMP_NODE_SERV(buf, sizeof(buf), &status.sstat_primary.spinfo_address, NI_NUMERICHOST | NI_NUMERICSERV );913 911 fd_log_debug( "SCTP_STATUS : sstat_state : %i\n" , status.sstat_state); 914 912 fd_log_debug( " sstat_rwnd : %u\n" , status.sstat_rwnd); … … 918 916 fd_log_debug( " sstat_outstrms : %hu\n", status.sstat_outstrms); 919 917 fd_log_debug( " sstat_fragmentation_point : %u\n" , status.sstat_fragmentation_point); 920 fd_log_debug( " sstat_primary.spinfo_address : %s\n" , buf); 918 fd_log_debug( " sstat_primary.spinfo_address : "); 919 sSA_DUMP_NODE_SERV(&status.sstat_primary.spinfo_address, NI_NUMERICHOST | NI_NUMERICSERV ); 920 fd_log_debug( "\n" ); 921 921 fd_log_debug( " sstat_primary.spinfo_state : %d\n" , status.sstat_primary.spinfo_state); 922 922 fd_log_debug( " sstat_primary.spinfo_cwnd : %u\n" , status.sstat_primary.spinfo_cwnd); -
libfdproto/dictionary.c
r961 r928 1278 1278 _OBINFO(obj).dump_data(&obj->data); 1279 1279 1280 fd_log_debug("\n"); 1281 1280 1282 if (depth) { 1281 1283 int i; … … 1468 1470 1469 1471 /* Done! */ 1472 CHECK_FCT( dump_add_str(outstr, offset, outlen, "\n") ); 1470 1473 return 0; 1471 1474 } … … 1722 1725 switch (type) { 1723 1726 case DICT_VENDOR: 1724 TRACE_DEBUG(FULL, "Vendor %s already in dictionary", new->data.vendor.vendor_name);1725 1727 /* if we are here, it means the two vendors id are identical */ 1726 1728 if (fd_os_cmp(locref->data.vendor.vendor_name, locref->datastr_len, … … 1734 1736 1735 1737 case DICT_APPLICATION: 1736 TRACE_DEBUG(FULL, "Application %s already in dictionary", new->data.application.application_name);1737 1738 /* got same id */ 1738 1739 if (fd_os_cmp(locref->data.application.application_name, locref->datastr_len, … … 1745 1746 1746 1747 case DICT_TYPE: 1747 TRACE_DEBUG(FULL, "Type %s already in dictionary", new->data.type.type_name);1748 1748 /* got same name */ 1749 1749 if (locref->data.type.type_base != new->data.type.type_base) { … … 1768 1768 1769 1769 case DICT_ENUMVAL: 1770 TRACE_DEBUG(FULL, "Enum %s already in dictionary", new->data.enumval.enum_name);1771 1770 /* got either same name or same value. We check that both are true */ 1772 1771 if (order_enum_by_name(locref, new)) { … … 1782 1781 1783 1782 case DICT_AVP: 1784 TRACE_DEBUG(FULL, "AVP %s already in dictionary", new->data.avp.avp_name);1785 1783 /* got either same name or code */ 1786 1784 if (order_avp_by_code(locref, new)) { … … 1812 1810 1813 1811 case DICT_COMMAND: 1814 TRACE_DEBUG(FULL, "Command %s already in dictionary", new->data.cmd.cmd_name);1815 1812 /* We got either same name, or same code + R flag */ 1816 1813 if (order_cmd_by_name(locref, new)) { -
libfdproto/log.c
r961 r928 44 44 int fd_g_debug_lvl = INFO; 45 45 46 static void fd_internal_logger( int, const char *, va_list );47 48 46 /* These may be used to pass specific debug requests via the command-line parameters */ 49 47 char * fd_debug_one_function = NULL; … … 55 53 56 54 /* Allow passing of the log and debug information from base stack to extensions */ 57 void (*fd_ logger)( int loglevel, const char * format, va_list args ) = fd_internal_logger;55 void (*fd_external_logger)( const char * format, va_list *args ) = NULL; 58 56 59 /* Register an external call back for tracing and debug */60 int fd_log_handler_register( void (*logger)( int loglevel, const char * format, va_list args))57 /* Register an dexternal call back for tracing and debug */ 58 int fd_log_handler_register( void (*logger)(const char * format, va_list *args)) 61 59 { 62 60 CHECK_PARAMS( logger ); 63 61 64 if ( fd_ logger != fd_internal_logger)62 if ( fd_external_logger != NULL ) 65 63 { 66 64 return EALREADY; /* only one registration allowed */ … … 68 66 else 69 67 { 70 fd_ logger = logger;68 fd_external_logger = logger; 71 69 } 72 73 70 return 0; 74 71 } … … 77 74 int fd_log_handler_unregister ( void ) 78 75 { 79 fd_ logger = fd_internal_logger;76 fd_external_logger = NULL; 80 77 return 0; /* Successfull in all cases. */ 81 78 } … … 86 83 } 87 84 88 89 static void fd_internal_logger( int loglevel, const char *format, va_list ap )90 {91 char buf[25];92 FILE *fstr = fd_g_debug_fstr ?: stdout;93 94 /* logging has been decided by macros outside already */95 96 /* add timestamp */97 fprintf(fd_g_debug_fstr, "%s\t", fd_log_time(NULL, buf, sizeof(buf)));98 vfprintf(fd_g_debug_fstr, format, ap);99 if (format && (format[strlen(format)-1] != '\n')) {100 fprintf(fd_g_debug_fstr, "\n");101 }102 fflush(fd_g_debug_fstr);103 }104 105 85 /* Log a debug message */ 106 void fd_log ( int loglevel, const char * format, ... )86 void fd_log_debug_fstr ( FILE * fstr, const char * format, ... ) 107 87 { 108 88 va_list ap; … … 113 93 114 94 va_start(ap, format); 115 fd_logger(loglevel, format, ap); 95 if ( fd_external_logger != NULL ) 96 { 97 fd_external_logger( format, &ap ); 98 } 99 else 100 { 101 vfprintf( fstr ?: stdout, format, ap); 102 fflush(fstr ?: stdout); 103 } 116 104 va_end(ap); 117 105 … … 119 107 120 108 (void)pthread_mutex_unlock(&fd_log_lock); 121 }122 123 /* Log debug message to file. */124 void fd_log_debug_fstr( FILE * fstr, const char * format, ... )125 {126 va_list ap;127 128 va_start(ap, format);129 vfprintf(fstr, format, ap);130 va_end(ap);131 109 } 132 110 -
libfdproto/messages.c
r961 r928 683 683 struct tm tm; 684 684 685 CHECK_FCT( dump_add_str(outstr, offset, outlen, "%*sMSG: %p |", INOBJHDRVAL, msg) );685 CHECK_FCT( dump_add_str(outstr, offset, outlen, "%*sMSG: %p\n", INOBJHDRVAL, msg) ); 686 686 687 687 if (!CHECK_MSG(msg)) { 688 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "INVALID! ", INOBJHDRVAL) );688 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "INVALID!\n", INOBJHDRVAL) ); 689 689 return 0; 690 690 } … … 693 693 tsoffset += strftime(buftime + tsoffset, sizeof(buftime) - tsoffset, "%D,%T", localtime_r( &msg->msg_ts_rcv.tv_sec , &tm )); 694 694 tsoffset += snprintf(buftime + tsoffset, sizeof(buftime) - tsoffset, ".%6.6ld", msg->msg_ts_rcv.tv_nsec / 1000); 695 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "Received: %s |", INOBJHDRVAL, buftime) );695 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "Received: %s\n", INOBJHDRVAL, buftime) ); 696 696 } 697 697 if ((msg->msg_ts_sent.tv_sec != 0) || (msg->msg_ts_sent.tv_nsec != 0)) { 698 698 tsoffset += strftime(buftime + tsoffset, sizeof(buftime) - tsoffset, "%D,%T", localtime_r( &msg->msg_ts_sent.tv_sec , &tm )); 699 699 tsoffset += snprintf(buftime + tsoffset, sizeof(buftime) - tsoffset, ".%6.6ld", msg->msg_ts_sent.tv_nsec / 1000); 700 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "Sent : %s |", INOBJHDRVAL, buftime) );700 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "Sent : %s\n", INOBJHDRVAL, buftime) ); 701 701 } 702 702 703 703 if (!msg->msg_model) { 704 704 705 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(no model) |", INOBJHDRVAL) );705 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(no model)\n", INOBJHDRVAL) ); 706 706 707 707 } else { … … 711 711 ret = fd_dict_gettype(msg->msg_model, &dicttype); 712 712 if (ret || (dicttype != DICT_COMMAND)) { 713 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(invalid model: %d %d) |", INOBJHDRVAL, ret, dicttype) );713 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(invalid model: %d %d)\n", INOBJHDRVAL, ret, dicttype) ); 714 714 goto public; 715 715 } 716 716 ret = fd_dict_getval(msg->msg_model, &dictdata); 717 717 if (ret != 0) { 718 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(error getting model data: %s) |", INOBJHDRVAL, strerror(ret)) );718 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(error getting model data: %s)\n", INOBJHDRVAL, strerror(ret)) ); 719 719 goto public; 720 720 } 721 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "model : v/m:" DUMP_CMDFL_str "/" DUMP_CMDFL_str ", %u \"%s\" |", INOBJHDRVAL,721 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "model : v/m:" DUMP_CMDFL_str "/" DUMP_CMDFL_str ", %u \"%s\"\n", INOBJHDRVAL, 722 722 DUMP_CMDFL_val(dictdata.cmd_flag_val), DUMP_CMDFL_val(dictdata.cmd_flag_mask), dictdata.cmd_code, dictdata.cmd_name) ); 723 723 } 724 724 public: 725 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "public: V:%d L:%d fl:" DUMP_CMDFL_str " CC:%u A:%d hi:%x ei:%x |", INOBJHDRVAL,725 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "public: V:%d L:%d fl:" DUMP_CMDFL_str " CC:%u A:%d hi:%x ei:%x\n", INOBJHDRVAL, 726 726 msg->msg_public.msg_version, 727 727 msg->msg_public.msg_length, … … 732 732 msg->msg_public.msg_eteid 733 733 ) ); 734 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "intern: rwb:%p rt:%d cb:%p(%p) qry:%p asso:%d sess:%p src:%s(%zd) |",734 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "intern: rwb:%p rt:%d cb:%p(%p) qry:%p asso:%d sess:%p src:%s(%zd)\n", 735 735 INOBJHDRVAL, msg->msg_rawbuffer, msg->msg_routable, msg->msg_cb.fct, msg->msg_cb.data, msg->msg_query, msg->msg_associated, msg->msg_sess, msg->msg_src_id?:"(nil)", msg->msg_src_id_len) ); 736 736 return 0; … … 743 743 744 744 if (!CHECK_AVP(avp)) { 745 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "INVALID! ", INOBJHDRVAL) );745 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "INVALID!\n", INOBJHDRVAL) ); 746 746 return 0; 747 747 } … … 749 749 if (!avp->avp_model) { 750 750 751 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(no model resolved) |", INOBJHDRVAL) );751 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(no model resolved)\n", INOBJHDRVAL) ); 752 752 753 753 } else { … … 757 757 ret = fd_dict_gettype(avp->avp_model, &dicttype); 758 758 if (ret || (dicttype != DICT_AVP)) { 759 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(invalid model: %d %d) |", INOBJHDRVAL, ret, dicttype) );759 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(invalid model: %d %d)\n", INOBJHDRVAL, ret, dicttype) ); 760 760 goto public; 761 761 } 762 762 ret = fd_dict_getval(avp->avp_model, &dictdata); 763 763 if (ret != 0) { 764 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(error getting model data: %s) |", INOBJHDRVAL, strerror(ret)) );764 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(error getting model data: %s)\n", INOBJHDRVAL, strerror(ret)) ); 765 765 goto public; 766 766 } 767 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "model : v/m:" DUMP_AVPFL_str "/" DUMP_AVPFL_str ", %12s, %u \"%s\" |", INOBJHDRVAL,767 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "model : v/m:" DUMP_AVPFL_str "/" DUMP_AVPFL_str ", %12s, %u \"%s\"\n", INOBJHDRVAL, 768 768 DUMP_AVPFL_val(dictdata.avp_flag_val), 769 769 DUMP_AVPFL_val(dictdata.avp_flag_mask), … … 773 773 } 774 774 public: 775 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "public: C:%u fl:" DUMP_AVPFL_str " L:%d V:%u data:@%p |", INOBJHDRVAL,775 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "public: C:%u fl:" DUMP_AVPFL_str " L:%d V:%u data:@%p\n", INOBJHDRVAL, 776 776 avp->avp_public.avp_code, 777 777 DUMP_AVPFL_val(avp->avp_public.avp_flags), … … 783 783 if (avp->avp_public.avp_value) { 784 784 if (!avp->avp_model) { 785 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(data set but no model: ERROR) |", INOBJHDRVAL) );785 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "(data set but no model: ERROR)\n", INOBJHDRVAL) ); 786 786 } else { 787 787 CHECK_FCT( fd_dict_dump_avp_value(avp->avp_public.avp_value, avp->avp_model, indent, outstr, offset, outlen) ); … … 789 789 } 790 790 791 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "intern: src:%p mf:%d raw:%p(%d) |", INOBJHDRVAL, avp->avp_source, avp->avp_mustfreeos, avp->avp_rawdata, avp->avp_rawlen) );791 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "intern: src:%p mf:%d raw:%p(%d)\n", INOBJHDRVAL, avp->avp_source, avp->avp_mustfreeos, avp->avp_rawdata, avp->avp_rawlen) ); 792 792 return 0; 793 793 } … … 880 880 /* now really output this in one shot, so it is not interrupted */ 881 881 TRACE_DEBUG(level, "------ Dumping object %p (w)-------", obj); 882 TRACE_DEBUG(level, "%s", outstr);882 fd_log_debug_fstr(fd_g_debug_fstr, "%s", outstr); 883 883 TRACE_DEBUG(level, "------ /end of object %p -------", obj); 884 884 … … 896 896 fd_log_debug_fstr(fd_g_debug_fstr, "Error while dumping %p\n", obj) ); 897 897 TRACE_DEBUG(level, "------ Dumping object %p (s)-------", obj); 898 TRACE_DEBUG(level, "%s", outstr);898 fd_log_debug_fstr(fd_g_debug_fstr, "%s", outstr); 899 899 TRACE_DEBUG(level, "------ /end of object %p -------", obj); 900 900 free(outstr); -
tests/CMakeLists.txt
r958 r878 36 36 37 37 ADD_DEFINITIONS(-DTEST_DEBUG) 38 ADD_DEFINITIONS(-DTRACE_LEVEL=NONE) 38 39 ADD_DEFINITIONS(-DBUILD_DIR="${CMAKE_BINARY_DIR}") 39 40 -
tests/tests.h
r959 r854 47 47 #include <pthread.h> 48 48 #include <errno.h> 49 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"50 49 #include <gcrypt.h> 51 #pragma GCC diagnostic warning "-Wdeprecated-declarations"52 50 53 51 /* Test timeout duration, unless -n is passed on the command line */
Note: See TracChangeset
for help on using the changeset viewer.