Navigation


Changeset 1036:aecdc2fbf222 in freeDiameter for libfdproto/dictionary.c


Ignore:
Timestamp:
Apr 17, 2013, 1:53:51 AM (11 years ago)
Author:
Thomas Klausner <tk@giga.or.at>
Branch:
default
Phase:
public
Message:

Add fd_msg_dump_full function that dumps a message in human-readable format.
(not hooked in yet)

For this, add an argument to dump_avp_val if it should print a
header before each value or not.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libfdproto/dictionary.c

    r1030 r1036  
    11801180                                        n = enumval->enum_value.os.len;
    11811181                                for (i=0; i < n; i++)
    1182                                         fd_log_debug("0x%02hhX/'%c' ", enumval->enum_value.os.data[i], ASCII(enumval->enum_value.os.data[i]));
     1182                                        fd_log_debug("0x%02.2X/'%c' ", enumval->enum_value.os.data[i], ASCII(enumval->enum_value.os.data[i]));
    11831183                                if (n == LEN_MAX)
    11841184                                        fd_log_debug("...");
     
    13431343{
    13441344        int i;
     1345        CHECK_FCT( dump_add_str(outstr, offset, outlen, "<") );
    13451346        for (i = 0; i < value->os.len; i++) {
    1346                 if (i == 24) { /* Dump only up to 24 bytes of the buffer */
     1347                if (i == 1024) { /* Dump only up to 1024 bytes of the buffer */
    13471348                        CHECK_FCT( dump_add_str(outstr, offset, outlen, "[...] (len=%zd)", value->os.len) );
    13481349                        break;
    13491350                }
    1350                 CHECK_FCT( dump_add_str(outstr, offset, outlen, "%02.2X ", value->os.data[i]) );
    1351         }
     1351                CHECK_FCT( dump_add_str(outstr, offset, outlen, "%s%02.2X", (i==0 ? "" : " "), value->os.data[i]) );
     1352        }
     1353        CHECK_FCT( dump_add_str(outstr, offset, outlen, ">") );
    13521354        return 0;
    13531355}
     
    14241426#define INOBJHDRVAL     indent<0 ? 1 : indent, indent<0 ? "-" : "|"
    14251427
    1426 /* Formater for the AVP value dump line */
     1428/* Formatter for the AVP value dump line */
    14271429static int dump_avp_val(union avp_value *avp_value,
    14281430                        int (*def_dump_val_cb)(union avp_value *, char **, size_t *, size_t *),
     
    14341436                        char **outstr,
    14351437                        size_t *offset,
    1436                         size_t *outlen)
    1437 {
    1438         /* Header for all AVP values dumps: */
    1439         CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "value ", INOBJHDRVAL) );
    1440        
    1441         /* If the type is provided, write it */
    1442         if (type_name) {
    1443                 CHECK_FCT( dump_add_str(outstr, offset, outlen, "t: '%s' ", type_name) );
    1444         }
    1445        
    1446         /* Always give the base datatype anyway */
    1447         CHECK_FCT( dump_add_str(outstr, offset, outlen, "(%s) ", type_base_name[datatype]) );
    1448        
    1449         /* Now, the value */
    1450         CHECK_FCT( dump_add_str(outstr, offset, outlen, "v: ") );
     1438                        size_t *outlen,
     1439                        int header)
     1440{
     1441        if (header) {
     1442                /* Header for all AVP values dumps: */
     1443                CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "value ", INOBJHDRVAL) );
     1444       
     1445                /* If the type is provided, write it */
     1446                if (type_name) {
     1447                        CHECK_FCT( dump_add_str(outstr, offset, outlen, "t: '%s' ", type_name) );
     1448                }
     1449       
     1450                /* Always give the base datatype anyway */
     1451                CHECK_FCT( dump_add_str(outstr, offset, outlen, "(%s) ", type_base_name[datatype]) );
     1452
     1453                /* Now, the value */
     1454                CHECK_FCT( dump_add_str(outstr, offset, outlen, "v: ") );
     1455        }
    14511456        if (const_name) {
    14521457                CHECK_FCT( dump_add_str(outstr, offset, outlen, "'%s' (", const_name) );
     
    14691474
    14701475/* Dump the value of an AVP of known type into the returned str */
    1471 int fd_dict_dump_avp_value(union avp_value *avp_value, struct dict_object * model, int indent, char **outstr, size_t *offset, size_t *outlen)
     1476int fd_dict_dump_avp_value(union avp_value *avp_value, struct dict_object * model, int indent, char **outstr, size_t *offset, size_t *outlen, int header)
    14721477{
    14731478        char * (*dump_val_cb)(union avp_value *avp_value) = NULL;
     
    15031508       
    15041509        /* And finally, dump the value */
    1505         CHECK_FCT( dump_avp_val(avp_value, get_default_dump_val_cb(model->data.avp.avp_basetype), dump_val_cb, model->data.avp.avp_basetype, type_name, const_name, indent, outstr, offset, outlen) );
     1510        CHECK_FCT( dump_avp_val(avp_value, get_default_dump_val_cb(model->data.avp.avp_basetype), dump_val_cb, model->data.avp.avp_basetype, type_name, const_name, indent, outstr, offset, outlen, header) );
    15061511        return 0;
    15071512}
Note: See TracChangeset for help on using the changeset viewer.