static void
ts_unix_print(netdissect_options *ndo, int sec, int usec)
{
+ if ((unsigned)sec & 0x80000000) {
+ ND_PRINT("[Error converting time]");
+ return;
+ }
+
ND_PRINT("%u", (unsigned)sec);
ts_frac_print(ndo, usec);
}
* the line ending.
*/
static u_int
-print_txt_line(netdissect_options *ndo, const char *protoname,
- const char *prefix, const u_char *pptr, u_int idx, u_int len)
+print_txt_line(netdissect_options *ndo, const char *prefix,
+ const u_char *pptr, u_int idx, u_int len)
{
u_int startidx;
u_int linelen;
*/
trunc:
linelen = idx - startidx;
- ND_PRINT("%s%.*s[!%s]", prefix, (int)linelen, pptr + startidx,
- protoname);
+ ND_PRINT("%s%.*s", prefix, (int)linelen, pptr + startidx);
+ nd_print_trunc(ndo);
return (0);
print:
return (idx);
}
+/* Assign needed before calling txtproto_print(): ndo->ndo_protocol = "proto" */
void
txtproto_print(netdissect_options *ndo, const u_char *pptr, u_int len,
- const char *protoname, const char **cmds, u_int flags)
+ const char **cmds, u_int flags)
{
u_int idx, eol;
u_char token[MAX_TOKEN+1];
}
/* Capitalize the protocol name */
- for (pnp = protoname; *pnp != '\0'; pnp++)
- ND_PRINT("%c", toupper((u_char)*pnp));
+ for (pnp = ndo->ndo_protocol; *pnp != '\0'; pnp++)
+ ND_PRINT("%c", ND_TOUPPER((u_char)*pnp));
if (print_this) {
/*
*/
ND_PRINT(", length: %u", len);
for (idx = 0;
- idx < len && (eol = print_txt_line(ndo, protoname, "\n\t", pptr, idx, len)) != 0;
+ idx < len && (eol = print_txt_line(ndo, "\n\t", pptr, idx, len)) != 0;
idx = eol)
;
} else {
/*
* Just print the first text line.
*/
- print_txt_line(ndo, protoname, ": ", pptr, 0, len);
+ print_txt_line(ndo, ": ", pptr, 0, len);
}
}
}