#define HEXDUMP_HEXSTUFF_PER_LINE \
(HEXDUMP_HEXSTUFF_PER_SHORT * HEXDUMP_SHORTS_PER_LINE)
+static void hex_and_ascii_print_with_offset(netdissect_options *, const char *, const u_char *, u_int, u_int);
+
void
ascii_print(netdissect_options *ndo,
const u_char *cp, u_int length)
u_int caplength;
u_char s;
- caplength = (ndo->ndo_snapend >= cp) ? ndo->ndo_snapend - cp : 0;
+ ndo->ndo_protocol = "ascii";
+ caplength = (ndo->ndo_snapend > cp) ? ndo->ndo_snapend - cp : 0;
if (length > caplength)
length = caplength;
ND_PRINT("\n");
}
}
-void
+static void
hex_and_ascii_print_with_offset(netdissect_options *ndo, const char *ident,
const u_char *cp, u_int length, u_int oset)
{
char hexstuff[HEXDUMP_SHORTS_PER_LINE*HEXDUMP_HEXSTUFF_PER_SHORT+1], *hsp;
char asciistuff[ASCII_LINELENGTH+1], *asp;
- caplength = (ndo->ndo_snapend >= cp) ? ndo->ndo_snapend - cp : 0;
+ caplength = (ndo->ndo_snapend > cp) ? ndo->ndo_snapend - cp : 0;
if (length > caplength)
length = caplength;
nshorts = length / sizeof(u_short);
i = 0;
hsp = hexstuff; asp = asciistuff;
while (--nshorts >= 0) {
- s1 = *cp++;
- s2 = *cp++;
- (void)snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff),
+ s1 = EXTRACT_U_1(cp);
+ cp++;
+ s2 = EXTRACT_U_1(cp);
+ cp++;
+ (void)nd_snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff),
" %02x%02x", s1, s2);
hsp += HEXDUMP_HEXSTUFF_PER_SHORT;
*(asp++) = (ND_ISGRAPH(s1) ? s1 : '.');
}
}
if (length & 1) {
- s1 = *cp++;
- (void)snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff),
+ s1 = EXTRACT_U_1(cp);
+ cp++;
+ (void)nd_snprintf(hsp, sizeof(hexstuff) - (hsp - hexstuff),
" %02x", s1);
hsp += 3;
*(asp++) = (ND_ISGRAPH(s1) ? s1 : '.');
u_int i, s;
int nshorts;
- caplength = (ndo->ndo_snapend >= cp) ? ndo->ndo_snapend - cp : 0;
+ caplength = (ndo->ndo_snapend > cp) ? ndo->ndo_snapend - cp : 0;
if (length > caplength)
length = caplength;
nshorts = (u_int) length / sizeof(u_short);
ND_PRINT("%s0x%04x: ", ident, oset);
oset += HEXDUMP_BYTES_PER_LINE;
}
- s = *cp++;
- ND_PRINT(" %02x%02x", s, *cp++);
+ s = EXTRACT_U_1(cp);
+ cp++;
+ ND_PRINT(" %02x%02x", s, EXTRACT_U_1(cp));
+ cp++;
}
if (length & 1) {
if ((i % 8) == 0)
ND_PRINT("%s0x%04x: ", ident, oset);
- ND_PRINT(" %02x", *cp);
+ ND_PRINT(" %02x", EXTRACT_U_1(cp));
}
}