Navigation


Changeset 1088:1d1a20a0779d in freeDiameter for libfdproto


Ignore:
Timestamp:
May 5, 2013, 4:25:27 AM (11 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Phase:
public
Message:

Second part of changeset 1083, now the code compiles again. Still missing some functions implementation, though

Location:
libfdproto
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • libfdproto/fdproto-internal.h

    r1085 r1088  
    4848void fd_sess_fini(void);
    4949
    50 /* Where debug messages are sent */
    51 extern FILE * fd_g_debug_fstr;
    52 
    5350/* Iterator on the rules of a parent object */
    5451int fd_dict_iterate_rules ( struct dict_object *parent, void * data, int (*cb)(void *, struct dict_rule_data *) );
  • libfdproto/init.c

    r974 r1088  
    5858        }
    5959       
    60         /* Set the debug stream */
    61         fd_g_debug_fstr = stdout;
    62        
    6360        /* Initialize the modules that need it */
    6461        fd_msg_eteid_init();
  • libfdproto/log.c

    r1085 r1088  
    3838#include <stdarg.h>
    3939
    40 FILE * fd_g_debug_fstr;
    41 
    4240pthread_mutex_t fd_log_lock = PTHREAD_MUTEX_INITIALIZER;
    4341pthread_key_t   fd_log_thname;
    44 int fd_g_debug_lvl = INFO;
     42int fd_g_debug_lvl = FD_LOG_NOTICE;
    4543
    4644static void fd_internal_logger( int, const char *, va_list );
     
    8886
    8987
    90 static void fd_internal_logger( int loglevel, const char *format, va_list ap )
     88static void fd_internal_logger( int printlevel, const char *format, va_list ap )
    9189{
    9290    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;
    9795
    9896    /* add timestamp */
    99     fprintf(fstr, "%s  ", fd_log_time(NULL, buf, sizeof(buf)));
     97    printf("%s  ", fd_log_time(NULL, buf, sizeof(buf)));
    10098   
    10199    /* Use colors on stdout ? */
     
    107105    }
    108106   
    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");
    112119   
    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);
    125121}
    126122
     
    212208
    213209
     210static size_t sys_mempagesz = 0;
     211
     212static 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
    214222/* 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. */
    215223char * fd_dump_extend(char ** buf, size_t *len, size_t *offset, const char * format, ... )
     
    218226        int to_write;
    219227        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();
    227229       
    228230        /* we do not TRACE_ENTRY this one on purpose */
     
    258260        return *buf;
    259261}
     262
     263char * 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  
    6969        int               eyec; /* An eye catcher also used to ensure the object is valid, must be SH_EYEC */
    7070        int               id;   /* A unique integer to identify this handler */
    71         void            (*cleanup)(session_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 */
    7373        void             *opaque; /* a value that is passed as is to the cleanup callback */
    7474};
     
    8181struct state {
    8282        int                      eyec;  /* Must be SD_EYEC */
    83         session_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) */
    8484        struct fd_list           chain; /* Chaining in the list of session's states ordered by hdl->id */
    8585        union {
     
    274274
    275275/* 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 )
     276int fd_sess_handler_create ( struct session_handler ** handler, void (*cleanup)(struct sess_state *, os0_t, void *), session_state_dump dumper, void * opaque )
    277277{
    278278        struct session_handler *new;
     
    720720
    721721/* Save a state information with a session */
    722 int fd_sess_state_store_internal ( struct session_handler * handler, struct session * session, session_state ** state )
     722int fd_sess_state_store ( struct session_handler * handler, struct session * session, struct sess_state ** state )
    723723{
    724724        struct state *new;
     
    773773
    774774/* Get the data back */
    775 int fd_sess_state_retrieve_internal ( struct session_handler * handler, struct session * session, session_state ** state )
     775int fd_sess_state_retrieve ( struct session_handler * handler, struct session * session, struct sess_state ** state )
    776776{
    777777        struct fd_list * li;
Note: See TracChangeset for help on using the changeset viewer.