--- tcpdump-3.4a6.orig/tcpdump.c Sat Oct 18 22:50:17 1997 +++ tcpdump-3.4a6/tcpdump.c Tue Aug 11 15:30:24 1998 @@ -93,9 +93,9 @@ { ether_if_print, DLT_EN10MB }, { ether_if_print, DLT_IEEE802 }, { sl_if_print, DLT_SLIP }, - { sl_bsdos_if_print, DLT_SLIP_BSDOS }, +// { sl_bsdos_if_print, DLT_SLIP_BSDOS }, { ppp_if_print, DLT_PPP }, - { ppp_bsdos_if_print, DLT_PPP_BSDOS }, +// { ppp_bsdos_if_print, DLT_PPP_BSDOS }, { fddi_if_print, DLT_FDDI }, { null_if_print, DLT_NULL }, { raw_if_print, DLT_RAW }, @@ -411,37 +411,43 @@ void default_print(register const u_char *bp, register u_int length) { - register const u_short *sp; + register const u_char* sp = bp; register u_int i; - register int nshorts; + register u_int j; - if ((long)bp & 1) { - default_print_unaligned(bp, length); - return; - } - sp = (u_short *)bp; - nshorts = (u_int) length / sizeof(u_short); - i = 0; - while (--nshorts >= 0) { - if ((i++ % 8) == 0) - (void)printf("\n\t\t\t"); - (void)printf(" %04x", ntohs(*sp++)); - } - if (length & 1) { - if ((i % 8) == 0) - (void)printf("\n\t\t\t"); - (void)printf(" %02x", *(u_char *)sp); + printf("\n\t"); + for (i = 1; i <= length; i++) { + printf("%02x%s", *(bp+i-1), ((i %2) == 0) ? " " : ""); + if ((i % 16) == 0) { + printf("\t"); + for (j = 0; j < 16; j++, sp++) + if (isprint(*sp)) + printf("%c",*sp); + else + printf("."); + printf("\n\t"); + } } + + j = ((length-1) % 16) + 1; /* # bytes printed */ + for (i = j+1; i <= 16; i++) + printf(" %s", ((i % 2) == 0) ? " " : ""); + printf("\t"); + for (i = 0; i < j%16; i++, sp++) + if (isprint(*sp)) + printf("%c", *sp); + else + printf("."); } __dead void usage(void) { extern char version[]; - extern char pcap_version[]; +// extern char pcap_version[]; (void)fprintf(stderr, "%s version %s\n", program_name, version); - (void)fprintf(stderr, "libpcap version %s\n", pcap_version); +// (void)fprintf(stderr, "libpcap version %s\n", pcap_version); (void)fprintf(stderr, "Usage: %s [-adeflnNOpqStvx] [-c count] [ -F file ]\n", program_name); (void)fprintf(stderr,