Changeset 1088:1d1a20a0779d in freeDiameter for libfdproto
- Timestamp:
- May 5, 2013, 4:25:27 AM (11 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- libfdproto
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
libfdproto/fdproto-internal.h
r1085 r1088 48 48 void fd_sess_fini(void); 49 49 50 /* Where debug messages are sent */51 extern FILE * fd_g_debug_fstr;52 53 50 /* Iterator on the rules of a parent object */ 54 51 int fd_dict_iterate_rules ( struct dict_object *parent, void * data, int (*cb)(void *, struct dict_rule_data *) ); -
libfdproto/init.c
r974 r1088 58 58 } 59 59 60 /* Set the debug stream */61 fd_g_debug_fstr = stdout;62 63 60 /* Initialize the modules that need it */ 64 61 fd_msg_eteid_init(); -
libfdproto/log.c
r1085 r1088 38 38 #include <stdarg.h> 39 39 40 FILE * fd_g_debug_fstr;41 42 40 pthread_mutex_t fd_log_lock = PTHREAD_MUTEX_INITIALIZER; 43 41 pthread_key_t fd_log_thname; 44 int fd_g_debug_lvl = INFO;42 int fd_g_debug_lvl = FD_LOG_NOTICE; 45 43 46 44 static void fd_internal_logger( int, const char *, va_list ); … … 88 86 89 87 90 static void fd_internal_logger( int loglevel, const char *format, va_list ap )88 static void fd_internal_logger( int printlevel, const char *format, va_list ap ) 91 89 { 92 90 char buf[25]; 93 FILE *fstr = fd_g_debug_fstr ?: stdout; 94 int local_use_color = 0;95 96 /* logging has been decided by macros outside already */91 92 /* Do we need to trace this ? */ 93 if (printlevel < fd_g_debug_lvl) 94 return; 97 95 98 96 /* add timestamp */ 99 fprintf(fstr,"%s ", fd_log_time(NULL, buf, sizeof(buf)));97 printf("%s ", fd_log_time(NULL, buf, sizeof(buf))); 100 98 101 99 /* Use colors on stdout ? */ … … 107 105 } 108 106 109 /* now, this time log, do we use colors? */ 110 if ((fstr == stdout) && (use_colors == 1)) 111 local_use_color = 1; 107 switch(printlevel) { 108 case FD_LOG_ANNOYING: printf("%s A ", (use_colors == 1) ? "\e[0;37m" : ""); break; 109 case FD_LOG_DEBUG: printf("%s DBG ", (use_colors == 1) ? "\e[0;37m" : ""); break; 110 case FD_LOG_NOTICE: printf("%sNOTI ", (use_colors == 1) ? "\e[1;37m" : ""); break; 111 case FD_LOG_ERROR: printf("%sERROR ", (use_colors == 1) ? "\e[0;31m" : ""); break; 112 case FD_LOG_FATAL: printf("%sFATAL! ", (use_colors == 1) ? "\e[0;31m" : ""); break; 113 default: printf("%s ??? ", (use_colors == 1) ? "\e[0;31m" : ""); 114 } 115 vprintf(format, ap); 116 if (use_colors == 1) 117 printf("\e[00m"); 118 printf("\n"); 112 119 113 switch(loglevel) { 114 case FD_LOG_DEBUG: fprintf(fstr, "%s DBG ", local_use_color ? "\e[0;37m" : ""); break; 115 case FD_LOG_NOTICE: fprintf(fstr, "%sNOTI ", local_use_color ? "\e[1;37m" : ""); break; 116 case FD_LOG_ERROR: fprintf(fstr, "%sERROR ", local_use_color ? "\e[0;31m" : ""); break; 117 default: fprintf(fstr, "%s ??? ", local_use_color ? "\e[0;31m" : ""); 118 } 119 vfprintf(fstr, format, ap); 120 if (local_use_color) 121 fprintf(fstr, "\e[00m"); 122 fprintf(fstr, "\n"); 123 124 fflush(fstr); 120 fflush(stdout); 125 121 } 126 122 … … 212 208 213 209 210 static size_t sys_mempagesz = 0; 211 212 static size_t get_mempagesz(void) { 213 if (!sys_mempagesz) { 214 sys_mempagesz = sysconf(_SC_PAGESIZE); /* We alloc buffer by memory pages for efficiency */ 215 if (sys_mempagesz <= 0) 216 sys_mempagesz = 1024; /* default size if above call failed */ 217 } 218 return sys_mempagesz; 219 } 220 221 214 222 /* Helper function for fd_*_dump. Prints the format string from 'offset' into '*buf', extends if needed. The location of buf can be updated by this function. */ 215 223 char * fd_dump_extend(char ** buf, size_t *len, size_t *offset, const char * format, ... ) … … 218 226 int to_write; 219 227 size_t o = 0; 220 static size_t mempagesz = 0; 221 222 if (!mempagesz) { 223 mempagesz = sysconf(_SC_PAGESIZE); /* We alloc buffer by memory pages for efficiency */ 224 if (mempagesz <= 0) 225 mempagesz = 1024; /* default size if above call failed */ 226 } 228 size_t mempagesz = get_mempagesz(); 227 229 228 230 /* we do not TRACE_ENTRY this one on purpose */ … … 258 260 return *buf; 259 261 } 262 263 char * fd_dump_extend_hexdump(char ** buf, size_t *len, size_t *offset, uint8_t *data, size_t datalen, size_t trunc, size_t wrap ) 264 { 265 int truncated = 0; 266 size_t towrite = 0; 267 size_t o = 0; 268 int i; 269 char * p; 270 size_t mempagesz = get_mempagesz(); 271 #define TRUNK_MARK "[...]" 272 273 CHECK_PARAMS_DO(buf && len && data, return NULL); 274 275 if (trunc && (datalen > trunc)) { 276 datalen = trunc; 277 truncated = 1; 278 } 279 280 towrite = datalen * 2; 281 282 if (wrap) 283 towrite += datalen / wrap; /* add 1 '\n' every wrap byte */ 284 285 if (truncated) 286 towrite += CONSTSTRLEN(TRUNK_MARK); 287 288 289 if (offset) 290 o = *offset; 291 292 if (*buf == NULL) { 293 /* Directly allocate the size we need */ 294 *len = (((towrite + o) / mempagesz) + 1 ) * mempagesz; 295 CHECK_MALLOC_DO(*buf = malloc(*len), return NULL); 296 } else if ((towrite + o) >= *len) { 297 /* There is no room in the buffer, we extend and redo */ 298 size_t new_len = (((towrite + o) / mempagesz) + 1) * mempagesz; 299 CHECK_MALLOC_DO(*buf = realloc(*buf, new_len), return NULL); 300 *len = new_len; 301 } 302 303 p = *buf + o; 304 for (i = 0; i < datalen; i++) { 305 sprintf(p, "%2hhX", data[i]); 306 p+=2; 307 if ((wrap) && ((i+1) % wrap == 0)) { 308 *p++='\n'; *p ='\0'; /* we want to ensure the buffer is always 0-terminated */ 309 } 310 } 311 312 if (truncated) 313 memcpy(p, TRUNK_MARK, CONSTSTRLEN(TRUNK_MARK)); 314 315 if (offset) 316 *offset += towrite; 317 318 return *buf; 319 } -
libfdproto/sessions.c
r1085 r1088 69 69 int eyec; /* An eye catcher also used to ensure the object is valid, must be SH_EYEC */ 70 70 int id; /* A unique integer to identify this handler */ 71 void (*cleanup)(s ession_state *, os0_t, void *); /* The cleanup function to be called for cleaning a state */72 session_state_dump *state_dump; /* dumper function */71 void (*cleanup)(struct sess_state *, os0_t, void *); /* The cleanup function to be called for cleaning a state */ 72 session_state_dump state_dump; /* dumper function */ 73 73 void *opaque; /* a value that is passed as is to the cleanup callback */ 74 74 }; … … 81 81 struct state { 82 82 int eyec; /* Must be SD_EYEC */ 83 s ession_state*state; /* The state registered by the application, never NULL (or the whole object is deleted) */83 struct sess_state *state; /* The state registered by the application, never NULL (or the whole object is deleted) */ 84 84 struct fd_list chain; /* Chaining in the list of session's states ordered by hdl->id */ 85 85 union { … … 274 274 275 275 /* Create a new handler */ 276 int fd_sess_handler_create _internal ( struct session_handler ** handler, void (*cleanup)(session_state *, os0_t, void *), session_state_dump dumper, void * opaque )276 int fd_sess_handler_create ( struct session_handler ** handler, void (*cleanup)(struct sess_state *, os0_t, void *), session_state_dump dumper, void * opaque ) 277 277 { 278 278 struct session_handler *new; … … 720 720 721 721 /* Save a state information with a session */ 722 int fd_sess_state_store _internal ( struct session_handler * handler, struct session * session, session_state ** state )722 int fd_sess_state_store ( struct session_handler * handler, struct session * session, struct sess_state ** state ) 723 723 { 724 724 struct state *new; … … 773 773 774 774 /* Get the data back */ 775 int fd_sess_state_retrieve _internal ( struct session_handler * handler, struct session * session, session_state ** state )775 int fd_sess_state_retrieve ( struct session_handler * handler, struct session * session, struct sess_state ** state ) 776 776 { 777 777 struct fd_list * li;
Note: See TracChangeset
for help on using the changeset viewer.