X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/38700c7f24646dfbc6ac0ed529d3ed727c545cd0..64e09de79ae6433c5fd40ed5b5a020cd46e33e86:/print-zephyr.c diff --git a/print-zephyr.c b/print-zephyr.c index c004f144..eb7e382b 100644 --- a/print-zephyr.c +++ b/print-zephyr.c @@ -20,36 +20,38 @@ * PURPOSE. */ +/* \summary: Zephyr printer */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif -#include +#include #include #include #include -#include "interface.h" +#include "netdissect.h" struct z_packet { - char *version; + const char *version; int numfields; int kind; - char *uid; + const char *uid; int port; int auth; int authlen; - char *authdata; - char *class; - char *inst; - char *opcode; - char *sender; + const char *authdata; + const char *class; + const char *inst; + const char *opcode; + const char *sender; const char *recipient; - char *format; + const char *format; int cksum; int multi; - char *multi_uid; + const char *multi_uid; /* Other fields follow here.. */ }; @@ -74,35 +76,36 @@ static const struct tok z_types[] = { { Z_PACKET_SERVACK, "serv-ack" }, { Z_PACKET_SERVNAK, "serv-nak" }, { Z_PACKET_CLIENTACK, "client-ack" }, - { Z_PACKET_STAT, "stat" } + { Z_PACKET_STAT, "stat" }, + { 0, NULL } }; static char z_buf[256]; -static char * -parse_field(netdissect_options *ndo, char **pptr, int *len) +static const char * +parse_field(netdissect_options *ndo, const char **pptr, int *len) { - char *s; + const char *s; if (*len <= 0 || !pptr || !*pptr) return NULL; - if (*pptr > (char *) ndo->ndo_snapend) + if (*pptr > (const char *) ndo->ndo_snapend) return NULL; s = *pptr; - while (*pptr <= (char *) ndo->ndo_snapend && *len >= 0 && **pptr) { + while (*pptr <= (const char *) ndo->ndo_snapend && *len >= 0 && **pptr) { (*pptr)++; (*len)--; } (*pptr)++; (*len)--; - if (*len < 0 || *pptr > (char *) ndo->ndo_snapend) + if (*len < 0 || *pptr > (const char *) ndo->ndo_snapend) return NULL; return s; } static const char * -z_triple(char *class, char *inst, const char *recipient) +z_triple(const char *class, const char *inst, const char *recipient) { if (!*recipient) recipient = "*"; @@ -112,15 +115,17 @@ z_triple(char *class, char *inst, const char *recipient) } static const char * -str_to_lower(char *string) +str_to_lower(const char *string) { + char *zb_string; + strncpy(z_buf, string, sizeof(z_buf)); z_buf[sizeof(z_buf)-1] = '\0'; - string = z_buf; - while (*string) { - *string = tolower((unsigned char)(*string)); - string++; + zb_string = z_buf; + while (*zb_string) { + *zb_string = tolower((unsigned char)(*zb_string)); + zb_string++; } return z_buf; @@ -130,9 +135,9 @@ void zephyr_print(netdissect_options *ndo, const u_char *cp, int length) { struct z_packet z; - char *parse = (char *) cp; + const char *parse = (const char *) cp; int parselen = length; - char *s; + const char *s; int lose = 0; /* squelch compiler warnings */ @@ -192,7 +197,7 @@ zephyr_print(netdissect_options *ndo, const u_char *cp, int length) ND_PRINT((ndo, " %s", tok2str(z_types, "type %d", z.kind))); if (z.kind == Z_PACKET_SERVACK) { /* Initialization to silence warnings */ - char *ackdata = NULL; + const char *ackdata = NULL; PARSE_FIELD_STR(ackdata); if (!lose && strcmp(ackdata, "SENT")) ND_PRINT((ndo, "/%s", str_to_lower(ackdata))); @@ -225,7 +230,7 @@ zephyr_print(netdissect_options *ndo, const u_char *cp, int length) "-nodefs")); if (z.kind != Z_PACKET_SERVACK) { /* Initialization to silence warnings */ - char *c = NULL, *i = NULL, *r = NULL; + const char *c = NULL, *i = NULL, *r = NULL; PARSE_FIELD_STR(c); PARSE_FIELD_STR(i); PARSE_FIELD_STR(r);