diff options
author | whitespace / reindent <invalid@invalid.invalid> | 2017-07-17 14:03:14 +0200 |
---|---|---|
committer | whitespace / reindent <invalid@invalid.invalid> | 2017-07-17 14:04:07 +0200 |
commit | d62a17aedeb0eebdba98238874bb13d62c48dbf9 (patch) | |
tree | 3b319b1d61c8b85b4d1f06adf8b844bb8a9b5107 /isisd/isis_misc.c | |
parent | *: add indent control files (diff) | |
download | frr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.tar.xz frr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.zip |
*: reindentreindent-master-after
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'`
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'isisd/isis_misc.c')
-rw-r--r-- | isisd/isis_misc.c | 831 |
1 files changed, 386 insertions, 445 deletions
diff --git a/isisd/isis_misc.c b/isisd/isis_misc.c index 3869159a0..16c789ff5 100644 --- a/isisd/isis_misc.c +++ b/isisd/isis_misc.c @@ -3,17 +3,17 @@ * Miscellanous routines * * Copyright (C) 2001,2002 Sampo Saaristo - * Tampere University of Technology + * Tampere University of Technology * Institute of Communications Engineering * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public Licenseas published by the Free - * Software Foundation; either version 2 of the License, or (at your option) + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public Licenseas published by the Free + * Software Foundation; either version 2 of the License, or (at your option) * any later version. * - * This program is distributed in the hope that it will be useful,but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * This program is distributed in the hope that it will be useful,but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along @@ -62,147 +62,121 @@ char nlpidstring[30]; /* * This converts the isonet to its printable format */ -const char * -isonet_print (const u_char * from, int len) +const char *isonet_print(const u_char *from, int len) { - int i = 0; - char *pos = isonet; - - if (!from) - return "unknown"; - - while (i < len) - { - if (i & 1) - { - sprintf (pos, "%02x", *(from + i)); - pos += 2; + int i = 0; + char *pos = isonet; + + if (!from) + return "unknown"; + + while (i < len) { + if (i & 1) { + sprintf(pos, "%02x", *(from + i)); + pos += 2; + } else { + if (i == (len - 1)) { /* No dot at the end of address */ + sprintf(pos, "%02x", *(from + i)); + pos += 2; + } else { + sprintf(pos, "%02x.", *(from + i)); + pos += 3; + } + } + i++; } - else - { - if (i == (len - 1)) - { /* No dot at the end of address */ - sprintf (pos, "%02x", *(from + i)); - pos += 2; - } - else - { - sprintf (pos, "%02x.", *(from + i)); - pos += 3; - } - } - i++; - } - *(pos) = '\0'; - return isonet; + *(pos) = '\0'; + return isonet; } /* * Returns 0 on error, length of buff on ok - * extract dot from the dotted str, and insert all the number in a buff + * extract dot from the dotted str, and insert all the number in a buff */ -int -dotformat2buff (u_char * buff, const char * dotted) +int dotformat2buff(u_char *buff, const char *dotted) { - int dotlen, len = 0; - const char *pos = dotted; - u_char number[3]; - int nextdotpos = 2; - - number[2] = '\0'; - dotlen = strlen(dotted); - if (dotlen > 50) - { - /* this can't be an iso net, its too long */ - return 0; - } - - while ((pos - dotted) < dotlen && len < 20) - { - if (*pos == '.') - { - /* we expect the . at 2, and than every 5 */ - if ((pos - dotted) != nextdotpos) - { - len = 0; - break; - } - nextdotpos += 5; - pos++; - continue; - } - /* we must have at least two chars left here */ - if (dotlen - (pos - dotted) < 2) - { - len = 0; - break; + int dotlen, len = 0; + const char *pos = dotted; + u_char number[3]; + int nextdotpos = 2; + + number[2] = '\0'; + dotlen = strlen(dotted); + if (dotlen > 50) { + /* this can't be an iso net, its too long */ + return 0; } - if ((isxdigit ((int) *pos)) && (isxdigit ((int) *(pos + 1)))) - { - memcpy (number, pos, 2); - pos += 2; + while ((pos - dotted) < dotlen && len < 20) { + if (*pos == '.') { + /* we expect the . at 2, and than every 5 */ + if ((pos - dotted) != nextdotpos) { + len = 0; + break; + } + nextdotpos += 5; + pos++; + continue; + } + /* we must have at least two chars left here */ + if (dotlen - (pos - dotted) < 2) { + len = 0; + break; + } + + if ((isxdigit((int)*pos)) && (isxdigit((int)*(pos + 1)))) { + memcpy(number, pos, 2); + pos += 2; + } else { + len = 0; + break; + } + + *(buff + len) = (char)strtol((char *)number, NULL, 16); + len++; } - else - { - len = 0; - break; - } - - *(buff + len) = (char) strtol ((char *)number, NULL, 16); - len++; - } - return len; + return len; } /* * conversion of XXXX.XXXX.XXXX to memory */ -int -sysid2buff (u_char * buff, const char * dotted) +int sysid2buff(u_char *buff, const char *dotted) { - int len = 0; - const char *pos = dotted; - u_char number[3]; - - number[2] = '\0'; - // surely not a sysid_string if not 14 length - if (strlen (dotted) != 14) - { - return 0; - } - - while (len < ISIS_SYS_ID_LEN) - { - if (*pos == '.') - { - /* the . is not positioned correctly */ - if (((pos - dotted) != 4) && ((pos - dotted) != 9)) - { - len = 0; - break; - } - pos++; - continue; - } - if ((isxdigit ((int) *pos)) && (isxdigit ((int) *(pos + 1)))) - { - memcpy (number, pos, 2); - pos += 2; - } - else - { - len = 0; - break; + int len = 0; + const char *pos = dotted; + u_char number[3]; + + number[2] = '\0'; + // surely not a sysid_string if not 14 length + if (strlen(dotted) != 14) { + return 0; } - *(buff + len) = (char) strtol ((char *)number, NULL, 16); - len++; - } - - return len; + while (len < ISIS_SYS_ID_LEN) { + if (*pos == '.') { + /* the . is not positioned correctly */ + if (((pos - dotted) != 4) && ((pos - dotted) != 9)) { + len = 0; + break; + } + pos++; + continue; + } + if ((isxdigit((int)*pos)) && (isxdigit((int)*(pos + 1)))) { + memcpy(number, pos, 2); + pos += 2; + } else { + len = 0; + break; + } + + *(buff + len) = (char)strtol((char *)number, NULL, 16); + len++; + } + return len; } /* @@ -210,280 +184,251 @@ sysid2buff (u_char * buff, const char * dotted) * into a string */ -char * -nlpid2string (struct nlpids *nlpids) +char *nlpid2string(struct nlpids *nlpids) { - char *pos = nlpidstring; - int i; - - for (i = 0; i < nlpids->count; i++) - { - switch (nlpids->nlpids[i]) - { - case NLPID_IP: - pos += sprintf (pos, "IPv4"); - break; - case NLPID_IPV6: - pos += sprintf (pos, "IPv6"); - break; - case NLPID_SNAP: - pos += sprintf (pos, "SNAP"); - break; - case NLPID_CLNP: - pos += sprintf (pos, "CLNP"); - break; - case NLPID_ESIS: - pos += sprintf (pos, "ES-IS"); - break; - default: - pos += sprintf (pos, "unknown"); - break; + char *pos = nlpidstring; + int i; + + for (i = 0; i < nlpids->count; i++) { + switch (nlpids->nlpids[i]) { + case NLPID_IP: + pos += sprintf(pos, "IPv4"); + break; + case NLPID_IPV6: + pos += sprintf(pos, "IPv6"); + break; + case NLPID_SNAP: + pos += sprintf(pos, "SNAP"); + break; + case NLPID_CLNP: + pos += sprintf(pos, "CLNP"); + break; + case NLPID_ESIS: + pos += sprintf(pos, "ES-IS"); + break; + default: + pos += sprintf(pos, "unknown"); + break; + } + if (nlpids->count - i > 1) + pos += sprintf(pos, ", "); } - if (nlpids->count - i > 1) - pos += sprintf (pos, ", "); - - } - *(pos) = '\0'; + *(pos) = '\0'; - return nlpidstring; + return nlpidstring; } /* * supports the given af ? */ -int -speaks (struct nlpids *nlpids, int family) +int speaks(struct nlpids *nlpids, int family) { - int i, speaks = 0; - - if (nlpids == (struct nlpids *) NULL) - return speaks; - for (i = 0; i < nlpids->count; i++) - { - if (family == AF_INET && nlpids->nlpids[i] == NLPID_IP) - speaks = 1; - if (family == AF_INET6 && nlpids->nlpids[i] == NLPID_IPV6) - speaks = 1; - } - - return speaks; + int i, speaks = 0; + + if (nlpids == (struct nlpids *)NULL) + return speaks; + for (i = 0; i < nlpids->count; i++) { + if (family == AF_INET && nlpids->nlpids[i] == NLPID_IP) + speaks = 1; + if (family == AF_INET6 && nlpids->nlpids[i] == NLPID_IPV6) + speaks = 1; + } + + return speaks; } /* * Returns 0 on error, IS-IS Circuit Type on ok */ -int -string2circuit_t (const char * str) +int string2circuit_t(const char *str) { - if (!str) - return 0; + if (!str) + return 0; - if (!strcmp (str, "level-1")) - return IS_LEVEL_1; + if (!strcmp(str, "level-1")) + return IS_LEVEL_1; - if (!strcmp (str, "level-2-only") || !strcmp (str, "level-2")) - return IS_LEVEL_2; + if (!strcmp(str, "level-2-only") || !strcmp(str, "level-2")) + return IS_LEVEL_2; - if (!strcmp (str, "level-1-2")) - return IS_LEVEL_1_AND_2; + if (!strcmp(str, "level-1-2")) + return IS_LEVEL_1_AND_2; - return 0; + return 0; } -const char * -circuit_state2string (int state) +const char *circuit_state2string(int state) { - switch (state) - { - case C_STATE_INIT: - return "Init"; - case C_STATE_CONF: - return "Config"; - case C_STATE_UP: - return "Up"; - default: - return "Unknown"; - } - return NULL; + switch (state) { + case C_STATE_INIT: + return "Init"; + case C_STATE_CONF: + return "Config"; + case C_STATE_UP: + return "Up"; + default: + return "Unknown"; + } + return NULL; } -const char * -circuit_type2string (int type) +const char *circuit_type2string(int type) { - switch (type) - { - case CIRCUIT_T_P2P: - return "p2p"; - case CIRCUIT_T_BROADCAST: - return "lan"; - case CIRCUIT_T_LOOPBACK: - return "loopback"; - default: - return "Unknown"; - } - return NULL; + switch (type) { + case CIRCUIT_T_P2P: + return "p2p"; + case CIRCUIT_T_BROADCAST: + return "lan"; + case CIRCUIT_T_LOOPBACK: + return "loopback"; + default: + return "Unknown"; + } + return NULL; } -const char * -circuit_t2string (int circuit_t) +const char *circuit_t2string(int circuit_t) { - switch (circuit_t) - { - case IS_LEVEL_1: - return "L1"; - case IS_LEVEL_2: - return "L2"; - case IS_LEVEL_1_AND_2: - return "L1L2"; - default: - return "??"; - } - - return NULL; /* not reached */ + switch (circuit_t) { + case IS_LEVEL_1: + return "L1"; + case IS_LEVEL_2: + return "L2"; + case IS_LEVEL_1_AND_2: + return "L1L2"; + default: + return "??"; + } + + return NULL; /* not reached */ } -const char * -syst2string (int type) +const char *syst2string(int type) { - switch (type) - { - case ISIS_SYSTYPE_ES: - return "ES"; - case ISIS_SYSTYPE_IS: - return "IS"; - case ISIS_SYSTYPE_L1_IS: - return "1"; - case ISIS_SYSTYPE_L2_IS: - return "2"; - default: - return "??"; - } - - return NULL; /* not reached */ + switch (type) { + case ISIS_SYSTYPE_ES: + return "ES"; + case ISIS_SYSTYPE_IS: + return "IS"; + case ISIS_SYSTYPE_L1_IS: + return "1"; + case ISIS_SYSTYPE_L2_IS: + return "2"; + default: + return "??"; + } + + return NULL; /* not reached */ } /* * Print functions - we print to static vars */ -const char * -snpa_print (const u_char * from) +const char *snpa_print(const u_char *from) { - int i = 0; - u_char *pos = (u_char *)snpa; - - if (!from) - return "unknown"; - - while (i < ETH_ALEN - 1) - { - if (i & 1) - { - sprintf ((char *)pos, "%02x.", *(from + i)); - pos += 3; + int i = 0; + u_char *pos = (u_char *)snpa; + + if (!from) + return "unknown"; + + while (i < ETH_ALEN - 1) { + if (i & 1) { + sprintf((char *)pos, "%02x.", *(from + i)); + pos += 3; + } else { + sprintf((char *)pos, "%02x", *(from + i)); + pos += 2; + } + i++; } - else - { - sprintf ((char *)pos, "%02x", *(from + i)); - pos += 2; - } - i++; - } - - sprintf ((char *)pos, "%02x", *(from + (ISIS_SYS_ID_LEN - 1))); - pos += 2; - *(pos) = '\0'; + sprintf((char *)pos, "%02x", *(from + (ISIS_SYS_ID_LEN - 1))); + pos += 2; + *(pos) = '\0'; - return snpa; + return snpa; } -const char * -sysid_print (const u_char * from) +const char *sysid_print(const u_char *from) { - int i = 0; - char *pos = sysid; - - if (!from) - return "unknown"; - - while (i < ISIS_SYS_ID_LEN - 1) - { - if (i & 1) - { - sprintf (pos, "%02x.", *(from + i)); - pos += 3; - } - else - { - sprintf (pos, "%02x", *(from + i)); - pos += 2; - + int i = 0; + char *pos = sysid; + + if (!from) + return "unknown"; + + while (i < ISIS_SYS_ID_LEN - 1) { + if (i & 1) { + sprintf(pos, "%02x.", *(from + i)); + pos += 3; + } else { + sprintf(pos, "%02x", *(from + i)); + pos += 2; + } + i++; } - i++; - } - sprintf (pos, "%02x", *(from + (ISIS_SYS_ID_LEN - 1))); - pos += 2; - *(pos) = '\0'; + sprintf(pos, "%02x", *(from + (ISIS_SYS_ID_LEN - 1))); + pos += 2; + *(pos) = '\0'; - return sysid; + return sysid; } -const char * -rawlspid_print (const u_char * from) +const char *rawlspid_print(const u_char *from) { - char *pos = lspid; - if (!from) - return "unknown"; - memcpy (pos, sysid_print (from), 15); - pos += 14; - sprintf (pos, ".%02x", LSP_PSEUDO_ID (from)); - pos += 3; - sprintf (pos, "-%02x", LSP_FRAGMENT (from)); - pos += 3; - - *(pos) = '\0'; - - return lspid; + char *pos = lspid; + if (!from) + return "unknown"; + memcpy(pos, sysid_print(from), 15); + pos += 14; + sprintf(pos, ".%02x", LSP_PSEUDO_ID(from)); + pos += 3; + sprintf(pos, "-%02x", LSP_FRAGMENT(from)); + pos += 3; + + *(pos) = '\0'; + + return lspid; } -const char * -time2string (u_int32_t time) +const char *time2string(u_int32_t time) { - char *pos = datestring; - u_int32_t rest; - - if (time == 0) - return "-"; - - if (time / SECS_PER_YEAR) - pos += sprintf (pos, "%uY", time / SECS_PER_YEAR); - rest = time % SECS_PER_YEAR; - if (rest / SECS_PER_MONTH) - pos += sprintf (pos, "%uM", rest / SECS_PER_MONTH); - rest = rest % SECS_PER_MONTH; - if (rest / SECS_PER_WEEK) - pos += sprintf (pos, "%uw", rest / SECS_PER_WEEK); - rest = rest % SECS_PER_WEEK; - if (rest / SECS_PER_DAY) - pos += sprintf (pos, "%ud", rest / SECS_PER_DAY); - rest = rest % SECS_PER_DAY; - if (rest / SECS_PER_HOUR) - pos += sprintf (pos, "%uh", rest / SECS_PER_HOUR); - rest = rest % SECS_PER_HOUR; - if (rest / SECS_PER_MINUTE) - pos += sprintf (pos, "%um", rest / SECS_PER_MINUTE); - rest = rest % SECS_PER_MINUTE; - if (rest) - pos += sprintf (pos, "%us", rest); - - *(pos) = 0; - - return datestring; + char *pos = datestring; + u_int32_t rest; + + if (time == 0) + return "-"; + + if (time / SECS_PER_YEAR) + pos += sprintf(pos, "%uY", time / SECS_PER_YEAR); + rest = time % SECS_PER_YEAR; + if (rest / SECS_PER_MONTH) + pos += sprintf(pos, "%uM", rest / SECS_PER_MONTH); + rest = rest % SECS_PER_MONTH; + if (rest / SECS_PER_WEEK) + pos += sprintf(pos, "%uw", rest / SECS_PER_WEEK); + rest = rest % SECS_PER_WEEK; + if (rest / SECS_PER_DAY) + pos += sprintf(pos, "%ud", rest / SECS_PER_DAY); + rest = rest % SECS_PER_DAY; + if (rest / SECS_PER_HOUR) + pos += sprintf(pos, "%uh", rest / SECS_PER_HOUR); + rest = rest % SECS_PER_HOUR; + if (rest / SECS_PER_MINUTE) + pos += sprintf(pos, "%um", rest / SECS_PER_MINUTE); + rest = rest % SECS_PER_MINUTE; + if (rest) + pos += sprintf(pos, "%us", rest); + + *(pos) = 0; + + return datestring; } /* @@ -493,141 +438,137 @@ time2string (u_int32_t time) * first argument is the timer and the second is * the jitter */ -unsigned long -isis_jitter (unsigned long timer, unsigned long jitter) +unsigned long isis_jitter(unsigned long timer, unsigned long jitter) { - int j, k; + int j, k; - if (jitter >= 100) - return timer; + if (jitter >= 100) + return timer; - if (timer == 1) - return timer; - /* - * randomizing just the percent value provides - * no good random numbers - hence the spread - * to RANDOM_SPREAD (100000), which is ok as - * most IS-IS timers are no longer than 16 bit - */ + if (timer == 1) + return timer; + /* + * randomizing just the percent value provides + * no good random numbers - hence the spread + * to RANDOM_SPREAD (100000), which is ok as + * most IS-IS timers are no longer than 16 bit + */ - j = 1 + (int) ((RANDOM_SPREAD * random ()) / (RAND_MAX + 1.0)); + j = 1 + (int)((RANDOM_SPREAD * random()) / (RAND_MAX + 1.0)); - k = timer - (timer * (100 - jitter)) / 100; + k = timer - (timer * (100 - jitter)) / 100; - timer = timer - (k * j / RANDOM_SPREAD); + timer = timer - (k * j / RANDOM_SPREAD); - return timer; + return timer; } -struct in_addr -newprefix2inaddr (u_char * prefix_start, u_char prefix_masklen) +struct in_addr newprefix2inaddr(u_char *prefix_start, u_char prefix_masklen) { - memset (&new_prefix, 0, sizeof (new_prefix)); - memcpy (&new_prefix, prefix_start, (prefix_masklen & 0x3F) ? - ((((prefix_masklen & 0x3F) - 1) >> 3) + 1) : 0); - return new_prefix; + memset(&new_prefix, 0, sizeof(new_prefix)); + memcpy(&new_prefix, prefix_start, + (prefix_masklen & 0x3F) + ? ((((prefix_masklen & 0x3F) - 1) >> 3) + 1) + : 0); + return new_prefix; } /* * Returns host.name if any, otherwise * it returns the system hostname. */ -const char * -unix_hostname (void) +const char *unix_hostname(void) { - static struct utsname names; - const char *hostname; + static struct utsname names; + const char *hostname; - hostname = host.name; - if (!hostname) - { - uname (&names); - hostname = names.nodename; - } + hostname = host.name; + if (!hostname) { + uname(&names); + hostname = names.nodename; + } - return hostname; + return hostname; } /* * Returns the dynamic hostname associated with the passed system ID. * If no dynamic hostname found then returns formatted system ID. */ -const char * -print_sys_hostname (const u_char *sysid) +const char *print_sys_hostname(const u_char *sysid) { - struct isis_dynhn *dyn; + struct isis_dynhn *dyn; - if (!sysid) - return "nullsysid"; + if (!sysid) + return "nullsysid"; - /* For our system ID return our host name */ - if (memcmp(sysid, isis->sysid, ISIS_SYS_ID_LEN) == 0) - return unix_hostname(); + /* For our system ID return our host name */ + if (memcmp(sysid, isis->sysid, ISIS_SYS_ID_LEN) == 0) + return unix_hostname(); - dyn = dynhn_find_by_id (sysid); - if (dyn) - return (const char *)dyn->name.name; + dyn = dynhn_find_by_id(sysid); + if (dyn) + return (const char *)dyn->name.name; - return sysid_print (sysid); + return sysid_print(sysid); } /* * This function is a generic utility that logs data of given length. * Move this to a shared lib so that any protocol can use it. */ -void -zlog_dump_data (void *data, int len) +void zlog_dump_data(void *data, int len) { - int i; - unsigned char *p; - unsigned char c; - char bytestr[4]; - char addrstr[10]; - char hexstr[ 16*3 + 5]; - char charstr[16*1 + 5]; - - p = data; - memset (bytestr, 0, sizeof(bytestr)); - memset (addrstr, 0, sizeof(addrstr)); - memset (hexstr, 0, sizeof(hexstr)); - memset (charstr, 0, sizeof(charstr)); - - for (i = 1; i <= len; i++) - { - c = *p; - if (isalnum (c) == 0) - c = '.'; - - /* store address for this line */ - if ((i % 16) == 1) - snprintf (addrstr, sizeof(addrstr), "%p", p); - - /* store hex str (for left side) */ - snprintf (bytestr, sizeof (bytestr), "%02X ", *p); - strncat (hexstr, bytestr, sizeof (hexstr) - strlen (hexstr) - 1); - - /* store char str (for right side) */ - snprintf (bytestr, sizeof (bytestr), "%c", c); - strncat (charstr, bytestr, sizeof (charstr) - strlen (charstr) - 1); - - if ((i % 16) == 0) - { - /* line completed */ - zlog_debug ("[%8.8s] %-50.50s %s", addrstr, hexstr, charstr); - hexstr[0] = 0; - charstr[0] = 0; - } - else if ((i % 8) == 0) - { - /* half line: add whitespaces */ - strncat (hexstr, " ", sizeof (hexstr) - strlen (hexstr) - 1); - strncat (charstr, " ", sizeof (charstr) - strlen (charstr) - 1); - } - p++; /* next byte */ - } - - /* print rest of buffer if not empty */ - if (strlen (hexstr) > 0) - zlog_debug ("[%8.8s] %-50.50s %s", addrstr, hexstr, charstr); - return; + int i; + unsigned char *p; + unsigned char c; + char bytestr[4]; + char addrstr[10]; + char hexstr[16 * 3 + 5]; + char charstr[16 * 1 + 5]; + + p = data; + memset(bytestr, 0, sizeof(bytestr)); + memset(addrstr, 0, sizeof(addrstr)); + memset(hexstr, 0, sizeof(hexstr)); + memset(charstr, 0, sizeof(charstr)); + + for (i = 1; i <= len; i++) { + c = *p; + if (isalnum(c) == 0) + c = '.'; + + /* store address for this line */ + if ((i % 16) == 1) + snprintf(addrstr, sizeof(addrstr), "%p", p); + + /* store hex str (for left side) */ + snprintf(bytestr, sizeof(bytestr), "%02X ", *p); + strncat(hexstr, bytestr, sizeof(hexstr) - strlen(hexstr) - 1); + + /* store char str (for right side) */ + snprintf(bytestr, sizeof(bytestr), "%c", c); + strncat(charstr, bytestr, + sizeof(charstr) - strlen(charstr) - 1); + + if ((i % 16) == 0) { + /* line completed */ + zlog_debug("[%8.8s] %-50.50s %s", addrstr, hexstr, + charstr); + hexstr[0] = 0; + charstr[0] = 0; + } else if ((i % 8) == 0) { + /* half line: add whitespaces */ + strncat(hexstr, " ", + sizeof(hexstr) - strlen(hexstr) - 1); + strncat(charstr, " ", + sizeof(charstr) - strlen(charstr) - 1); + } + p++; /* next byte */ + } + + /* print rest of buffer if not empty */ + if (strlen(hexstr) > 0) + zlog_debug("[%8.8s] %-50.50s %s", addrstr, hexstr, charstr); + return; } |