]> The Tcpdump Group git mirrors - tcpdump/commitdiff
Merge branch 'master' into macsec
authorGuy Harris <[email protected]>
Thu, 28 May 2020 00:01:23 +0000 (17:01 -0700)
committerGitHub <[email protected]>
Thu, 28 May 2020 00:01:23 +0000 (17:01 -0700)
1  2 
Makefile.in
ethertype.h
netdissect.h
print-ether.c
tests/TESTLIST

diff --combined Makefile.in
index 4bec2139c27268beaca463da25af6862a612deb2,8ee0027f1615f534f98343d92fc7588139cc17c1..85854af804ff7327dd85f3293b7489176443b757
@@@ -32,6 -32,7 +32,7 @@@ mandir = @mandir
  
  # VPATH
  srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
  VPATH = @srcdir@
  
  #
@@@ -70,7 -71,7 +71,7 @@@ DEPENDENCY_CFLAG = @DEPENDENCY_CFLAG
        @rm -f $@
        $(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c
  
- CSRC =        setsignal.c tcpdump.c
+ CSRC =        fptype.c tcpdump.c
  
  LIBNETDISSECT_SRC=\
        addrtoname.c \
        checksum.c \
        cpack.c \
        gmpls.c \
-       gmt2local.c \
        in_cksum.c \
        ipproto.c \
        l2vpn.c \
        machdep.c \
+       netdissect.c \
+       netdissect-alloc.c \
        nlpid.c \
+       ntp.c \
        oui.c \
        parsenfsfh.c \
        print.c \
        print-aoe.c \
        print-ap1394.c \
        print-arcnet.c \
+       print-arista.c \
        print-arp.c \
        print-ascii.c \
        print-atalk.c \
        print-atm.c \
        print-babel.c \
+       print-bcm-li.c \
        print-beep.c \
        print-bfd.c \
        print-bgp.c \
        print-bootp.c \
+       print-brcmtag.c \
        print-bt.c \
        print-calm-fast.c \
        print-carp.c \
        print-decnet.c \
        print-dhcp6.c \
        print-domain.c \
+       print-dsa.c \
        print-dtp.c \
        print-dvmrp.c \
        print-eap.c \
        print-icmp6.c \
        print-igmp.c \
        print-igrp.c \
+       print-ip-demux.c \
        print-ip.c \
        print-ip6.c \
        print-ip6opts.c \
        print-ipcomp.c \
        print-ipfc.c \
        print-ipnet.c \
+       print-ipoib.c \
        print-ipx.c \
        print-isakmp.c \
        print-isoclns.c \
        print-lwapp.c \
        print-lwres.c \
        print-m3ua.c \
-       print-medsa.c \
 +      print-macsec.c \
        print-mobile.c \
        print-mobility.c \
        print-mpcp.c \
        print-ppp.c \
        print-pppoe.c \
        print-pptp.c \
+       print-ptp.c \
        print-radius.c \
        print-raw.c \
        print-resp.c \
        print-slow.c \
        print-smtp.c \
        print-snmp.c \
+       print-someip.c \
+       print-ssh.c \
        print-stp.c \
        print-sunatm.c \
        print-sunrpc.c \
        print-token.c \
        print-udld.c \
        print-udp.c \
+       print-unsupported.c \
        print-usb.c \
        print-vjc.c \
        print-vqp.c \
        print-vrrp.c \
+       print-vsock.c \
        print-vtp.c \
-       print-vxlan.c \
        print-vxlan-gpe.c \
+       print-vxlan.c \
        print-wb.c \
+       print-zep.c \
        print-zephyr.c \
        print-zeromq.c \
-       netdissect.c \
        signature.c \
        strtoaddr.c \
        util-print.c
  
  LOCALSRC = @LOCALSRC@
- GENSRC = version.c
  LIBOBJS = @LIBOBJS@
  
  LIBNETDISSECT_OBJ=$(LIBNETDISSECT_SRC:.c=.o) ${LOCALSRC:.c=.o} ${LIBOBJS}
  LIBNETDISSECT=libnetdissect.a
  
  
- SRC = $(CSRC) $(GENSRC) $(LOCALSRC) $(LIBNETDISSECT_SRC)
+ SRC = $(CSRC) $(GENSRC) $(LOCALSRC)
  
  # We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot
  # hack the extra indirection
- OBJ = $(CSRC:.c=.o) $(GENSRC:.c=.o) $(LIBNETDISSECT_OBJ)
+ OBJ = $(CSRC:.c=.o) $(GENSRC:.c=.o)
  HDR = \
        addrtoname.h \
        addrtostr.h \
        ascii_strcasecmp.h \
        atm.h \
        chdlc.h \
+       compiler-tests.h \
        cpack.h \
-       ether.h \
        ethertype.h \
        extract.h \
-       getopt_long.h \
+       fptype.h \
+       funcattrs.h \
+       getservent.h \
        gmpls.h \
-       gmt2local.h \
        interface.h \
        ip.h \
        ip6.h \
        mpls.h \
        nameser.h \
        netdissect.h \
+       netdissect-alloc.h \
+       netdissect-ctype.h \
+       netdissect-stdinc.h \
        nfs.h \
        nfsfh.h \
        nlpid.h \
+       ntp.h \
        openflow.h \
        ospf.h \
        oui.h \
        print.h \
        rpc_auth.h \
        rpc_msg.h \
-       rpl.h \
-       setsignal.h \
        signature.h \
        slcompress.h \
        smb.h \
+       status-exit-codes.h \
        strtoaddr.h \
        tcp.h \
-       netdissect-stdinc.h \
        timeval-operations.h \
-       udp.h
+       udp.h \
+       varattrs.h
  
  TAGHDR = \
        /usr/include/arpa/tftp.h \
        /usr/include/netinet/udp.h \
        /usr/include/protocols/routed.h
  
- TAGFILES = $(SRC) $(HDR) $(TAGHDR)
+ TAGFILES = $(SRC) $(HDR) $(TAGHDR) $(LIBNETDISSECT_SRC) \
+       print-pflog.c print-smb.c smbutil.c
  
- CLEANFILES = $(PROG) $(OBJ) $(GENSRC)
+ CLEANFILES = $(PROG) $(OBJ) $(GENSRC) $(LIBNETDISSECT_OBJ)
  
  EXTRA_DIST = \
        CHANGES \
        CONTRIBUTING \
        CREDITS \
+       CMakeLists.txt \
        INSTALL.txt \
        LICENSE \
        Makefile.in \
        aclocal.m4 \
        atime.awk \
        bpf_dump.c \
+       cmake_uninstall.cmake.in \
+       cmakeconfig.h.in \
+       cmake/Modules/FindCRYPTO.cmake \
+       cmake/Modules/FindPCAP.cmake \
+       cmake/Modules/FindSMI.cmake \
        config.guess \
        config.h.in \
        config.sub \
        configure \
-       configure.in \
+       configure.ac \
+       doc/README.Win32.md \
        install-sh \
        lbl/os-osf4.h \
        lbl/os-solaris2.h \
        makemib \
        missing/dlnames.c \
        missing/datalinks.c \
+       missing/getopt_long.h \
        missing/getopt_long.c \
+       missing/getservent.c \
+       missing/pcap_dump_ftell.c \
        missing/snprintf.c \
        missing/strdup.c \
        missing/strlcat.c \
        missing/strlcpy.c \
        missing/strsep.c \
+       missing/win_ether_ntohost.c \
+       missing/win_ether_ntohost.h \
        mkdep \
        packetdat.awk \
-       pcap_dump_ftell.c \
        print-pflog.c \
        print-smb.c \
        send-ack.awk \
        smbutil.c \
        stime.awk \
        tcpdump.1.in \
-       vfprintf.c \
-       win32/prj/GNUmakefile \
        win32/prj/WinDump.dsp \
        win32/prj/WinDump.dsw \
        win32/prj/WinDump.sln \
-       win32/prj/WinDump.vcproj \
-       win32/src/ether_ntohost.c
+       win32/prj/WinDump.vcproj
  
- TEST_DIST= `find tests \( -name 'DIFF' -prune \) -o \( -name NEW -prune \) -o -type f \! -name '.*' \! -name '*~' -print`
+ TEST_DIST= `git ls-files tests | grep -v 'tests/\..*'`
  
- all: $(PROG) $(LIBNETDISSECT)
+ all: $(PROG)
  
- $(PROG): $(OBJ) @V_PCAPDEP@
+ $(PROG): $(OBJ) @V_PCAPDEP@ $(LIBNETDISSECT)
        @rm -f $@
-       $(CC) $(FULL_CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
+       $(CC) $(FULL_CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBNETDISSECT) $(LIBS)
  
  $(LIBNETDISSECT): $(LIBNETDISSECT_OBJ)
        @rm -f $@
@@@ -383,6 -407,8 +408,8 @@@ datalinks.o: $(srcdir)/missing/datalink
        $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/datalinks.c
  dlnames.o: $(srcdir)/missing/dlnames.c
        $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/dlnames.c
+ getservent.o: $(srcdir)/missing/getservent.c
+       $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/getservent.c
  getopt_long.o: $(srcdir)/missing/getopt_long.c
        $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/getopt_long.c
  snprintf.o: $(srcdir)/missing/snprintf.c
@@@ -395,19 -421,8 +422,8 @@@ strlcpy.o: $(srcdir)/missing/strlcpy.
        $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strlcpy.c
  strsep.o: $(srcdir)/missing/strsep.c
        $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strsep.c
- version.o: version.c
-       $(CC) $(FULL_CFLAGS) -c version.c
- version.c: $(srcdir)/VERSION
-       @rm -f $@
-       if grep GIT ${srcdir}/VERSION >/dev/null; then \
-               read ver <${srcdir}/VERSION; \
-               echo $$ver | tr -d '\012'; \
-               date +_%Y_%m_%d; \
-       else \
-               cat ${srcdir}/VERSION; \
-       fi | sed -e 's/.*/const char version[] = "&";/' > $@
+ pcap_dump_ftell.o: $(srcdir)/missing/pcap_dump_ftell.c
+       $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/pcap_dump_ftell.c
  
  install: all
        [ -d $(DESTDIR)$(sbindir) ] || \
@@@ -423,7 -438,7 +439,7 @@@ uninstall
        rm -f $(DESTDIR)$(mandir)/man1/$(PROG).1
  
  lint: $(GENSRC)
-       lint -hbxn $(SRC) | \
+       lint -hbxn $(SRC) $(LIBNETDISSECT_SRC) | \
            grep -v 'struct/union .* never defined' | \
            grep -v 'possible pointer alignment problem'
  
@@@ -438,7 -453,7 +454,7 @@@ distclean
        rm -rf autom4te.cache tests/DIFF tests/NEW
  
  check: tcpdump
-       (cd tests && ./TESTrun.sh)
+       $(srcdir)/tests/TESTrun
  
  extags: $(TAGFILES)
        ctags $(TAGFILES)
@@@ -450,7 -465,7 +466,7 @@@ TAGS: $(TAGFILES
        etags $(TAGFILES)
  
  releasetar:
-       @cwd=`pwd` ; dir=`basename $$cwd` ; name=$(PROG)-`cat VERSION` ; \
+       @name=$(PROG)-`cat VERSION` ; \
           mkdir $$name; \
           tar cf - $(CSRC) $(HDR) $(LIBNETDISSECT_SRC) $(EXTRA_DIST) $(TEST_DIST) | (cd $$name; tar xf -); \
           tar -c -z -f $$name.tar.gz $$name; \
@@@ -460,4 -475,4 +476,4 @@@ testlist
        echo $(TEST_DIST)
  
  depend: $(GENSRC)
-       $(MKDEP) -c $(CC) -m $(DEPENDENCY_CFLAG) $(DEFS) $(INCLS) $(SRC)
+       $(MKDEP) -c "$(CC)" -m "$(DEPENDENCY_CFLAG)" -s "$(srcdir)" $(DEFS) $(INCLS) $(SRC) $(LIBNETDISSECT_SRC)
diff --combined ethertype.h
index 8694ffdd66c80ad1bf09d13b0b415a7ed8e375e0,33dcea9c57f13158334237a8cd13206b8a724c91..a757a39c2fc64c44a07a94e38f1aba1b31b74e68
   * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   */
  
+ /*
+  * Maximum length of the length field in an Ethernet header; any value
+  * greater than this is not a length value, so it's either an Ethernet
+  * type or an invalid value.
+  */
+ #define       MAX_ETHERNET_LENGTH_VAL 1500
  /*
   * Ethernet types.
   *
  #endif
  
  /* see:
-         http://en.wikipedia.org/wiki/IEEE_802.1Q
-     and http://en.wikipedia.org/wiki/QinQ
+         https://en.wikipedia.org/wiki/IEEE_802.1Q
+     and https://en.wikipedia.org/wiki/QinQ
  */
  #ifndef       ETHERTYPE_8021Q9100
  #define       ETHERTYPE_8021Q9100     0x9100
  #ifndef       ETHERTYPE_8021QinQ
  #define       ETHERTYPE_8021QinQ      0x88a8
  #endif
 +#ifndef ETHERTYPE_MACSEC
 +#define ETHERTYPE_MACSEC      0x88e5
 +#endif
  #ifndef ETHERTYPE_IPX
  #define ETHERTYPE_IPX         0x8137
  #endif
  #ifndef ETHERTYPE_AOE
  #define ETHERTYPE_AOE                 0x88a2
  #endif
+ #ifndef ETHERTYPE_PTP
+ #define ETHERTYPE_PTP                 0x88f7
+ #endif
  #ifndef       ETHERTYPE_LOOPBACK
  #define       ETHERTYPE_LOOPBACK      0x9000
  #endif
  #ifndef       ETHERTYPE_GEONET
  #define       ETHERTYPE_GEONET        0x8947  /* ETSI GeoNetworking (Official IEEE registration from Jan 2013) */
  #endif
- #ifndef       ETHERTYPE_MEDSA
- #define       ETHERTYPE_MEDSA         0xdada  /* Marvel Distributed Switch Architecture */
+ #ifndef       ETHERTYPE_ARISTA
+ #define       ETHERTYPE_ARISTA        0xd28b /*  Arista Networks vendor specific EtherType */
  #endif
  
  extern const struct tok ethertype_values[];
diff --combined netdissect.h
index ad4182a3823ca9b98d68fe39d187503e0f4618c3,1e84d5ff090f692ec0c4d8bbfe5fdc1e3afcd4c7..88055b4a127ab5eef95083189cab89307f7b4c52
  #include "os-proto.h"
  #endif
  #include <sys/types.h>
- #ifndef HAVE___ATTRIBUTE__
- #define __attribute__(x)
- #endif
+ #include <setjmp.h>
+ #include "status-exit-codes.h"
  
  /*
   * Data types corresponding to multi-byte integral values within data
   * use the EXTRACT_ macros to extract them (which you should be doing
   * *anyway*, so as not to assume a particular byte order or alignment
   * in your code).
+  *
+  * We even want EXTRACT_U_1 used for 8-bit integral values, so we
+  * define nd_uint8_t and nd_int8_t as arrays as well.
   */
+ typedef unsigned char nd_uint8_t[1];
  typedef unsigned char nd_uint16_t[2];
  typedef unsigned char nd_uint24_t[3];
  typedef unsigned char nd_uint32_t[4];
@@@ -50,26 -52,65 +52,65 @@@ typedef unsigned char nd_uint48_t[6]
  typedef unsigned char nd_uint56_t[7];
  typedef unsigned char nd_uint64_t[8];
  
+ typedef signed char nd_int8_t[1];
  /*
-  * Use this for IPv4 addresses.  It's defined as an array of octets, so
-  * that it's not aligned on its "natural" boundary, and it's defined as
-  * a structure in the hopes that this makes it harder to naively use
-  * EXTRACT_32BITS() to extract the value - in many cases you just want
-  * to use UNALIGNED_MEMCPY() to copy its value, so that it remains in
-  * network byte order.
+  * "unsigned char" so that sign extension isn't done on the
+  * individual bytes while they're being assembled.
   */
- typedef struct {
-       unsigned char bytes[4];
- } nd_ipv4;
+ typedef unsigned char nd_int32_t[4];
+ typedef unsigned char nd_int64_t[8];
  
  /*
-  * Data types corresponding to single-byte integral values, for
-  * completeness.
+  * Use this for IPv4 addresses and netmasks.
+  *
+  * It's defined as an array of octets, so that it's not guaranteed to
+  * be aligned on its "natural" boundary (in some packet formats, it
+  * *isn't* so aligned).  We have separate EXTRACT_ calls for them;
+  * sometimes you want the host-byte-order value, other times you want
+  * the network-byte-order value.
+  *
+  * Don't use EXTRACT_BE_U_4() on them, use EXTRACT_IPV4_TO_HOST_ORDER()
+  * if you want them in host byte order and EXTRACT_IPV4_TO_NETWORK_ORDER()
+  * if you want them in network byte order (which you want with system APIs
+  * that expect network-order IPv4 addresses, such as inet_ntop()).
+  *
+  * If, on your little-endian machine (e.g., an "IBM-compatible PC", no matter
+  * what the OS, or an Intel Mac, no matter what the OS), you get the wrong
+  * answer, and you've used EXTRACT_BE_U_4(), do *N*O*T* "fix" this by using
+  * EXTRACT_LE_U_4(), fix it by using EXTRACT_IPV4_TO_NETWORK_ORDER(),
+  * otherwise you're breaking the result on big-endian machines (e.g.,
+  * most PowerPC/Power ISA machines, System/390 and z/Architecture, SPARC,
+  * etc.).
+  *
+  * Yes, people do this; that's why Wireshark has tvb_get_ipv4(), to extract
+  * an IPv4 address from a packet data buffer; it was introduced in reaction
+  * to somebody who *had* done that.
   */
- typedef unsigned char nd_uint8_t;
- typedef signed char nd_int8_t;
+ typedef unsigned char nd_ipv4[4];
  
- /* snprintf et al */
+ /*
+  * Use this for IPv6 addresses and netmasks.
+  */
+ typedef unsigned char nd_ipv6[16];
+ /*
+  * Use this for MAC addresses.
+  */
+ #define MAC_ADDR_LEN  6               /* length of MAC addresses */
+ typedef unsigned char nd_mac_addr[MAC_ADDR_LEN];
+ /*
+  * Use this for blobs of bytes; make them arrays of nd_byte.
+  */
+ typedef unsigned char nd_byte;
+ /*
+  * Round up x to a multiple of y; y must be a power of 2.
+  */
+ #ifndef roundup2
+ #define       roundup2(x, y)  (((x)+((u_int)((y)-1)))&(~((u_int)((y)-1))))
+ #endif
  
  #include <stdarg.h>
  #include <pcap.h>
  #include "ip.h" /* struct ip for nextproto4_cksum() */
  #include "ip6.h" /* struct ip6 for nextproto6_cksum() */
  
- extern int32_t thiszone;      /* seconds offset from gmt to local time */
- /* invalid string to print '(invalid)' for malformed or corrupted packets */
- extern const char istr[];
- #if !defined(HAVE_SNPRINTF)
- int snprintf (char *str, size_t sz, const char *format, ...)
- #ifdef __ATTRIBUTE___FORMAT_OK
-      __attribute__((format (printf, 3, 4)))
- #endif /* __ATTRIBUTE___FORMAT_OK */
-      ;
- #endif /* !defined(HAVE_SNPRINTF) */
- #if !defined(HAVE_VSNPRINTF)
- int vsnprintf (char *str, size_t sz, const char *format, va_list ap)
- #ifdef __ATTRIBUTE___FORMAT_OK
-      __attribute__((format (printf, 3, 0)))
- #endif /* __ATTRIBUTE___FORMAT_OK */
-      ;
- #endif /* !defined(HAVE_VSNPRINTF) */
  #ifndef HAVE_STRLCAT
  extern size_t strlcat (char *, const char *, size_t);
  #endif
@@@ -143,13 -164,47 +164,47 @@@ typedef struct netdissect_options netdi
  
  #define IF_PRINTER_ARGS (netdissect_options *, const struct pcap_pkthdr *, const u_char *)
  
- typedef u_int (*if_printer) IF_PRINTER_ARGS;
+ typedef u_int (*uint_if_printer) IF_PRINTER_ARGS;
+ typedef void  (*void_if_printer) IF_PRINTER_ARGS;
+ /* pointer to the uint_if_printer or the void_if_printer function */
+ typedef union {
+       uint_if_printer uint_printer;
+       void_if_printer void_printer;
+       void* printer;          /* generic when testing if NULL or not */
+ } if_printer_t;
+ /*
+  * In case the data in a buffer needs to be processed by being decrypted,
+  * decompressed, etc. before it's dissected, we can't process it in place,
+  * we have to allocate a new buffer for the processed data.
+  *
+  * We keep a stack of those buffers; when we allocate a new buffer, we
+  * push the current one onto a stack, and when we're done with the new
+  * buffer, we free the current buffer and pop the previous one off the
+  * stack.
+  *
+  * A buffer has a beginnning and end pointer, and a link to the previous
+  * buffer on the stack.
+  *
+  * In other cases, we temporarily adjust the snapshot end to reflect a
+  * packet-length field in the packet data and, when finished dissecting
+  * that part of the packet, restore the old snapshot end.  We keep that
+  * on the stack with null buffer pointer, meaning there's nothing to
+  * free.
+  */
+ struct netdissect_saved_packet_info {
+   u_char *ndspi_buffer;                                       /* pointer to allocated buffer data */
+   const u_char *ndspi_packetp;                                /* saved beginning of data */
+   const u_char *ndspi_snapend;                                /* saved end of data */
+   struct netdissect_saved_packet_info *ndspi_prev;    /* previous buffer on the stack */
+ };
  
  struct netdissect_options {
    int ndo_bflag;              /* print 4 byte ASes in ASDOT notation */
    int ndo_eflag;              /* print ethernet header */
    int ndo_fflag;              /* don't translate "foreign" IP address */
-   int ndo_Kflag;              /* don't check TCP checksums */
+   int ndo_Kflag;              /* don't check IP, TCP or UDP checksums */
    int ndo_nflag;              /* leave addresses as numbers */
    int ndo_Nflag;              /* remove domains from printed host names */
    int ndo_qflag;              /* quick (shorter) output */
    int ndo_uflag;              /* Print undecoded NFS handles */
    int ndo_vflag;              /* verbosity level */
    int ndo_xflag;              /* print packet in hex */
-   int ndo_Xflag;              /* print packet in hex/ascii */
-   int ndo_Aflag;              /* print packet only in ascii observing TAB,
+   int ndo_Xflag;              /* print packet in hex/ASCII */
+   int ndo_Aflag;              /* print packet only in ASCII observing TAB,
                                 * LF, CR and SPACE as graphical chars
                                 */
    int ndo_Hflag;              /* dissect 802.11s draft mesh standard */
+   const char *ndo_protocol;   /* protocol */
+   jmp_buf ndo_truncated;      /* jmp_buf for setjmp()/longjmp() */
+   void *ndo_last_mem_p;               /* pointer to the last allocated memory chunk */
    int ndo_packet_number;      /* print a packet number in the beginning of line */
    int ndo_suppress_default_print; /* don't use default_print() for unknown packet types */
    int ndo_tstamp_precision;   /* requested time stamp precision */
    int   ndo_packettype;       /* as specified by -T */
  
    int   ndo_snaplen;
+   int   ndo_ll_header_length; /* link-layer header length */
  
    /*global pointers to beginning and end of current packet (during printing) */
    const u_char *ndo_packetp;
    const u_char *ndo_snapend;
  
-   /* pointer to the if_printer function */
-   if_printer ndo_if_printer;
+   /* stack of saved packet boundary and buffer information */
+   struct netdissect_saved_packet_info *ndo_packet_info_stack;
+   /* pointer to the uint_if_printer or the void_if_printer function */
+   if_printer_t ndo_if_printer;
+   int ndo_void_printer; /* void_if_printer ? (FALSE/TRUE) */
  
    /* pointer to void function to output stuff */
    void (*ndo_default_print)(netdissect_options *,
-                           register const u_char *bp, register u_int length);
+                           const u_char *bp, u_int length);
  
    /* pointer to function to do regular output */
    int  (*ndo_printf)(netdissect_options *,
                     const char *fmt, ...)
- #ifdef __ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS
-                    __attribute__ ((format (printf, 2, 3)))
- #endif
-                    ;
+                    PRINTFLIKE_FUNCPTR(2, 3);
    /* pointer to function to output errors */
-   void (*ndo_error)(netdissect_options *,
-                   const char *fmt, ...)
- #ifdef __ATTRIBUTE___NORETURN_OK_FOR_FUNCTION_POINTERS
-                    __attribute__ ((noreturn))
- #endif /* __ATTRIBUTE___NORETURN_OK_FOR_FUNCTION_POINTERS */
- #ifdef __ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS
-                    __attribute__ ((format (printf, 2, 3)))
- #endif /* __ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS */
-                    ;
+   void NORETURN_FUNCPTR (*ndo_error)(netdissect_options *,
+                                    status_exit_codes_t status,
+                                    const char *fmt, ...)
+                                    PRINTFLIKE_FUNCPTR(3, 4);
    /* pointer to function to output warnings */
    void (*ndo_warning)(netdissect_options *,
                      const char *fmt, ...)
- #ifdef __ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS
-                    __attribute__ ((format (printf, 2, 3)))
- #endif
-                    ;
+                     PRINTFLIKE_FUNCPTR(2, 3);
  };
  
+ extern int nd_push_buffer(netdissect_options *, u_char *, const u_char *,
+     const u_char *);
+ extern int nd_push_snapend(netdissect_options *, const u_char *);
+ extern void nd_change_snapend(netdissect_options *, const u_char *);
+ extern void nd_pop_packet_info(netdissect_options *);
+ extern void nd_pop_all_packet_info(netdissect_options *);
  #define PT_VAT                1       /* Visual Audio Tool */
  #define PT_WB         2       /* distributed White Board */
  #define PT_RPC                3       /* Remote Procedure Call */
  #define PT_PGM_ZMTP1  15      /* ZMTP/1.0 inside PGM (native or UDP-encapsulated) */
  #define PT_LMP                16      /* Link Management Protocol */
  #define PT_RESP               17      /* RESP */
+ #define PT_PTP                18      /* PTP */
+ #define PT_SOMEIP     19      /* Autosar SOME/IP Protocol */
+ #define PT_DOMAIN     20      /* Domain Name System (DNS) */
  
  #ifndef min
  #define min(a,b) ((a)>(b)?(b):(a))
   *    1) big enough for maximum-size Linux loopback packets (65549)
   *       and some USB packets captured with USBPcap:
   *
-  *           http://desowin.org/usbpcap/
+  *           https://desowin.org/usbpcap/
   *
   *       (> 131072, < 262144)
   *
   *       savefile header to control the size of the buffer they allocate,
   *       so a size of, say, 2^31-1 might not work well.
   *
-  * XXX - does it need to be bigger still?
+  * XXX - does it need to be bigger still?  Note that, for versions of
+  * libpcap with pcap_create()/pcap_activate(), if no -s flag is specified
+  * or -s 0 is specified, we won't set the snapshot length at all, and will
+  * let libpcap choose a snapshot length; newer versions may choose a bigger
+  * value than 262144 for D-Bus, for example.
   */
  #define MAXIMUM_SNAPLEN       262144
  
  /*
-  * The default snapshot length is the maximum.
-  */
- #define DEFAULT_SNAPLEN       MAXIMUM_SNAPLEN
- #define ESRC(ep) ((ep)->ether_shost)
- #define EDST(ep) ((ep)->ether_dhost)
- #ifndef NTOHL
- #define NTOHL(x)      (x) = ntohl(x)
- #define NTOHS(x)      (x) = ntohs(x)
- #define HTONL(x)      (x) = htonl(x)
- #define HTONS(x)      (x) = htons(x)
- #endif
- /*
-  * True if "l" bytes of "var" were captured.
+  * True if "l" bytes from "p" were captured.
   *
   * The "ndo->ndo_snapend - (l) <= ndo->ndo_snapend" checks to make sure
   * "l" isn't so large that "ndo->ndo_snapend - (l)" underflows.
   * you subtract a positive integer from a pointer, the result is
   * guaranteed to be less than the original pointer value). See
   *
-  *    http://www.kb.cert.org/vuls/id/162289
+  *    https://www.kb.cert.org/vuls/id/162289
   */
  
  /*
   */
  #define IS_NOT_NEGATIVE(x) (((x) > 0) || ((x) == 0))
  
- #define ND_TTEST2(var, l) \
+ #define ND_TTEST_LEN(p, l) \
    (IS_NOT_NEGATIVE(l) && \
        ((uintptr_t)ndo->ndo_snapend - (l) <= (uintptr_t)ndo->ndo_snapend && \
-          (uintptr_t)&(var) <= (uintptr_t)ndo->ndo_snapend - (l)))
+          (uintptr_t)(p) <= (uintptr_t)ndo->ndo_snapend - (l)))
+ /* True if "*(p)" was captured */
+ #define ND_TTEST_SIZE(p) ND_TTEST_LEN(p, sizeof(*(p)))
+ /* Bail out if "l" bytes from "p" were not captured */
+ #define ND_TCHECK_LEN(p, l) if (!ND_TTEST_LEN(p, l)) goto trunc
  
- /* True if "var" was captured */
- #define ND_TTEST(var) ND_TTEST2(var, sizeof(var))
+ /* Bail out if "*(p)" was not captured */
+ #define ND_TCHECK_SIZE(p) ND_TCHECK_LEN(p, sizeof(*(p)))
  
- /* Bail if "l" bytes of "var" were not captured */
- #define ND_TCHECK2(var, l) if (!ND_TTEST2(var, l)) goto trunc
+ /*
+  * Number of bytes between two pointers.
+  */
+ #define ND_BYTES_BETWEEN(p1, p2) ((u_int)(((const uint8_t *)(p1)) - (const uint8_t *)(p2)))
  
- /* Bail if "var" was not captured */
- #define ND_TCHECK(var) ND_TCHECK2(var, sizeof(var))
+ /*
+  * Number of bytes remaining in the captured data, starting at the
+  * byte pointed to by the argument.
+  */
+ #define ND_BYTES_AVAILABLE_AFTER(p) ND_BYTES_BETWEEN(ndo->ndo_snapend, (p))
  
- #define ND_PRINT(STUFF) (*ndo->ndo_printf)STUFF
+ #define ND_PRINT(...) (ndo->ndo_printf)(ndo, __VA_ARGS__)
  #define ND_DEFAULTPRINT(ap, length) (*ndo->ndo_default_print)(ndo, ap, length)
  
  extern void ts_print(netdissect_options *, const struct timeval *);
@@@ -332,10 -394,11 +394,11 @@@ extern void signed_relts_print(netdisse
  extern void unsigned_relts_print(netdissect_options *, uint32_t);
  
  extern void fn_print_char(netdissect_options *, u_char);
- extern int fn_print(netdissect_options *, const u_char *, const u_char *);
- extern u_int fn_printztn(netdissect_options *ndo, const u_char *, u_int, const u_char *);
- extern int fn_printn(netdissect_options *, const u_char *, u_int, const u_char *);
- extern int fn_printzp(netdissect_options *, const u_char *, u_int, const u_char *);
+ extern void fn_print_str(netdissect_options *, const u_char *);
+ extern int nd_print(netdissect_options *, const u_char *, const u_char *);
+ extern u_int nd_printztn(netdissect_options *, const u_char *, u_int, const u_char *);
+ extern int nd_printn(netdissect_options *, const u_char *, u_int, const u_char *);
+ extern int nd_printzp(netdissect_options *, const u_char *, u_int, const u_char *);
  
  /*
   * Flags for txtproto_print().
  #define RESP_CODE_SECOND_TOKEN        0x00000001      /* response code is second token in response line */
  
  extern void txtproto_print(netdissect_options *, const u_char *, u_int,
-     const char *, const char **, u_int);
+                          const char **, u_int);
+ #if (defined(__i386__) || defined(_M_IX86) || defined(__X86__) || defined(__x86_64__) || defined(_M_X64)) || \
+     (defined(__arm__) || defined(_M_ARM) || defined(__aarch64__)) || \
+     (defined(__m68k__) && (!defined(__mc68000__) && !defined(__mc68010__))) || \
+     (defined(__ppc__) || defined(__ppc64__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PPC64)) || \
+     (defined(__s390__) || defined(__s390x__) || defined(__zarch__)) || \
+     defined(__vax__)
  /*
-  * Locale-independent macros for testing character properties and
-  * stripping the 8th bit from characters.  Assumed to be handed
-  * a value between 0 and 255, i.e. don't hand them a char, as
-  * those might be in the range -128 to 127.
+  * The procesor natively handles unaligned loads, so just use memcpy()
+  * and memcmp(), to enable those optimizations.
+  *
+  * XXX - are those all the x86 tests we need?
+  * XXX - do we need to worry about ARMv1 through ARMv5, which didn't
+  * support unaligned loads, and, if so, do we need to worry about all
+  * of them, or just some of them, e.g. ARMv5?
+  * XXX - are those the only 68k tests we need not to generated
+  * unaligned accesses if the target is the 68000 or 68010?
+  * XXX - are there any tests we don't need, because some definitions are for
+  * compilers that also predefine the GCC symbols?
+  * XXX - do we need to test for both 32-bit and 64-bit versions of those
+  * architectures in all cases?
   */
- #define ND_ISASCII(c) (!((c) & 0x80)) /* value is an ASCII code point */
- #define ND_ISPRINT(c) ((c) >= 0x20 && (c) <= 0x7E)
- #define ND_ISGRAPH(c) ((c) > 0x20 && (c) <= 0x7E)
- #define ND_TOASCII(c) ((c) & 0x7F)
- extern void safeputchar(netdissect_options *, const u_char);
- extern void safeputs(netdissect_options *, const u_char *, const u_int);
- #ifdef LBL_ALIGN
+ #define UNALIGNED_MEMCPY(p, q, l)     memcpy((p), (q), (l))
+ #define UNALIGNED_MEMCMP(p, q, l)     memcmp((p), (q), (l))
+ #else
  /*
   * The processor doesn't natively handle unaligned loads,
   * and the compiler might "helpfully" optimize memcpy()
@@@ -375,13 -447,6 +447,6 @@@ extern void unaligned_memcpy(void *, co
  extern int unaligned_memcmp(const void *, const void *, size_t);
  #define UNALIGNED_MEMCPY(p, q, l)     unaligned_memcpy((p), (q), (l))
  #define UNALIGNED_MEMCMP(p, q, l)     unaligned_memcmp((p), (q), (l))
- #else
- /*
-  * The procesor natively handles unaligned loads, so just use memcpy()
-  * and memcmp(), to enable those optimizations.
-  */
- #define UNALIGNED_MEMCPY(p, q, l)     memcpy((p), (q), (l))
- #define UNALIGNED_MEMCMP(p, q, l)     memcmp((p), (q), (l))
  #endif
  
  #define PLURAL_SUFFIX(n) \
  extern const char *tok2strary_internal(const char **, int, const char *, int);
  #define       tok2strary(a,f,i) tok2strary_internal(a, sizeof(a)/sizeof(a[0]),f,i)
  
- extern if_printer lookup_printer(int);
+ extern uint_if_printer lookup_uint_printer(int);
+ extern void_if_printer lookup_void_printer(int);
+ extern if_printer_t lookup_printer(netdissect_options *, int);
+ #define ND_DEBUG {printf(" [%s:%d %s] ", __FILE__, __LINE__, __FUNCTION__); fflush(stdout);}
  
  /* The DLT printer routines */
  
- extern u_int ap1394_if_print IF_PRINTER_ARGS;
- extern u_int arcnet_if_print IF_PRINTER_ARGS;
- extern u_int arcnet_linux_if_print IF_PRINTER_ARGS;
+ extern void ap1394_if_print IF_PRINTER_ARGS;
+ extern void arcnet_if_print IF_PRINTER_ARGS;
+ extern void arcnet_linux_if_print IF_PRINTER_ARGS;
  extern u_int atm_if_print IF_PRINTER_ARGS;
- extern u_int bt_if_print IF_PRINTER_ARGS;
+ extern void bt_if_print IF_PRINTER_ARGS;
+ extern u_int brcm_tag_if_print IF_PRINTER_ARGS;
+ extern u_int brcm_tag_prepend_if_print IF_PRINTER_ARGS;
  extern u_int chdlc_if_print IF_PRINTER_ARGS;
  extern u_int cip_if_print IF_PRINTER_ARGS;
- extern u_int enc_if_print IF_PRINTER_ARGS;
+ extern u_int dsa_if_print IF_PRINTER_ARGS;
+ extern u_int edsa_if_print IF_PRINTER_ARGS;
+ extern void enc_if_print IF_PRINTER_ARGS;
  extern u_int ether_if_print IF_PRINTER_ARGS;
  extern u_int fddi_if_print IF_PRINTER_ARGS;
  extern u_int fr_if_print IF_PRINTER_ARGS;
@@@ -409,47 -482,52 +482,52 @@@ extern u_int ieee802_11_if_print IF_PRI
  extern u_int ieee802_11_radio_avs_if_print IF_PRINTER_ARGS;
  extern u_int ieee802_11_radio_if_print IF_PRINTER_ARGS;
  extern u_int ieee802_15_4_if_print IF_PRINTER_ARGS;
+ extern u_int ieee802_15_4_tap_if_print IF_PRINTER_ARGS;
  extern u_int ipfc_if_print IF_PRINTER_ARGS;
- extern u_int ipnet_if_print IF_PRINTER_ARGS;
- extern u_int juniper_atm1_print IF_PRINTER_ARGS;
- extern u_int juniper_atm2_print IF_PRINTER_ARGS;
- extern u_int juniper_chdlc_print IF_PRINTER_ARGS;
- extern u_int juniper_es_print IF_PRINTER_ARGS;
- extern u_int juniper_ether_print IF_PRINTER_ARGS;
- extern u_int juniper_frelay_print IF_PRINTER_ARGS;
- extern u_int juniper_ggsn_print IF_PRINTER_ARGS;
- extern u_int juniper_mfr_print IF_PRINTER_ARGS;
- extern u_int juniper_mlfr_print IF_PRINTER_ARGS;
- extern u_int juniper_mlppp_print IF_PRINTER_ARGS;
- extern u_int juniper_monitor_print IF_PRINTER_ARGS;
- extern u_int juniper_ppp_print IF_PRINTER_ARGS;
- extern u_int juniper_pppoe_atm_print IF_PRINTER_ARGS;
- extern u_int juniper_pppoe_print IF_PRINTER_ARGS;
- extern u_int juniper_services_print IF_PRINTER_ARGS;
+ extern u_int ipoib_if_print IF_PRINTER_ARGS;
+ extern void ipnet_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_atm1_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_atm2_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_chdlc_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_es_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_ether_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_frelay_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_ggsn_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_mfr_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_mlfr_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_mlppp_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_monitor_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_ppp_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_pppoe_atm_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_pppoe_if_print IF_PRINTER_ARGS;
+ extern u_int juniper_services_if_print IF_PRINTER_ARGS;
  extern u_int lane_if_print IF_PRINTER_ARGS;
  extern u_int ltalk_if_print IF_PRINTER_ARGS;
  extern u_int mfr_if_print IF_PRINTER_ARGS;
  extern u_int netanalyzer_if_print IF_PRINTER_ARGS;
  extern u_int netanalyzer_transparent_if_print IF_PRINTER_ARGS;
- extern u_int nflog_if_print IF_PRINTER_ARGS;
- extern u_int null_if_print IF_PRINTER_ARGS;
+ extern void nflog_if_print IF_PRINTER_ARGS;
+ extern void null_if_print IF_PRINTER_ARGS;
  extern u_int pflog_if_print IF_PRINTER_ARGS;
- extern u_int pktap_if_print IF_PRINTER_ARGS;
- extern u_int ppi_if_print IF_PRINTER_ARGS;
+ extern void pktap_if_print IF_PRINTER_ARGS;
+ extern void ppi_if_print IF_PRINTER_ARGS;
  extern u_int ppp_bsdos_if_print IF_PRINTER_ARGS;
  extern u_int ppp_hdlc_if_print IF_PRINTER_ARGS;
  extern u_int ppp_if_print IF_PRINTER_ARGS;
  extern u_int pppoe_if_print IF_PRINTER_ARGS;
  extern u_int prism_if_print IF_PRINTER_ARGS;
- extern u_int raw_if_print IF_PRINTER_ARGS;
- extern u_int sl_bsdos_if_print IF_PRINTER_ARGS;
- extern u_int sl_if_print IF_PRINTER_ARGS;
+ extern void raw_if_print IF_PRINTER_ARGS;
+ extern void sl_bsdos_if_print IF_PRINTER_ARGS;
+ extern void sl_if_print IF_PRINTER_ARGS;
  extern u_int sll_if_print IF_PRINTER_ARGS;
- extern u_int sunatm_if_print IF_PRINTER_ARGS;
- extern u_int symantec_if_print IF_PRINTER_ARGS;
+ extern u_int sll2_if_print IF_PRINTER_ARGS;
+ extern void sunatm_if_print IF_PRINTER_ARGS;
+ extern void symantec_if_print IF_PRINTER_ARGS;
  extern u_int token_if_print IF_PRINTER_ARGS;
- extern u_int usb_linux_48_byte_print IF_PRINTER_ARGS;
- extern u_int usb_linux_64_byte_print IF_PRINTER_ARGS;
+ extern void unsupported_if_print IF_PRINTER_ARGS;
+ extern void usb_linux_48_byte_if_print IF_PRINTER_ARGS;
+ extern void usb_linux_64_byte_if_print IF_PRINTER_ARGS;
+ extern u_int vsock_if_print IF_PRINTER_ARGS;
  
  /*
   * Structure passed to some printers to allow them to print
@@@ -469,50 -547,52 +547,52 @@@ struct lladdr_info 
  /* The printer routines. */
  
  extern void aarp_print(netdissect_options *, const u_char *, u_int);
- extern int ah_print(netdissect_options *, register const u_char *);
+ extern int ah_print(netdissect_options *, const u_char *);
  extern void ahcp_print(netdissect_options *, const u_char *, const u_int);
  extern void aodv_print(netdissect_options *, const u_char *, u_int, int);
  extern void aoe_print(netdissect_options *, const u_char *, const u_int);
+ extern int  arista_ethertype_print(netdissect_options *,const u_char *, u_int);
  extern void arp_print(netdissect_options *, const u_char *, u_int, u_int);
  extern void ascii_print(netdissect_options *, const u_char *, u_int);
  extern void atalk_print(netdissect_options *, const u_char *, u_int);
  extern void atm_print(netdissect_options *, u_int, u_int, u_int, const u_char *, u_int, u_int);
  extern void babel_print(netdissect_options *, const u_char *, u_int);
+ extern void bcm_li_print(netdissect_options *, const u_char *, u_int);
  extern void beep_print(netdissect_options *, const u_char *, u_int);
  extern void bfd_print(netdissect_options *, const u_char *, u_int, u_int);
- extern void bgp_print(netdissect_options *, const u_char *, int);
- extern char *bgp_vpn_rd_print (netdissect_options *, const u_char *);
+ extern void bgp_print(netdissect_options *, const u_char *, u_int);
+ extern const char *bgp_vpn_rd_print(netdissect_options *, const u_char *);
  extern void bootp_print(netdissect_options *, const u_char *, u_int);
  extern void calm_fast_print(netdissect_options *, const u_char *, u_int, const struct lladdr_info *);
- extern void carp_print(netdissect_options *, const u_char *, u_int, int);
+ extern void carp_print(netdissect_options *, const u_char *, u_int, u_int);
  extern void cdp_print(netdissect_options *, const u_char *, u_int, u_int);
  extern void cfm_print(netdissect_options *, const u_char *, u_int);
- extern u_int chdlc_print(netdissect_options *, register const u_char *, u_int);
+ extern u_int chdlc_print(netdissect_options *, const u_char *, u_int);
  extern void cisco_autorp_print(netdissect_options *, const u_char *, u_int);
  extern void cnfp_print(netdissect_options *, const u_char *);
  extern void dccp_print(netdissect_options *, const u_char *, const u_char *, u_int);
  extern void decnet_print(netdissect_options *, const u_char *, u_int, u_int);
  extern void dhcp6_print(netdissect_options *, const u_char *, u_int);
- extern int dstopt_print(netdissect_options *, const u_char *);
+ extern int dstopt_process(netdissect_options *, const u_char *);
  extern void dtp_print(netdissect_options *, const u_char *, u_int);
  extern void dvmrp_print(netdissect_options *, const u_char *, u_int);
  extern void eap_print(netdissect_options *, const u_char *, u_int);
  extern void egp_print(netdissect_options *, const u_char *, u_int);
  extern void eigrp_print(netdissect_options *, const u_char *, u_int);
- extern int esp_print(netdissect_options *, const u_char *, const int, const u_char *, int *, int *);
+ extern void esp_print(netdissect_options *, const u_char *, u_int, const u_char *, u_int, int, u_int);
  extern u_int ether_print(netdissect_options *, const u_char *, u_int, u_int, void (*)(netdissect_options *, const u_char *), const u_char *);
+ extern u_int ether_switch_tag_print(netdissect_options *, const u_char *, u_int, u_int, void (*)(netdissect_options *, const u_char *), u_int);
  extern int ethertype_print(netdissect_options *, u_short, const u_char *, u_int, u_int, const struct lladdr_info *, const struct lladdr_info *);
  extern u_int fddi_print(netdissect_options *, const u_char *, u_int, u_int);
  extern void forces_print(netdissect_options *, const u_char *, u_int);
- extern u_int fr_print(netdissect_options *, register const u_char *, u_int);
+ extern u_int fr_print(netdissect_options *, const u_char *, u_int);
  extern int frag6_print(netdissect_options *, const u_char *, const u_char *);
  extern void ftp_print(netdissect_options *, const u_char *, u_int);
  extern void geneve_print(netdissect_options *, const u_char *, u_int);
  extern void geonet_print(netdissect_options *, const u_char *, u_int, const struct lladdr_info *);
  extern void gre_print(netdissect_options *, const u_char *, u_int);
- extern int hbhopt_print(netdissect_options *, const u_char *);
+ extern int hbhopt_process(netdissect_options *, const u_char *, int *, uint32_t *);
  extern void hex_and_ascii_print(netdissect_options *, const char *, const u_char *, u_int);
- extern void hex_and_ascii_print_with_offset(netdissect_options *, const char *, const u_char *, u_int, u_int);
  extern void hex_print(netdissect_options *, const char *ident, const u_char *cp, u_int);
  extern void hex_print_with_offset(netdissect_options *, const char *ident, const u_char *cp, u_int, u_int);
  extern void hncp_print(netdissect_options *, const u_char *, u_int);
@@@ -520,18 -600,19 +600,19 @@@ extern void hsrp_print(netdissect_optio
  extern void http_print(netdissect_options *, const u_char *, u_int);
  extern void icmp6_print(netdissect_options *, const u_char *, u_int, const u_char *, int);
  extern void icmp_print(netdissect_options *, const u_char *, u_int, const u_char *, int);
+ extern u_int ieee802_15_4_print(netdissect_options *, const u_char *, u_int);
+ extern u_int ieee802_11_radio_print(netdissect_options *, const u_char *, u_int, u_int);
  extern void igmp_print(netdissect_options *, const u_char *, u_int);
  extern void igrp_print(netdissect_options *, const u_char *, u_int);
  extern void ip6_print(netdissect_options *, const u_char *, u_int);
  extern void ipN_print(netdissect_options *, const u_char *, u_int);
  extern void ip_print(netdissect_options *, const u_char *, u_int);
- extern void ip_print_inner(netdissect_options *, const u_char *, u_int, u_int nh, const u_char *);
- extern void ipcomp_print(netdissect_options *, register const u_char *);
+ extern void ipcomp_print(netdissect_options *, const u_char *);
  extern void ipx_netbios_print(netdissect_options *, const u_char *, u_int);
  extern void ipx_print(netdissect_options *, const u_char *, u_int);
  extern void isakmp_print(netdissect_options *, const u_char *, u_int, const u_char *);
- extern void isakmp_rfc3948_print(netdissect_options *, const u_char *, u_int, const u_char *);
- extern void isoclns_print(netdissect_options *, const u_char *, u_int, u_int);
+ extern void isakmp_rfc3948_print(netdissect_options *, const u_char *, u_int, const u_char *, int, int, u_int);
+ extern void isoclns_print(netdissect_options *, const u_char *, u_int);
  extern void krb_print(netdissect_options *, const u_char *);
  extern void l2tp_print(netdissect_options *, const u_char *, u_int);
  extern void lane_print(netdissect_options *, const u_char *, u_int, u_int);
@@@ -547,11 -628,7 +628,10 @@@ extern void lwapp_control_print(netdiss
  extern void lwapp_data_print(netdissect_options *, const u_char *, u_int);
  extern void lwres_print(netdissect_options *, const u_char *, u_int);
  extern void m3ua_print(netdissect_options *, const u_char *, const u_int);
- extern void medsa_print(netdissect_options *, const u_char *, u_int, u_int, const struct lladdr_info *, const struct lladdr_info *);
- extern u_int mfr_print(netdissect_options *, register const u_char *, u_int);
 +extern int macsec_print(netdissect_options *, const u_char **,
 +                       u_int *, u_int *, u_int *,
 +                       u_short *);
+ extern u_int mfr_print(netdissect_options *, const u_char *, u_int);
  extern void mobile_print(netdissect_options *, const u_char *, u_int);
  extern int mobility_print(netdissect_options *, const u_char *, const u_char *);
  extern void mpcp_print(netdissect_options *, const u_char *, u_int);
@@@ -559,33 -636,34 +639,34 @@@ extern void mpls_print(netdissect_optio
  extern int mptcp_print(netdissect_options *, const u_char *, u_int, u_char);
  extern void msdp_print(netdissect_options *, const u_char *, u_int);
  extern void msnlb_print(netdissect_options *, const u_char *);
- extern void nbt_tcp_print(netdissect_options *, const u_char *, int);
- extern void nbt_udp137_print(netdissect_options *, const u_char *, int);
- extern void nbt_udp138_print(netdissect_options *, const u_char *, int);
- extern void netbeui_print(netdissect_options *, u_short, const u_char *, int);
+ extern void nbt_tcp_print(netdissect_options *, const u_char *, u_int);
+ extern void nbt_udp137_print(netdissect_options *, const u_char *, u_int);
+ extern void nbt_udp138_print(netdissect_options *, const u_char *, u_int);
+ extern void netbeui_print(netdissect_options *, u_short, const u_char *, u_int);
  extern void nfsreply_print(netdissect_options *, const u_char *, u_int, const u_char *);
- extern void nfsreply_print_noaddr(netdissect_options *, const u_char *, u_int, const u_char *);
- extern void nfsreq_print_noaddr(netdissect_options *, const u_char *, u_int, const u_char *);
- extern const u_char * ns_nprint (netdissect_options *, register const u_char *, register const u_char *);
- extern void ns_print(netdissect_options *, const u_char *, u_int, int);
- extern void nsh_print(netdissect_options *ndo, const u_char *bp, u_int len);
+ extern void nfsreply_noaddr_print(netdissect_options *, const u_char *, u_int, const u_char *);
+ extern void nfsreq_noaddr_print(netdissect_options *, const u_char *, u_int, const u_char *);
+ extern const u_char *fqdn_print(netdissect_options *, const u_char *, const u_char *);
+ extern void domain_print(netdissect_options *, const u_char *, u_int, int);
+ extern void nsh_print(netdissect_options *, const u_char *, u_int);
  extern void ntp_print(netdissect_options *, const u_char *, u_int);
  extern void oam_print(netdissect_options *, const u_char *, u_int, u_int);
  extern void olsr_print(netdissect_options *, const u_char *, u_int, int);
  extern void openflow_print(netdissect_options *, const u_char *, const u_int);
  extern void ospf6_print(netdissect_options *, const u_char *, u_int);
  extern void ospf_print(netdissect_options *, const u_char *, u_int, const u_char *);
- extern int ospf_print_grace_lsa(netdissect_options *, const uint8_t *, u_int);
- extern int ospf_print_te_lsa(netdissect_options *, const uint8_t *, u_int);
+ extern int ospf_grace_lsa_print(netdissect_options *, const u_char *, u_int);
+ extern int ospf_te_lsa_print(netdissect_options *, const u_char *, u_int);
  extern void otv_print(netdissect_options *, const u_char *, u_int);
  extern void pgm_print(netdissect_options *, const u_char *, u_int, const u_char *);
  extern void pim_print(netdissect_options *, const u_char *, u_int, const u_char *);
  extern void pimv1_print(netdissect_options *, const u_char *, u_int);
- extern u_int ppp_print(netdissect_options *, register const u_char *, u_int);
+ extern u_int ppp_print(netdissect_options *, const u_char *, u_int);
  extern u_int pppoe_print(netdissect_options *, const u_char *, u_int);
  extern void pptp_print(netdissect_options *, const u_char *);
- extern int print_unknown_data(netdissect_options *, const u_char *, const char *, int);
- extern char *q922_string(netdissect_options *, const u_char *, u_int);
+ extern void ptp_print(netdissect_options *, const u_char *, u_int);
+ extern int print_unknown_data(netdissect_options *, const u_char *, const char *, u_int);
+ extern const char *q922_string(netdissect_options *, const u_char *, u_int);
  extern void q933_print(netdissect_options *, const u_char *, u_int);
  extern void radius_print(netdissect_options *, const u_char *, u_int);
  extern void resp_print(netdissect_options *, const u_char *, u_int);
@@@ -596,18 -674,18 +677,18 @@@ extern void rrcp_print(netdissect_optio
  extern void rsvp_print(netdissect_options *, const u_char *, u_int);
  extern int rt6_print(netdissect_options *, const u_char *, const u_char *);
  extern void rtsp_print(netdissect_options *, const u_char *, u_int);
- extern void rx_print(netdissect_options *, register const u_char *, int, int, int, const u_char *);
+ extern void rx_print(netdissect_options *, const u_char *, u_int, u_int, u_int, const u_char *);
  extern void sctp_print(netdissect_options *, const u_char *, const u_char *, u_int);
  extern void sflow_print(netdissect_options *, const u_char *, u_int);
+ extern void ssh_print(netdissect_options *, const u_char *, u_int);
  extern void sip_print(netdissect_options *, const u_char *, u_int);
  extern void slow_print(netdissect_options *, const u_char *, u_int);
- extern void smb_print_data(netdissect_options *, const unsigned char *, int);
- extern void smb_tcp_print(netdissect_options *, const u_char *, int);
+ extern void smb_tcp_print(netdissect_options *, const u_char *, u_int);
  extern void smtp_print(netdissect_options *, const u_char *, u_int);
  extern int snap_print(netdissect_options *, const u_char *, u_int, u_int, const struct lladdr_info *, const struct lladdr_info *, u_int);
  extern void snmp_print(netdissect_options *, const u_char *, u_int);
  extern void stp_print(netdissect_options *, const u_char *, u_int);
- extern void sunrpcrequest_print(netdissect_options *, const u_char *, u_int, const u_char *);
+ extern void sunrpc_print(netdissect_options *, const u_char *, u_int, const u_char *);
  extern void syslog_print(netdissect_options *, const u_char *, u_int);
  extern void tcp_print(netdissect_options *, const u_char *, u_int, const u_char *, int);
  extern void telnet_print(netdissect_options *, const u_char *, u_int);
@@@ -616,17 -694,19 +697,19 @@@ extern void timed_print(netdissect_opti
  extern void tipc_print(netdissect_options *, const u_char *, u_int, u_int);
  extern u_int token_print(netdissect_options *, const u_char *, u_int, u_int);
  extern void udld_print(netdissect_options *, const u_char *, u_int);
- extern void udp_print(netdissect_options *, const u_char *, u_int, const u_char *, int);
- extern int vjc_print(netdissect_options *, register const char *, u_short);
- extern void vqp_print(netdissect_options *, register const u_char *, register u_int);
+ extern void udp_print(netdissect_options *, const u_char *, u_int, const u_char *, int, u_int);
+ extern int vjc_print(netdissect_options *, const u_char *, u_short);
+ extern void vqp_print(netdissect_options *, const u_char *, u_int);
  extern void vrrp_print(netdissect_options *, const u_char *, u_int, const u_char *, int);
  extern void vtp_print(netdissect_options *, const u_char *, u_int);
- extern void vxlan_gpe_print(netdissect_options *ndo, const u_char *bp, u_int len);
+ extern void vxlan_gpe_print(netdissect_options *, const u_char *, u_int);
  extern void vxlan_print(netdissect_options *, const u_char *, u_int);
- extern void wb_print(netdissect_options *, const void *, u_int);
+ extern void wb_print(netdissect_options *, const u_char *, u_int);
+ extern void zep_print(netdissect_options *, const u_char *, u_int);
  extern void zephyr_print(netdissect_options *, const u_char *, int);
  extern void zmtp1_print(netdissect_options *, const u_char *, u_int);
- extern void zmtp1_print_datagram(netdissect_options *, const u_char *, const u_int);
+ extern void zmtp1_datagram_print(netdissect_options *, const u_char *, const u_int);
+ extern void someip_print(netdissect_options *, const u_char *, const u_int);
  
  /* checksum routines */
  extern void init_checksum(void);
@@@ -640,27 -720,32 +723,32 @@@ struct cksum_vec 
  extern uint16_t in_cksum(const struct cksum_vec *, int);
  extern uint16_t in_cksum_shouldbe(uint16_t, uint16_t);
  
- extern int nextproto4_cksum(netdissect_options *, const struct ip *, const uint8_t *, u_int, u_int, u_int);
+ /* IP protocol demuxing routines */
+ extern void ip_demux_print(netdissect_options *, const u_char *, u_int, u_int, int, u_int, uint8_t, const u_char *);
+ extern uint16_t nextproto4_cksum(netdissect_options *, const struct ip *, const uint8_t *, u_int, u_int, uint8_t);
  
  /* in print-ip6.c */
- extern int nextproto6_cksum(netdissect_options *, const struct ip6_hdr *, const uint8_t *, u_int, u_int, u_int);
+ extern uint16_t nextproto6_cksum(netdissect_options *, const struct ip6_hdr *, const uint8_t *, u_int, u_int, uint8_t);
  
  /* Utilities */
+ extern void nd_print_trunc(netdissect_options *);
+ extern void nd_print_protocol(netdissect_options *);
+ extern void nd_print_protocol_caps(netdissect_options *);
+ extern void nd_print_invalid(netdissect_options *);
  extern int mask2plen(uint32_t);
  extern int mask62plen(const u_char *);
  
- extern const char *dnname_string(netdissect_options *, u_short);
  extern const char *dnnum_string(netdissect_options *, u_short);
  
- extern char *smb_errstr(int, int);
- extern const char *nt_errstr(uint32_t);
- extern int decode_prefix4(netdissect_options *, const u_char *, u_int, char *, u_int);
- extern int decode_prefix6(netdissect_options *, const u_char *, u_int, char *, u_int);
+ extern int decode_prefix4(netdissect_options *, const u_char *, u_int, char *, size_t);
+ extern int decode_prefix6(netdissect_options *, const u_char *, u_int, char *, size_t);
  
- extern void esp_print_decodesecret(netdissect_options *);
- extern int esp_print_decrypt_buffer_by_ikev2(netdissect_options *, int,
-                                            u_char spii[8], u_char spir[8],
+ extern void esp_decodesecret_print(netdissect_options *);
+ extern int esp_decrypt_buffer_by_ikev2_print(netdissect_options *, int,
+                                            const u_char spii[8],
+                                            const u_char spir[8],
                                             const u_char *, const u_char *);
  
  #endif  /* netdissect_h */
diff --combined print-ether.c
index 3b1ef34e36f2b29c6b3284ba7d10b9bb9b5afa1f,299c20137aeacf8b1a72cead909d8ff16179de60..c7ee8687a5f7316a6716a166e18c9a4d493cd030
  /* \summary: Ethernet printer */
  
  #ifdef HAVE_CONFIG_H
- #include "config.h"
+ #include <config.h>
  #endif
  
- #include <netdissect-stdinc.h>
+ #include "netdissect-stdinc.h"
  
  #include "netdissect.h"
  #include "extract.h"
  #include "addrtoname.h"
  #include "ethertype.h"
- #include "ether.h"
+ /*
+  * Structure of an Ethernet header.
+  */
+ struct        ether_header {
+       nd_mac_addr     ether_dhost;
+       nd_mac_addr     ether_shost;
+       nd_uint16_t     ether_length_type;
+ };
+ /*
+  * Length of an Ethernet header; note that some compilers may pad
+  * "struct ether_header" to a multiple of 4 bytes, for example, so
+  * "sizeof (struct ether_header)" may not give the right answer.
+  */
+ #define ETHER_HDRLEN          14
  
  const struct tok ethertype_values[] = {
      { ETHERTYPE_IP,           "IPv4" },
@@@ -42,7 -57,6 +57,7 @@@
      { ETHERTYPE_8021Q9100,    "802.1Q-9100" },
      { ETHERTYPE_8021QinQ,     "802.1Q-QinQ" },
      { ETHERTYPE_8021Q9200,    "802.1Q-9200" },
 +    { ETHERTYPE_MACSEC,               "802.1AE MACsec" },
      { ETHERTYPE_VMAN,         "VMAN" },
      { ETHERTYPE_PUP,            "PUP" },
      { ETHERTYPE_ARP,            "ARP"},
      { ETHERTYPE_GEONET,         "GeoNet"},
      { ETHERTYPE_CALM_FAST,      "CALM FAST"},
      { ETHERTYPE_AOE,            "AoE" },
-     { ETHERTYPE_MEDSA,          "MEDSA" },
+     { ETHERTYPE_PTP,            "PTP" },
+     { ETHERTYPE_ARISTA,         "Arista Vendor Specific Protocol" },
      { 0, NULL}
  };
  
- static inline void
- ether_hdr_print(netdissect_options *ndo,
-                 const u_char *bp, u_int length)
+ static void
+ ether_addresses_print(netdissect_options *ndo, const u_char *src,
+                     const u_char *dst)
  {
-       register const struct ether_header *ep;
-       uint16_t length_type;
-       ep = (const struct ether_header *)bp;
-       ND_PRINT((ndo, "%s > %s",
-                    etheraddr_string(ndo, ESRC(ep)),
-                    etheraddr_string(ndo, EDST(ep))));
-       length_type = EXTRACT_16BITS(&ep->ether_length_type);
-       if (!ndo->ndo_qflag) {
-               if (length_type <= ETHERMTU) {
-                       ND_PRINT((ndo, ", 802.3"));
-                       length = length_type;
-               } else
-                       ND_PRINT((ndo, ", ethertype %s (0x%04x)",
-                                      tok2str(ethertype_values,"Unknown", length_type),
-                                        length_type));
-         } else {
-                 if (length_type <= ETHERMTU) {
-                         ND_PRINT((ndo, ", 802.3"));
-                       length = length_type;
-               } else
-                         ND_PRINT((ndo, ", %s", tok2str(ethertype_values,"Unknown Ethertype (0x%04x)", length_type)));
-         }
+       ND_PRINT("%s > %s, ",
+                GET_ETHERADDR_STRING(src), GET_ETHERADDR_STRING(dst));
+ }
  
-       ND_PRINT((ndo, ", length %u: ", length));
+ static void
+ ether_type_print(netdissect_options *ndo, uint16_t type)
+ {
+       if (!ndo->ndo_qflag)
+               ND_PRINT("ethertype %s (0x%04x)",
+                        tok2str(ethertype_values, "Unknown", type), type);
+       else
+               ND_PRINT("%s",
+                        tok2str(ethertype_values, "Unknown Ethertype (0x%04x)", type));
  }
  
  /*
-  * Print an Ethernet frame.
-  * This might be encapsulated within another frame; we might be passed
-  * a pointer to a function that can print header information for that
-  * frame's protocol, and an argument to pass to that function.
+  * Common code for printing Ethernet frames.
   *
-  * FIXME: caplen can and should be derived from ndo->ndo_snapend and p.
+  * It can handle Ethernet headers with extra tag information inserted
+  * after the destination and source addresses, as is inserted by some
+  * switch chips, and extra encapsulation header information before
+  * printing Ethernet header information (such as a LANE ID for ATM LANE).
   */
- u_int
- ether_print(netdissect_options *ndo,
-             const u_char *p, u_int length, u_int caplen,
-             void (*print_encap_header)(netdissect_options *ndo, const u_char *), const u_char *encap_header_arg)
+ static u_int
+ ether_common_print(netdissect_options *ndo, const u_char *p, u_int length,
+     u_int caplen,
+     void (*print_switch_tag)(netdissect_options *ndo, const u_char *),
+     u_int switch_tag_len,
+     void (*print_encap_header)(netdissect_options *ndo, const u_char *),
+     const u_char *encap_header_arg)
  {
-       const struct ether_header *ep;
+       const struct ether_header *ehp;
        u_int orig_length;
-       u_short length_type;
        u_int hdrlen;
+       u_short length_type;
+       int printed_length;
        int llc_hdrlen;
        struct lladdr_info src, dst;
  
-       if (caplen < ETHER_HDRLEN) {
-               ND_PRINT((ndo, "[|ether]"));
+       if (caplen < ETHER_HDRLEN + switch_tag_len) {
+               nd_print_trunc(ndo);
                return (caplen);
        }
-       if (length < ETHER_HDRLEN) {
-               ND_PRINT((ndo, "[|ether]"));
+       if (length < ETHER_HDRLEN + switch_tag_len) {
+               nd_print_trunc(ndo);
                return (length);
        }
  
-       if (ndo->ndo_eflag) {
-               if (print_encap_header != NULL)
-                       (*print_encap_header)(ndo, encap_header_arg);
-               ether_hdr_print(ndo, p, length);
-       }
-       orig_length = length;
+       if (print_encap_header != NULL)
+               (*print_encap_header)(ndo, encap_header_arg);
  
-       length -= ETHER_HDRLEN;
-       caplen -= ETHER_HDRLEN;
-       ep = (const struct ether_header *)p;
-       p += ETHER_HDRLEN;
-       hdrlen = ETHER_HDRLEN;
+       orig_length = length;
  
-       src.addr = ESRC(ep);
+       /*
+        * Get the source and destination addresses, skip past them,
+        * and print them if we're printing the link-layer header.
+        */
+       ehp = (const struct ether_header *)p;
+       src.addr = ehp->ether_shost;
        src.addr_string = etheraddr_string;
-       dst.addr = EDST(ep);
+       dst.addr = ehp->ether_dhost;
        dst.addr_string = etheraddr_string;
-       length_type = EXTRACT_16BITS(&ep->ether_length_type);
  
+       length -= 2*MAC_ADDR_LEN;
+       caplen -= 2*MAC_ADDR_LEN;
+       p += 2*MAC_ADDR_LEN;
+       hdrlen = 2*MAC_ADDR_LEN;
+       if (ndo->ndo_eflag)
+               ether_addresses_print(ndo, src.addr, dst.addr);
+       /*
+        * Print the switch tag, if we have one, and skip past it.
+        */
+       if (print_switch_tag != NULL)
+               (*print_switch_tag)(ndo, p);
+       length -= switch_tag_len;
+       caplen -= switch_tag_len;
+       p += switch_tag_len;
+       hdrlen += switch_tag_len;
+       /*
+        * Get the length/type field, skip past it, and print it
+        * if we're printing the link-layer header.
+        */
  recurse:
+       length_type = GET_BE_U_2(p);
+       length -= 2;
+       caplen -= 2;
+       p += 2;
+       hdrlen += 2;
++      if (length_type == ETHERTYPE_MACSEC) {
++              /*
++               * MACsec, aka IEEE 802.1AE-2006
++               * Print the header, and try to print the payload if it's not encrypted
++               */
++              int ret = macsec_print(ndo, &p, &length, &caplen, &hdrlen, &length_type);
++
++              if (ret == 0)
++                      goto raw;
++              else if (ret > 0)
++                      return ret;
++      }
++
        /*
-        * Is it (gag) an 802.3 encapsulation?
+        * Process VLAN tag types.
         */
-       if (length_type <= ETHERMTU) {
-               /* Try to print the LLC-layer header & higher layers */
-               llc_hdrlen = llc_print(ndo, p, length, caplen, &src, &dst);
-               if (llc_hdrlen < 0) {
-                       /* packet type not known, print raw packet */
-                       if (!ndo->ndo_suppress_default_print)
-                               ND_DEFAULTPRINT(p, caplen);
-                       llc_hdrlen = -llc_hdrlen;
-               }
-               hdrlen += llc_hdrlen;
-       } else if (length_type == ETHERTYPE_8021Q  ||
-                 length_type == ETHERTYPE_8021Q9100 ||
-                 length_type == ETHERTYPE_8021Q9200 ||
-                 length_type == ETHERTYPE_8021QinQ) {
+       printed_length = 0;
+       while (length_type == ETHERTYPE_8021Q  ||
+               length_type == ETHERTYPE_8021Q9100 ||
+               length_type == ETHERTYPE_8021Q9200 ||
+               length_type == ETHERTYPE_8021QinQ) {
                /*
+                * It has a VLAN tag.
                 * Print VLAN information, and then go back and process
                 * the enclosed type field.
                 */
                if (caplen < 4) {
-                       ND_PRINT((ndo, "[|vlan]"));
+                       ndo->ndo_protocol = "vlan";
+                       nd_print_trunc(ndo);
                        return (hdrlen + caplen);
                }
                if (length < 4) {
-                       ND_PRINT((ndo, "[|vlan]"));
+                       ndo->ndo_protocol = "vlan";
+                       nd_print_trunc(ndo);
                        return (hdrlen + length);
                }
-               if (ndo->ndo_eflag) {
-                       uint16_t tag = EXTRACT_16BITS(p);
-                       ND_PRINT((ndo, "%s, ", ieee8021q_tci_string(tag)));
+               if (ndo->ndo_eflag) {
+                       uint16_t tag = GET_BE_U_2(p);
+                       ether_type_print(ndo, length_type);
+                       if (!printed_length) {
+                               ND_PRINT(", length %u: ", orig_length);
+                               printed_length = 1;
+                       } else
+                               ND_PRINT(", ");
+                       ND_PRINT("%s, ", ieee8021q_tci_string(tag));
                }
  
-               length_type = EXTRACT_16BITS(p + 2);
-               if (ndo->ndo_eflag && length_type > ETHERMTU)
-                       ND_PRINT((ndo, "ethertype %s, ", tok2str(ethertype_values,"0x%04x", length_type)));
+               length_type = GET_BE_U_2(p + 2);
                p += 4;
                length -= 4;
                caplen -= 4;
                hdrlen += 4;
-               goto recurse;
-       } else if (length_type == ETHERTYPE_MACSEC) {
+       }
+       /*
+        * We now have the final length/type field.
+        */
+       if (length_type <= MAX_ETHERNET_LENGTH_VAL) {
                /*
-                * MACsec, aka IEEE 802.1AE-2006
-                * Print the header, and try to print the payload if it's not encrypted
+                * It's a length field, containing the length of the
+                * remaining payload; use it as such, as long as
+                * it's not too large (bigger than the actual payload).
                 */
-               int ret = macsec_print(ndo, &p, &length, &caplen, &hdrlen, &length_type);
-               if (ret < 0)
-                       goto recurse;
-               else if (ret == 0)
-                       goto raw;
-               else
-                       return ret;
+               if (length_type < length) {
+                       length = length_type;
+                       if (caplen > length)
+                               caplen = length;
+               }
+               /*
+                * Cut off the snapshot length to the end of the
+                * payload.
+                */
+               nd_push_snapend(ndo, p + length);
+               if (ndo->ndo_eflag) {
+                       ND_PRINT("802.3");
+                       if (!printed_length)
+                               ND_PRINT(", length %u: ", length);
+               }
+               /*
+                * An LLC header follows the length.  Print that and
+                * higher layers.
+                */
+               llc_hdrlen = llc_print(ndo, p, length, caplen, &src, &dst);
+               if (llc_hdrlen < 0) {
+                       /* packet type not known, print raw packet */
+                       if (!ndo->ndo_suppress_default_print)
+                               ND_DEFAULTPRINT(p, caplen);
+                       llc_hdrlen = -llc_hdrlen;
+               }
+               hdrlen += llc_hdrlen;
+               nd_pop_packet_info(ndo);
        } else if (length_type == ETHERTYPE_JUMBO) {
                /*
-                * Alteon jumbo frames.
+                * It's a type field, with the type for Alteon jumbo frames.
                 * See
                 *
-                *      http://tools.ietf.org/html/draft-ietf-isis-ext-eth-01
+                *      https://tools.ietf.org/html/draft-ietf-isis-ext-eth-01
                 *
                 * which indicates that, following the type field,
                 * there's an LLC header and payload.
                        llc_hdrlen = -llc_hdrlen;
                }
                hdrlen += llc_hdrlen;
+       } else if (length_type == ETHERTYPE_ARISTA) {
+               if (caplen < 2) {
+                       ND_PRINT("[|arista]");
+                       return (hdrlen + caplen);
+               }
+               if (length < 2) {
+                       ND_PRINT("[|arista]");
+                       return (hdrlen + length);
+               }
+               ether_type_print(ndo, length_type);
+               ND_PRINT(", length %u: ", orig_length);
+               int bytesConsumed = arista_ethertype_print(ndo, p, length);
+               if (bytesConsumed > 0) {
+                       p += bytesConsumed;
+                       length -= bytesConsumed;
+                       caplen -= bytesConsumed;
+                       hdrlen += bytesConsumed;
+                       goto recurse;
+               } else {
+                       /* subtype/version not known, print raw packet */
+                       if (!ndo->ndo_eflag && length_type > MAX_ETHERNET_LENGTH_VAL) {
+                               ether_addresses_print(ndo, src.addr, dst.addr);
+                               ether_type_print(ndo, length_type);
+                               ND_PRINT(", length %u: ", orig_length);
+                       }
+                        if (!ndo->ndo_suppress_default_print)
+                                ND_DEFAULTPRINT(p, caplen);
+               }
        } else {
+               /*
+                * It's a type field with some other value.
+                */
+               if (ndo->ndo_eflag) {
+                       ether_type_print(ndo, length_type);
+                       if (!printed_length)
+                               ND_PRINT(", length %u: ", orig_length);
+                       else
+                               ND_PRINT(", ");
+               }
                if (ethertype_print(ndo, length_type, p, length, caplen, &src, &dst) == 0) {
 +raw:
                        /* type not known, print raw packet */
                        if (!ndo->ndo_eflag) {
-                               if (print_encap_header != NULL)
-                                       (*print_encap_header)(ndo, encap_header_arg);
-                               ether_hdr_print(ndo, (const u_char *)ep, orig_length);
+                               /*
+                                * We didn't print the full link-layer
+                                * header, as -e wasn't specified, so
+                                * print only the source and destination
+                                * MAC addresses and the final Ethernet
+                                * type.
+                                */
+                               ether_addresses_print(ndo, src.addr, dst.addr);
+                               ether_type_print(ndo, length_type);
+                               ND_PRINT(", length %u: ", orig_length);
                        }
  
                        if (!ndo->ndo_suppress_default_print)
        return (hdrlen);
  }
  
+ /*
+  * Print an Ethernet frame while specyfing a non-standard Ethernet header
+  * length.
+  * This might be encapsulated within another frame; we might be passed
+  * a pointer to a function that can print header information for that
+  * frame's protocol, and an argument to pass to that function.
+  *
+  * FIXME: caplen can and should be derived from ndo->ndo_snapend and p.
+  */
+ u_int
+ ether_switch_tag_print(netdissect_options *ndo, const u_char *p, u_int length,
+     u_int caplen,
+     void (*print_switch_tag)(netdissect_options *, const u_char *),
+     u_int switch_tag_len)
+ {
+       return (ether_common_print(ndo, p, length, caplen, print_switch_tag,
+                                  switch_tag_len, NULL, NULL));
+ }
+ /*
+  * Print an Ethernet frame.
+  * This might be encapsulated within another frame; we might be passed
+  * a pointer to a function that can print header information for that
+  * frame's protocol, and an argument to pass to that function.
+  *
+  * FIXME: caplen can and should be derived from ndo->ndo_snapend and p.
+  */
+ u_int
+ ether_print(netdissect_options *ndo,
+           const u_char *p, u_int length, u_int caplen,
+           void (*print_encap_header)(netdissect_options *ndo, const u_char *),
+           const u_char *encap_header_arg)
+ {
+       ndo->ndo_protocol = "ether";
+       return (ether_common_print(ndo, p, length, caplen, NULL, 0,
+                                  print_encap_header, encap_header_arg));
+ }
  /*
   * This is the top level routine of the printer.  'p' points
   * to the ether header of the packet, 'h->len' is the length
   */
  u_int
  ether_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
-                const u_char *p)
+              const u_char *p)
  {
+       ndo->ndo_protocol = "ether_if";
        return (ether_print(ndo, p, h->len, h->caplen, NULL, NULL));
  }
  
   */
  u_int
  netanalyzer_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
-                      const u_char *p)
+                    const u_char *p)
  {
        /*
         * Fail if we don't have enough data for the Hilscher pseudo-header.
         */
-       if (h->len < 4 || h->caplen < 4) {
-               ND_PRINT((ndo, "[|netanalyzer]"));
+       ndo->ndo_protocol = "netanalyzer_if";
+       if (h->caplen < 4) {
+               nd_print_trunc(ndo);
                return (h->caplen);
        }
  
   */
  u_int
  netanalyzer_transparent_if_print(netdissect_options *ndo,
-                                  const struct pcap_pkthdr *h,
-                                  const u_char *p)
+                                const struct pcap_pkthdr *h,
+                                const u_char *p)
  {
        /*
         * Fail if we don't have enough data for the Hilscher pseudo-header,
         * preamble, and SOF.
         */
-       if (h->len < 12 || h->caplen < 12) {
-               ND_PRINT((ndo, "[|netanalyzer-transparent]"));
+       ndo->ndo_protocol = "netanalyzer_transparent_if";
+       if (h->caplen < 12) {
+               nd_print_trunc(ndo);
                return (h->caplen);
        }
  
  
  int
  ethertype_print(netdissect_options *ndo,
-                 u_short ether_type, const u_char *p,
-                 u_int length, u_int caplen,
-                 const struct lladdr_info *src, const struct lladdr_info *dst)
+               u_short ether_type, const u_char *p,
+               u_int length, u_int caplen,
+               const struct lladdr_info *src, const struct lladdr_info *dst)
  {
        switch (ether_type) {
  
        case ETHERTYPE_IP:
-               ip_print(ndo, p, length);
+               ip_print(ndo, p, length);
                return (1);
  
        case ETHERTYPE_IPV6:
  
        case ETHERTYPE_ARP:
        case ETHERTYPE_REVARP:
-               arp_print(ndo, p, length, caplen);
+               arp_print(ndo, p, length, caplen);
                return (1);
  
        case ETHERTYPE_DN:
  
        case ETHERTYPE_ATALK:
                if (ndo->ndo_vflag)
-                       ND_PRINT((ndo, "et1 "));
+                       ND_PRINT("et1 ");
                atalk_print(ndo, p, length);
                return (1);
  
                return (1);
  
        case ETHERTYPE_IPX:
-               ND_PRINT((ndo, "(NOV-ETHII) "));
+               ND_PRINT("(NOV-ETHII) ");
                ipx_print(ndo, p, length);
                return (1);
  
        case ETHERTYPE_ISO:
                if (length == 0 || caplen == 0) {
-                       ND_PRINT((ndo, " [|osi]"));
+                       ndo->ndo_protocol = "isoclns";
+                       nd_print_trunc(ndo);
                        return (1);
                }
-               isoclns_print(ndo, p + 1, length - 1, caplen - 1);
+               isoclns_print(ndo, p + 1, length - 1);
                return(1);
  
        case ETHERTYPE_PPPOED:
                return (1);
  
        case ETHERTYPE_EAPOL:
-               eap_print(ndo, p, length);
+               eap_print(ndo, p, length);
                return (1);
  
        case ETHERTYPE_RRCP:
-               rrcp_print(ndo, p, length, src, dst);
+               rrcp_print(ndo, p, length, src, dst);
                return (1);
  
        case ETHERTYPE_PPP:
                if (length) {
-                       ND_PRINT((ndo, ": "));
+                       ND_PRINT(": ");
                        ppp_print(ndo, p, length);
                }
                return (1);
  
        case ETHERTYPE_MPCP:
-               mpcp_print(ndo, p, length);
+               mpcp_print(ndo, p, length);
                return (1);
  
        case ETHERTYPE_SLOW:
-               slow_print(ndo, p, length);
+               slow_print(ndo, p, length);
                return (1);
  
        case ETHERTYPE_CFM:
                lldp_print(ndo, p, length);
                return (1);
  
-         case ETHERTYPE_NSH:
-                 nsh_print(ndo, p, length);
-                 return (1);
+       case ETHERTYPE_NSH:
+               nsh_print(ndo, p, length);
+               return (1);
  
-         case ETHERTYPE_LOOPBACK:
+       case ETHERTYPE_LOOPBACK:
                loopback_print(ndo, p, length);
-                 return (1);
+               return (1);
  
        case ETHERTYPE_MPLS:
        case ETHERTYPE_MPLS_MULTI:
                msnlb_print(ndo, p);
                return (1);
  
-         case ETHERTYPE_GEONET_OLD:
-         case ETHERTYPE_GEONET:
-                 geonet_print(ndo, p, length, src);
-                 return (1);
+       case ETHERTYPE_GEONET_OLD:
+       case ETHERTYPE_GEONET:
+               geonet_print(ndo, p, length, src);
+               return (1);
  
-         case ETHERTYPE_CALM_FAST:
-                 calm_fast_print(ndo, p, length, src);
-                 return (1);
+       case ETHERTYPE_CALM_FAST:
+               calm_fast_print(ndo, p, length, src);
+               return (1);
  
        case ETHERTYPE_AOE:
                aoe_print(ndo, p, length);
                return (1);
  
-       case ETHERTYPE_MEDSA:
-               medsa_print(ndo, p, length, caplen, src, dst);
+       case ETHERTYPE_PTP:
+               ptp_print(ndo, p, length);
                return (1);
  
        case ETHERTYPE_LAT:
                return (0);
        }
  }
- /*
-  * Local Variables:
-  * c-style: whitesmith
-  * c-basic-offset: 8
-  * End:
-  */
diff --combined tests/TESTLIST
index 66dbb6e590982e1053744c92fe64dea8cdda5837,2cd4abb9933ed95c99591af2d0151be78e48178e..a023709dd7a319758b8e0f293a62b5c71706071a
@@@ -1,4 -1,5 +1,5 @@@
- # The Option -n is useless in TESTLIST. It is already set in TESTonce.
+ # The options -# and -n are useless in TESTLIST. They are already set
+ # in TESTonce.
  
  # Various flags applied to a TCP session.
  #
  # "print-X.out" being different files - we might be running
  # this on a case-insensitive file system, e.g. a Windows
  # file system or a case-insensitive HFS+ file system on
- # Mac OS X.
+ # macOS.
  #
  # Therefore, for "X" and "XX", we have "print-capX.out"
  # and "print-capXX.out".
  #
- print-x               print-flags.pcap        print-x.out     -t -x
- print-xx      print-flags.pcap        print-xx.out    -t -xx
- print-X               print-flags.pcap        print-capX.out  -t -X
- print-XX      print-flags.pcap        print-capXX.out -t -XX
- print-A               print-flags.pcap        print-A.out     -t -A
- print-AA      print-flags.pcap        print-AA.out    -t -AA
+ print-x               print-flags.pcap        print-x.out     -x
+ print-xx      print-flags.pcap        print-xx.out    -xx
+ print-X               print-flags.pcap        print-capX.out  -X
+ print-XX      print-flags.pcap        print-capXX.out -XX
+ print-A               print-flags.pcap        print-A.out     -A
+ print-AA      print-flags.pcap        print-AA.out    -AA
  
  # BGP tests
- bgp_vpn_attrset bgp_vpn_attrset.pcap bgp_vpn_attrset.out -t -v
- mpbgp-linklocal-nexthop mpbgp-linklocal-nexthop.pcap mpbgp-linklocal-nexthop.out -t -v
- bgp_infloop-v         bgp-infinite-loop.pcap          bgp_infloop-v.out       -t -v
- bgp-aigp      bgp-aigp.pcap   bgp-aigp.out    -t -v
- bgp-large-community bgp-large-community.pcap bgp-large-community.out -t -v
- bgp-shutdown-communication bgp-shutdown-communication.pcap bgp-shutdown-communication.out -t -v -n
+ bgp_vpn_attrset bgp_vpn_attrset.pcap bgp_vpn_attrset.out -v
+ mpbgp-linklocal-nexthop mpbgp-linklocal-nexthop.pcap mpbgp-linklocal-nexthop.out -v
+ bgp_infloop-v         bgp-infinite-loop.pcap          bgp_infloop-v.out       -v
+ bgp-aigp      bgp-aigp.pcap   bgp-aigp.out    -v
+ bgp-large-community bgp-large-community.pcap bgp-large-community.out -v
+ bgp-shutdown-communication bgp-shutdown-communication.pcapng bgp-shutdown-communication.out -v
+ bgp-addpath bgp-addpath.pcap bgp-addpath.out -v
+ bgp-4byte-asn bgp-4byte-asn.pcap      bgp-4byte-asn.out       -v
+ bgp-4byte-asdot       bgp-4byte-asn.pcap      bgp-4byte-asdot.out     -vb
+ bgp-lu-multiple-labels bgp-lu-multiple-labels.pcap bgp-lu-multiple-labels.out -v
+ bgp-evpn      bgp-evpn.pcap           bgp-evpn.out            -v
+ bgp-llgr      bgp-evpn.pcap           bgp-llgr.out            -v
+ bgp-encap     bgp-encap.pcap          bgp-encap.out           -v
+ bgp-rt-prefix bgp-rt-prefix.pcap      bgp-rt-prefix.out       -v
+ # Broadcom tag tests
+ brcmtag               brcm-tag.pcap           brcm-tag.out
+ brcmtag-e     brcm-tag.pcap           brcm-tag-e.out  -e
+ brcmtagprepend        brcm-tag-prepend.pcap   brcm-tag-prepend.out -e
+ # Broadcom LI
+ bcm-li bcm-li.pcap bcm-li.out
+ bcm-li-v bcm-li.pcap bcm-li-v.out -v
+ # Marvell DSA tag tests
+ dsa           dsa.pcap                dsa.out
+ dsa-e         dsa.pcap                dsa-e.out       -e
  
  # EAP tests
- eapon1 eapon1.pcap eapon1.out -t
+ eapon1                eapon1.pcap             eapon1.out
+ # Marvell DSA tag tests
+ edsa          edsa.pcap               edsa.out
+ edsa-e                edsa.pcap               edsa-e.out      -e
  
  # ESP tests
- esp0 02-sunrise-sunset-esp.pcap esp0.out -t
+ esp0          02-sunrise-sunset-esp.pcap      esp0.out
  # more ESP tests in crypto.sh
  
  # ISAKMP tests
- isakmp1 isakmp-delete-segfault.pcap isakmp1.out -t
- isakmp2 isakmp-pointer-loop.pcap    isakmp2.out -t
- isakmp3 isakmp-identification-segfault.pcap isakmp3.out -t -v
+ isakmp1 isakmp-delete-segfault.pcap isakmp1.out
+ isakmp2 isakmp-pointer-loop.pcap    isakmp2.out
+ isakmp3 isakmp-identification-segfault.pcap isakmp3.out -v
  # isakmp4 is in crypto.sh
- isakmp5-v     ISAKMP_sa_setup.pcap            isakmp5-v.out   -t -v
+ isakmp5-v     ISAKMP_sa_setup.pcap            isakmp5-v.out   -v
  
  # Link Management Protocol tests
- lmp           lmp.pcap                lmp.out -t -T lmp
+ lmp           lmp.pcap                lmp.out -T lmp
  # lmp-v is now conditionally handled by lmp-v.sh
  
  # MPLS tests
- mpls-ldp-hello        mpls-ldp-hello.pcap     mpls-ldp-hello.out -t -v
- ldp_infloop   ldp-infinite-loop.pcap  ldp_infloop.out -t
- lspping-fec-ldp    lspping-fec-ldp.pcap lspping-fec-ldp.out -t
- lspping-fec-ldp-v  lspping-fec-ldp.pcap lspping-fec-ldp-v.out -t -v
- lspping-fec-ldp-vv lspping-fec-ldp.pcap lspping-fec-ldp-vv.out -t -vv
- lspping-fec-rsvp    lspping-fec-rsvp.pcap lspping-fec-rsvp.out -t
- lspping-fec-rsvp-v  lspping-fec-rsvp.pcap lspping-fec-rsvp-v.out -t -v
- lspping-fec-rsvp-vv lspping-fec-rsvp.pcap lspping-fec-rsvp-vv.out -t -vv
- mpls-traceroute   mpls-traceroute.pcap mpls-traceroute.out -t
- mpls-traceroute-v mpls-traceroute.pcap mpls-traceroute-v.out -t -v
+ mpls-ldp-hello        mpls-ldp-hello.pcap     mpls-ldp-hello.out -v
+ ldp_infloop   ldp-infinite-loop.pcap  ldp_infloop.out
+ lspping-fec-ldp    lspping-fec-ldp.pcap lspping-fec-ldp.out
+ lspping-fec-ldp-v  lspping-fec-ldp.pcap lspping-fec-ldp-v.out -v
+ lspping-fec-ldp-vv lspping-fec-ldp.pcap lspping-fec-ldp-vv.out -vv
+ lspping-fec-rsvp    lspping-fec-rsvp.pcap lspping-fec-rsvp.out
+ lspping-fec-rsvp-v  lspping-fec-rsvp.pcap lspping-fec-rsvp-v.out -v
+ lspping-fec-rsvp-vv lspping-fec-rsvp.pcap lspping-fec-rsvp-vv.out -vv
+ mpls-traceroute   mpls-traceroute.pcap mpls-traceroute.out
+ mpls-traceroute-v mpls-traceroute.pcap mpls-traceroute-v.out -v
+ mpls-over-udp  mpls-over-udp.pcap  mpls-over-udp.out
+ mpls-over-udp-v  mpls-over-udp.pcap  mpls-over-udp-v.out -v
  
  # OSPF tests
- ospf-gmpls    ospf-gmpls.pcap                         ospf-gmpls.out          -t -v
- ospf3_ah-vv   OSPFv3_with_AH.pcap                     ospf3_ah-vv.out         -t -v -v
- ospf3_auth-vv ospf3_auth.pcap                         ospf3_auth-vv.out       -t -v -v
- ospf3_bc-vv   OSPFv3_broadcast_adjacency.pcap         ospf3_bc-vv.out         -t -v -v
- ospf3_mp-vv   OSPFv3_multipoint_adjacencies.pcap      ospf3_mp-vv.out         -t -v -v
- ospf3_nbma-vv OSPFv3_NBMA_adjacencies.pcap            ospf3_nbma-vv.out       -t -v -v
+ ospf-gmpls    ospf-gmpls.pcap                         ospf-gmpls.out          -v
+ ospf3_ah-vv   OSPFv3_with_AH.pcap                     ospf3_ah-vv.out         -v -v
+ ospf3_auth-vv ospf3_auth.pcapng                       ospf3_auth-vv.out       -v -v
+ ospf3_bc-vv   OSPFv3_broadcast_adjacency.pcap         ospf3_bc-vv.out         -v -v
+ ospf3_mp-vv   OSPFv3_multipoint_adjacencies.pcap      ospf3_mp-vv.out         -v -v
+ ospf3_nbma-vv OSPFv3_NBMA_adjacencies.pcap            ospf3_nbma-vv.out       -v -v
  # fuzzed pcap
- ospf2-seg-fault-1-v  ospf2-seg-fault-1.pcap  ospf2-seg-fault-1-v.out  -t -v
+ ospf2-seg-fault-1-v  ospf2-seg-fault-1.pcapng  ospf2-seg-fault-1-v.out  -v
  
  # IKEv2 tests
- ikev2four     ikev2four.pcap          ikev2four.out   -t -v
- ikev2fourv    ikev2four.pcap          ikev2fourv.out  -t -v -v -v
- ikev2fourv4   ikev2four.pcap          ikev2fourv4.out -t -v -v -v -v
+ ikev2four     ikev2four.pcap          ikev2four.out   -v
+ ikev2fourv    ikev2four.pcap          ikev2fourv.out  -v -v -v
+ ikev2fourv4   ikev2four.pcap          ikev2fourv4.out -v -v -v -v
  # ikev2pI2 test in crypto.sh
- ikev2pI2-segfault     ikev2pI2-segfault.pcap  ikev2pI2-segfault.out   -t
- ikev2pI2-segfault-v   ikev2pI2-segfault.pcap  ikev2pI2-segfault-v.out -t -v
+ ikev2pI2-segfault     ikev2pI2-segfault.pcapng        ikev2pI2-segfault.out
+ ikev2pI2-segfault-v   ikev2pI2-segfault.pcapng        ikev2pI2-segfault-v.out -v
  
  # IETF ROLL RPL packets
- dio02           rpl-19-pickdag.pcap         rpl-19-pickdag.out  -t -v -v
- dio03           rpl-19-pickdag.pcap         rpl-19-pickdagvvv.out  -t -v -v -v
- dao01           rpl-14-dao.pcap             rpl-14-daovvv.out    -t -v -v -v
- daoack01        rpl-26-senddaoack.pcap      rpl-26-senddaovv.out -t -v -v -v
+ dio02           rpl-19-pickdag.pcap         rpl-19-pickdag.out  -v -v
+ dio03           rpl-19-pickdag.pcap         rpl-19-pickdagvvv.out  -v -v -v
+ dao01           rpl-14-dao.pcap             rpl-14-daovvv.out    -v -v -v
+ daoack01        rpl-26-senddaoack.pcap      rpl-26-senddaovv.out -v -v -v
  
  # IPNET encapsulated site
- e1000g                e1000g.pcap             e1000g.out      -t
+ e1000g                e1000g.pcap             e1000g.out
+ # IPX/Netware packets
+ ipx           ipx.pcap                ipx.out
+ # IPX/Netware invalid
+ ipx-invalid-length ipx-invalid-length.pcap ipx-invalid-length.out
  
  # IETF FORCES WG packets and printer
- forces01        forces1.pcap            forces1.out     -t
- forces01vvv     forces1.pcap            forces1vvv.out  -t -v -v -v
- forces01vvvv    forces1.pcap            forces1vvvv.out -t -v -v -v -v
+ forces01        forces1.pcap            forces1.out
+ forces01vvv     forces1.pcap            forces1vvv.out  -v -v -v
+ forces01vvvv    forces1.pcap            forces1vvvv.out -v -v -v -v
  # need new pcap file, not sure what the differences were?
- #forces02        forces2.pcap            forces2.out     -t
- #forces02v       forces2.pcap            forces2v.out    -t -v
- #forces02vv      forces2.pcap            forces2vv.out   -t -v -v
+ #forces02        forces2.pcap            forces2.out
+ #forces02v       forces2.pcap            forces2v.out    -v
+ #forces02vv      forces2.pcap            forces2vv.out   -v -v
  
  # 802.1ad, QinQ tests
- qinq            QinQpacket.pcap         QinQpacket.out  -t -e
- qinqv           QinQpacket.pcap         QinQpacketv.out  -t -e -v
+ qinq            QinQpacket.pcap         QinQpacket.out  -e
+ qinqv           QinQpacket.pcap         QinQpacketv.out  -e -v
  
  # now SFLOW tests
- sflow1          sflow_multiple_counter_30_pdus.pcap     sflow_multiple_counter_30_pdus.out      -t -v
- sflow2          sflow_multiple_counter_30_pdus.pcap     sflow_multiple_counter_30_pdus-nv.out      -t
+ sflow1          sflow_multiple_counter_30_pdus.pcap     sflow_multiple_counter_30_pdus.out      -v
+ sflow2          sflow_multiple_counter_30_pdus.pcap     sflow_multiple_counter_30_pdus-nv.out
  
  # AHCP and Babel tests
- ahcp-vv         ahcp.pcap              ahcp-vv.out     -t -vv
- babel1          babel.pcap             babel1.out      -t
- babel1v         babel.pcap             babel1v.out     -t -v
- babel_auth      babel_auth.pcap        babel_auth.out  -t -v
- babel_pad1      babel_pad1.pcap        babel_pad1.out  -t
- babel_rtt       babel_rtt.pcap         babel_rtt.out   -t -v
+ ahcp-vv         ahcp.pcapng            ahcp-vv.out     -vv
+ babel1          babel.pcap             babel1.out
+ babel1v         babel.pcap             babel1v.out     -v
+ babel_auth      babel_auth.pcap        babel_auth.out  -v
+ babel_pad1      babel_pad1.pcap        babel_pad1.out
+ babel_rtt       babel_rtt.pcap         babel_rtt.out   -v
+ babel_rfc6126bis  babel_rfc6126bis.pcap  babel_rfc6126bis.out     -v
  
  # PPPoE tests
- pppoe           pppoe.pcap             pppoe.out       -t
- pppoes          pppoes.pcap            pppoes.out      -t
- pppoes_id       pppoes.pcap            pppoes_id.out   -t pppoes 0x3b
+ pppoe           pppoe.pcap             pppoe.out
+ pppoes          pppoes.pcap            pppoes.out
+ pppoes_id       pppoes.pcap            pppoes_id.out   pppoes 0x3b
  
- # PPP tests
- truncated_aack  truncated-aack.pcap    trunc_aack.out  -t
+ # PPP invalid
+ truncated_aack  truncated-aack.pcap    trunc_aack.out
+ ppp-invalid-lengths ppp-invalid-lengths.pcap ppp-invalid-lengths.out -v
  
  # IGMP tests
- igmpv1                IGMP_V1.pcap            igmpv1.out              -t
- igmpv2                IGMP_V2.pcap            igmpv2.out              -t
- igmpv3-queries  igmpv3-queries.pcap     igmpv3-queries.out      -t
- mtrace                mtrace.pcap             mtrace.out              -t
- dvmrp         mrinfo_query.pcap       dvmrp.out               -t
+ igmpv1                IGMP_V1.pcap            igmpv1.out
+ igmpv2                IGMP_V2.pcap            igmpv2.out
+ igmpv3-queries  igmpv3-queries.pcap     igmpv3-queries.out
+ mtrace                mtrace.pcap             mtrace.out
+ dvmrp         mrinfo_query.pcap       dvmrp.out
  
  # ICMPv6
- icmpv6          icmpv6.pcap             icmpv6.out      -t -vv
- icmpv6_opt24-v        icmpv6_opt24.pcap       icmpv6_opt24-v.out      -t -v
+ icmpv6          icmpv6.pcap             icmpv6.out      -vv
+ icmpv6_opt24-v        icmpv6_opt24.pcap       icmpv6_opt24-v.out      -v
+ icmpv6-length-zero icmpv6-length-zero.pcapng icmpv6-length-zero.out
+ icmpv6-rfc7112        icmpv6-rfc7112.pcap     icmpv6-rfc7112.out
  
  # SPB tests
- spb               spb.pcap                spb.out -t
+ spb               spb.pcap                spb.out
  
  # SPB BPDUv4 tests
- spb_bpduv4      spb_bpduv4.pcap       spb_bpduv4.out -t
- spb_bpduv4-v  spb_bpduv4.pcap       spb_bpduv4-v.out -t -v
+ spb_bpduv4      spb_bpduv4.pcap       spb_bpduv4.out
+ spb_bpduv4-v  spb_bpduv4.pcap       spb_bpduv4-v.out -v
  
  # DCB Tests
- dcb_ets         dcb_ets.pcap          dcb_ets.out   -t -vv
- dcb_pfc         dcb_pfc.pcap          dcb_pfc.out   -t -vv
- dcb_qcn         dcb_qcn.pcap          dcb_qcn.out   -t -vv
+ dcb_ets         dcb_ets.pcap          dcb_ets.out   -vv
+ dcb_pfc         dcb_pfc.pcap          dcb_pfc.out   -vv
+ dcb_qcn         dcb_qcn.pcap          dcb_qcn.out   -vv
  
  # EVB tests
- evb             evb.pcap              evb.out       -t -vv
+ evb             evb.pcap              evb.out       -vv
  
  # STP tests
- mstp-v                MSTP_Intra-Region_BPDUs.pcap    mstp-v.out      -t -v
- stp-v         802.1D_spanning_tree.pcap       stp-v.out       -t -v
- rstp-v                802.1w_rapid_STP.pcap           rstp-v.out      -t -v
- rpvst-v               rpvstp-trunk-native-vid5.pcap   rpvst-v.out     -t -v
+ mstp-v                MSTP_Intra-Region_BPDUs.pcap    mstp-v.out      -v
+ stp-v         802.1D_spanning_tree.pcap       stp-v.out       -v
+ rstp-v                802.1w_rapid_STP.pcap           rstp-v.out      -v
+ rpvst-v               rpvstp-trunk-native-vid5.pcap   rpvst-v.out     -v
  
  # RIP tests
- ripv1v2         ripv1v2.pcap            ripv1v2.out     -t -v
- ripv2_auth      ripv2_auth.pcap         ripv2_auth.out  -t -v
+ ripv1v2         ripv1v2.pcap            ripv1v2.out     -v
+ ripv2_auth      ripv2_auth.pcap         ripv2_auth.out  -v
+ # RIP invalid
+ ripv2-invalid-length ripv2-invalid-length.pcap ripv2-invalid-length.out -v
  
  # DHCPv6 tests
- dhcpv6-aftr-name      dhcpv6-AFTR-Name-RFC6334.pcap   dhcpv6-AFTR-Name-RFC6334.out    -t -v
- dhcpv6-ia-na  dhcpv6-ia-na.pcap       dhcpv6-ia-na.out        -t -v
- dhcpv6-ia-pd  dhcpv6-ia-pd.pcap       dhcpv6-ia-pd.out        -t -v
- dhcpv6-ia-ta  dhcpv6-ia-ta.pcap       dhcpv6-ia-ta.out        -t -v
- dhcpv6-ntp-server     dhcpv6-ntp-server.pcap  dhcpv6-ntp-server.out   -t -v
- dhcpv6-sip-server-d   dhcpv6-sip-server-d.pcap        dhcpv6-sip-server-d.out -t -v
- dhcpv6-domain-list    dhcpv6-domain-list.pcap dhcpv6-domain-list.out  -t -v
- dhcpv6-mud    dhcpv6-mud.pcap         dhcpv6-mud.out -t -vv
+ dhcpv6-aftr-name      dhcpv6-AFTR-Name-RFC6334.pcap   dhcpv6-AFTR-Name-RFC6334.out    -v
+ dhcpv6-ia-na  dhcpv6-ia-na.pcap       dhcpv6-ia-na.out        -v
+ dhcpv6-ia-pd  dhcpv6-ia-pd.pcap       dhcpv6-ia-pd.out        -v
+ dhcpv6-ia-ta  dhcpv6-ia-ta.pcap       dhcpv6-ia-ta.out        -v
+ dhcpv6-ntp-server     dhcpv6-ntp-server.pcap  dhcpv6-ntp-server.out   -v
+ dhcpv6-sip-server-d   dhcpv6-sip-server-d.pcap        dhcpv6-sip-server-d.out -v
+ dhcpv6-domain-list    dhcpv6-domain-list.pcap dhcpv6-domain-list.out  -v
+ dhcpv6-mud    dhcpv6-mud.pcap         dhcpv6-mud.out -vv
  
  # ZeroMQ/PGM tests
  # ZMTP/1.0 over TCP
- zmtp1v                zmtp1.pcap              zmtp1.out       -t -v -T zmtp1
+ zmtp1v                zmtp1.pcap              zmtp1.out       -v -T zmtp1
  # native PGM
- pgmv          pgm_zmtp1.pcap          pgmv.out        -t -v
+ pgmv          pgm_zmtp1.pcap          pgmv.out        -v
  # UDP-encapsulated PGM
- epgmv         epgm_zmtp1.pcap         epgmv.out       -t -v -T pgm
+ epgmv         epgm_zmtp1.pcap         epgmv.out       -v -T pgm
  # ZMTP/1.0 inside native PGM
- pgm_zmtp1v    pgm_zmtp1.pcap          pgm_zmtp1v.out  -t -v -T pgm_zmtp1
+ pgm_zmtp1v    pgm_zmtp1.pcap          pgm_zmtp1v.out  -v -T pgm_zmtp1
  # ZMTP/1.0 inside UDP-encapsulated PGM
- epgm_zmtp1v   epgm_zmtp1.pcap         epgm_zmtp1v.out -t -v -T pgm_zmtp1
+ epgm_zmtp1v   epgm_zmtp1.pcap         epgm_zmtp1v.out -v -T pgm_zmtp1
  # fuzzed pcap
- zmtp1-inf-loop-1 zmtp1-inf-loop-1.pcap zmtp1-inf-loop-1.out -t -T zmtp1
+ zmtp1-inf-loop-1 zmtp1-inf-loop-1.pcapng zmtp1-inf-loop-1.out -T zmtp1
+ # native PGM POLL/POLR
+ pgm_poll_polr pgm_poll_polr.pcap      pgm_poll_polr.out       -v
  
  # MS NLB tests
- msnlb         msnlb.pcap              msnlb.out       -t
- msnlb2                msnlb2.pcap             msnlb2.out      -t
+ msnlb         msnlb.pcap              msnlb.out
+ msnlb2                msnlb2.pcapng           msnlb2.out
  
  # MPTCP tests
- mptcp         mptcp.pcap              mptcp.out               -t
- mptcp-fclose  mptcp-fclose.pcap       mptcp-fclose.out        -t
+ mptcp-v0      mptcp-v0.pcap           mptcp-v0.out
+ mptcp-v1      mptcp-v1.pcap           mptcp-v1.out
+ mptcp-fclose  mptcp-fclose.pcap       mptcp-fclose.out
+ mptcp-aa-v1     mptcp-aa-v1.pcap        mptcp-aa-v1.out
  # TFO tests
- tfo           tfo-5c1fa7f9ae91.pcap   tfo.out         -t
+ tfo           tfo-5c1fa7f9ae91.pcap   tfo.out
  # SCPS
- scps_invalid  scps_invalid.pcap       scps_invalid.out        -t
+ scps_invalid  scps_invalid.pcap       scps_invalid.out
  
  # IEEE 802.11 tests
- 802.11_exthdr ieee802.11_exthdr.pcap  ieee802.11_exthdr.out   -t -v
- 802.11_rx-stbc        ieee802.11_rx-stbc.pcap ieee802.11_rx-stbc.out  -t
+ 802.11_exthdr ieee802.11_exthdr.pcap  ieee802.11_exthdr.out   -v
+ 802.11_rx-stbc        ieee802.11_rx-stbc.pcap ieee802.11_rx-stbc.out
  
  # OpenFlow tests
- of10_p3295-vv of10_p3295.pcap         of10_p3295-vv.out       -t -vv
- of10_s4810-vvvv       of10_s4810.pcap         of10_s4810-vvvv.out     -t -vvvv
- of10_pf5240-vv        of10_pf5240.pcap        of10_pf5240-vv.out      -t -vv
- of10_7050q-v  of10_7050q.pcap         of10_7050q-v.out        -t -v
- of10_7050sx_bsn-vv    of10_7050sx_bsn.pcap            of10_7050sx_bsn-vv.out  -t -vv
+ of10_p3295-vv of10_p3295.pcap         of10_p3295-vv.out       -vv
+ of10_s4810-vvvv       of10_s4810.pcap         of10_s4810-vvvv.out     -vvvv
+ of10_pf5240-vv        of10_pf5240.pcap        of10_pf5240-vv.out      -vv
+ of10_7050q-v  of10_7050q.pcapng       of10_7050q-v.out        -v
+ of10_7050sx_bsn-vv    of10_7050sx_bsn.pcap            of10_7050sx_bsn-vv.out  -vv
+ of10_7050sx_bsn-oobr of10_7050sx_bsn-oobr.pcap of10_7050sx_bsn-oobr.out -v
  
  # GeoNetworking and CALM FAST tests
- geonet-calm-fast      geonet_and_calm_fast.pcap       geonet_and_calm_fast.out        -t -vv
+ geonet-calm-fast      geonet_and_calm_fast.pcap       geonet_and_calm_fast.out        -vv
  
  # M3UA tests
- m3ua isup.pcap isup.out -t
- m3ua-vv isup.pcap isupvv.out -t -vv
+ m3ua isup.pcap isup.out
+ m3ua-vv isup.pcap isupvv.out -vv
  
- # NFLOG test case moved to nflog-e.sh
+ # NFLOG test case
+ nflog-e nflog.pcap nflog-e.out -e
  
  # syslog test case
- syslog-v      syslog_udp.pcap         syslog-v.out            -t -v
+ syslog-v      syslog_udp.pcap         syslog-v.out            -v
+ # DNS on non-standard ports.
+ dns_tcp_8053 dns_tcp_8053.pcap dns_tcp_8053.out -vv
+ dns_tcp_8053-T dns_tcp_8053.pcap dns_tcp_8053-T.out -vv -T domain
+ dns_udp_8053 dns_udp_8053.pcap dns_udp_8053.out -vv
+ dns_udp_8053-T dns_udp_8053.pcap dns_udp_8053-T.out -vv -T domain
  
  # DNSSEC from https://bugzilla.redhat.com/show_bug.cgi?id=205842, -vv exposes EDNS DO
- dnssec-vv     dnssec.pcap             dnssec-vv.out           -t -vv
+ dnssec-vv     dnssec.pcap             dnssec-vv.out           -vv
  
  #IPv6 tests
- ipv6-bad-version      ipv6-bad-version.pcap   ipv6-bad-version.out    -t
- ipv6-routing-header   ipv6-routing-header.pcap        ipv6-routing-header.out -t -v
+ ipv6-bad-version      ipv6-bad-version.pcap   ipv6-bad-version.out
+ ipv6-routing-header   ipv6-routing-header.pcap        ipv6-routing-header.out -v
+ ipv6-srh-ext-header   ipv6-srh-ext-header.pcap        ipv6-srh-ext-header.out -v
+ ipv6-srh-insert-cksum ipv6-srh-insert-cksum.pcap      ipv6-srh-insert-cksum.out -v
  # Loopback/CTP test case
- loopback      loopback.pcap           loopback.out            -t
+ loopback      loopback.pcap           loopback.out
  
  # DCCP partial checksums tests
- dccp_partial_csum_v4_simple   dccp_partial_csum_v4_simple.pcap        dccp_partial_csum_v4_simple.out -t -vv
- dccp_partial_csum_v4_longer   dccp_partial_csum_v4_longer.pcap        dccp_partial_csum_v4_longer.out -t -vv
- dccp_partial_csum_v6_simple   dccp_partial_csum_v6_simple.pcap        dccp_partial_csum_v6_simple.out -t -vv
- dccp_partial_csum_v6_longer   dccp_partial_csum_v6_longer.pcap        dccp_partial_csum_v6_longer.out -t -vv
+ dccp_partial_csum_v4_simple   dccp_partial_csum_v4_simple.pcap        dccp_partial_csum_v4_simple.out -vv
+ dccp_partial_csum_v4_longer   dccp_partial_csum_v4_longer.pcap        dccp_partial_csum_v4_longer.out -vv
+ dccp_partial_csum_v6_simple   dccp_partial_csum_v6_simple.pcap        dccp_partial_csum_v6_simple.out -vv
+ dccp_partial_csum_v6_longer   dccp_partial_csum_v6_longer.pcap        dccp_partial_csum_v6_longer.out -vv
  
  # VRRP tests
- vrrp          vrrp.pcap               vrrp.out                -t
- vrrp-v                vrrp.pcap               vrrp-v.out              -t -v
+ vrrp          vrrp.pcap               vrrp.out
+ vrrp-v                vrrp.pcap               vrrp-v.out              -v
  
  # HSRP tests
- hsrp_1                HSRP_coup.pcap          hsrp_1.out      -t
- hsrp_1-v      HSRP_coup.pcap          hsrp_1-v.out    -t -v
- hsrp_2-v      HSRP_election.pcap      hsrp_2-v.out    -t -v
- hsrp_3-v      HSRP_failover.pcap      hsrp_3-v.out    -t -v
+ hsrp_1                HSRP_coup.pcap          hsrp_1.out
+ hsrp_1-v      HSRP_coup.pcap          hsrp_1-v.out    -v
+ hsrp_2-v      HSRP_election.pcap      hsrp_2-v.out    -v
+ hsrp_3-v      HSRP_failover.pcap      hsrp_3-v.out    -v
  
  # PIMv2 tests
- pimv2_dm-v            PIM-DM_pruning.pcap             pimv2_dm-v.out          -t -v
- pimv2_register-v      PIM_register_register-stop.pcap pimv2_register-v.out    -t -v
- pimv2_sm-v            PIM-SM_join_prune.pcap          pimv2_sm-v.out          -t -v
- pimv2_bootstrap-v     PIMv2_bootstrap.pcap            pimv2_bootstrap-v.out   -t -v
- pimv2_hellos-v                PIMv2_hellos.pcap               pimv2_hellos-v.out      -t -v
+ pimv2_dm-v            PIM-DM_pruning.pcap             pimv2_dm-v.out          -v
+ pimv2_register-v      PIM_register_register-stop.pcap pimv2_register-v.out    -v
+ pimv2_sm-v            PIM-SM_join_prune.pcap          pimv2_sm-v.out          -v
+ pimv2_bootstrap-v     PIMv2_bootstrap.pcap            pimv2_bootstrap-v.out   -v
+ pimv2_hellos-v                PIMv2_hellos.pcap               pimv2_hellos-v.out      -v
+ pim-packet-assortment pim-packet-assortment.pcap      pim-packet-assortment.out
+ pim-packet-assortment-v       pim-packet-assortment.pcap      pim-packet-assortment-v.out -v
+ pim-packet-assortment-vv      pim-packet-assortment.pcap      pim-packet-assortment-vv.out -vv
  
  # IS-IS tests
- isis_infloop-v        isis-infinite-loop.pcap         isis_infloop-v.out      -t -v
- isis_poi-v      isis_poi.pcap                   isis_poi.out            -t -v
- isis_poi2-v     isis_poi2.pcap                  isis_poi2.out           -t -v
- isis_1                ISIS_external_lsp.pcap          isis_1.out      -t
- isis_1-v      ISIS_external_lsp.pcap          isis_1-v.out    -t -v
- isis_2-v      ISIS_level1_adjacency.pcap      isis_2-v.out    -t -v
- isis_3-v      ISIS_level2_adjacency.pcap      isis_3-v.out    -t -v
- isis_4-v      ISIS_p2p_adjacency.pcap         isis_4-v.out    -t -v
+ isis_infloop-v        isis-infinite-loop.pcap         isis_infloop-v.out      -v
+ isis_poi-v      isis_poi.pcap                   isis_poi.out            -v
+ isis_poi2-v     isis_poi2.pcap                  isis_poi2.out           -v
+ isis_1                ISIS_external_lsp.pcap          isis_1.out
+ isis_1-v      ISIS_external_lsp.pcap          isis_1-v.out    -v
+ isis_2-v      ISIS_level1_adjacency.pcap      isis_2-v.out    -v
+ isis_3-v      ISIS_level2_adjacency.pcap      isis_3-v.out    -v
+ isis_4-v      ISIS_p2p_adjacency.pcap         isis_4-v.out    -v
+ isis_cap_tlv  isis_cap_tlv.pcap               isis_cap_tlv.out        -v
+ isis_iid-v      isis_iid_tlv.pcap               isis_iid_tlv.out        -v
+ isis_sr-v     isis_sr.pcapng                  isis_sr.out     -v
  # fuzzed pcap
  # isis-seg-fault-1-v is now conditionally handled by isis-seg-fault-1-v.sh
- isis-seg-fault-2-v isis-seg-fault-2.pcap isis-seg-fault-2-v.out -t -v
- isis-seg-fault-3-v isis-seg-fault-3.pcap isis-seg-fault-3-v.out -t -v
+ isis-seg-fault-2-v isis-seg-fault-2.pcapng isis-seg-fault-2-v.out -v
+ isis-seg-fault-3-v isis-seg-fault-3.pcapng isis-seg-fault-3-v.out -v
+ isis_sid      isis_sid.pcap                   isis_sid.out    -v
  
  # RSVP tests
- rsvp_infloop-v        rsvp-infinite-loop.pcap         rsvp_infloop-v.out      -t -v
+ rsvp_infloop-v        rsvp-infinite-loop.pcap         rsvp_infloop-v.out      -v
+ rsvp_cap      rsvp_cap.pcap                   rsvp_cap.out            -v
  # fuzzed pcap
- rsvp-inf-loop-2-v rsvp-inf-loop-2.pcap rsvp-inf-loop-2-v.out -t -v
+ rsvp-inf-loop-2-v rsvp-inf-loop-2.pcapng      rsvp-inf-loop-2-v.out -v
  
  # HDLC tests
- hdlc1 chdlc-slarp.pcap        hdlc1.out       -t
- hdlc2 chdlc-slarp-short.pcap  hdlc2.out       -t
- hdlc3 HDLC.pcap               hdlc3.out       -t
- hdlc4 hdlc_slarp.pcap         hdlc4.out       -t
+ hdlc1 chdlc-slarp.pcap        hdlc1.out
+ hdlc2 chdlc-slarp-short.pcap  hdlc2.out
+ hdlc3 HDLC.pcap               hdlc3.out
+ hdlc4 hdlc_slarp.pcapng       hdlc4.out
  
  # DECnet test case
- decnet                DECnet_Phone.pcap       decnet.out      -t
+ decnet                DECnet_Phone.pcap       decnet.out
  
  # RADIUS tests
- radius-v      RADIUS.pcap     radius-v.out    -t -v
- radius-rfc4675        RADIUS-RFC4675.pcap     radius-rfc4675-v.out    -t -v
- radius-rfc5176        RADIUS-RFC5176.pcap     radius-rfc5176-v.out    -t -v
- radius-port1700       RADIUS-port1700.pcap    radius-port1700-v.out   -t -v
+ radius-v      RADIUS.pcap     radius-v.out    -v
+ radius-rfc3162        RADIUS-RFC3162.pcap     radius-rfc3162-v.out    -v
+ radius-rfc4675        RADIUS-RFC4675.pcap     radius-rfc4675-v.out    -v
+ radius-rfc5176        RADIUS-RFC5176.pcap     radius-rfc5176-v.out    -v
+ radius-port1700       RADIUS-port1700.pcap    radius-port1700-v.out   -v
+ radius-rfc5176-2      RADIUS-RFC5176-2.pcap   radius-rfc5176-2-v.out  -v
+ radius-rfc5447        RADIUS-RFC5447.pcap     radius-rfc5447-v.out    -v
  
  # link-level protocols
- dtp-v         DTP.pcap                dtp-v.out               -t -v
- lacp-ev               LACP.pcap               lacp-ev.out             -t -e -v
- lldp_cdp-ev   LLDP_and_CDP.pcap       lldp_cdp-ev.out         -t -e -v
- cdp-v         3560_CDP.pcap           cdp-v.out               -t -v
- udld-v                UDLD.pcap               udld-v.out              -t -v
- lldp_mud-v    lldp_mudurl.pcap        lldp_mudurl-v.out       -t -e -v
- lldp_mud-vv   lldp_mudurl.pcap        lldp_mudurl-vv.out      -t -e -vv
+ dtp-v         DTP.pcap                dtp-v.out               -v
+ lacp-ev               LACP.pcap               lacp-ev.out             -e -v
+ lldp_cdp-ev   LLDP_and_CDP.pcap       lldp_cdp-ev.out         -e -v
+ cdp-v         3560_CDP.pcap           cdp-v.out               -v
+ udld-v                UDLD.pcap               udld-v.out              -v
+ lldp_mud-v    lldp_mudurl.pcap        lldp_mudurl-v.out       -e -v
+ lldp_mud-vv   lldp_mudurl.pcap        lldp_mudurl-vv.out      -e -vv
  # fuzzed pcap
- udld-inf-loop-1-v  udld-inf-loop-1.pcap  udld-inf-loop-1-v.out  -t -v
+ udld-inf-loop-1-v  udld-inf-loop-1.pcapng  udld-inf-loop-1-v.out  -v
  
  # EIGRP tests
- eigrp1-v      EIGRP_adjacency.pcap    eigrp1-v.out    -t -v
- eigrp2-v      EIGRP_goodbye.pcap      eigrp2-v.out    -t -v
- eigrp3-v      EIGRP_subnet_down.pcap  eigrp3-v.out    -t -v
- eigrp4-v      EIGRP_subnet_up.pcap    eigrp4-v.out    -t -v
+ eigrp1-v      EIGRP_adjacency.pcap    eigrp1-v.out    -v
+ eigrp2-v      EIGRP_goodbye.pcap      eigrp2-v.out    -v
+ eigrp3-v      EIGRP_subnet_down.pcap  eigrp3-v.out    -v
+ eigrp4-v      EIGRP_subnet_up.pcap    eigrp4-v.out    -v
+ eigrp5                EIGRP_ipv6.pcap         eigrp5.out
  
  # ATA-over-Ethernet tests
- aoe_1         AoE_Linux.pcap          aoe_1.out       -t
- aoe_1-v               AoE_Linux.pcap          aoe_1-v.out     -t -v
+ aoe_1         AoE_Linux.pcap          aoe_1.out
+ aoe_1-v               AoE_Linux.pcap          aoe_1-v.out     -v
  
  # Geneve tests
- geneve-v      geneve.pcap             geneve-vv.out   -t -vv
- geneve-vni    geneve.pcap             geneve-vni.out  -t geneve 0xb
- geneve-tcp    geneve.pcap             geneve-tcp.out  -t "geneve && tcp"
+ geneve-vv     geneve.pcap             geneve-vv.out   -vv
+ geneve-vni    geneve.pcap             geneve-vni.out  geneve 0xb
+ geneve-tcp    geneve.pcap             geneve-tcp.out  "geneve && tcp"
  
  # DHCP tests
- dhcp-rfc3004  dhcp-rfc3004.pcap       dhcp-rfc3004-v.out      -t -v
- dhcp-rfc5859  dhcp-rfc5859.pcap       dhcp-rfc5859-v.out      -t -v
- dhcp-mud      dhcp-mud.pcap           dhcp-mud.out    -t -vv
- # MEDSA tests
- medsa         medsa.pcap              medsa.out       -t
- medsa-e               medsa.pcap              medsa-e.out     -t -e
+ dhcp-rfc3004  dhcp-rfc3004.pcap       dhcp-rfc3004-v.out      -v
+ dhcp-rfc5859  dhcp-rfc5859.pcap       dhcp-rfc5859-v.out      -v
+ dhcp-mud      dhcp-mud.pcap           dhcp-mud.out    -vv
  
  # VXLAN tests
- vxlan  vxlan.pcap  vxlan.out  -# -t -e
+ vxlan  vxlan.pcap  vxlan.out -e
  
  # CVEs 2014 malformed packets from Steffen Bauch
- cve-2014-8767-OLSR cve-2014-8767-OLSR.pcap cve-2014-8767-OLSR.out -t -v
- cve-2014-8768-Geonet cve-2014-8768-Geonet.pcap cve-2014-8768-Geonet.out -t -v
- cve-2014-8769-AODV cve-2014-8769-AODV.pcap cve-2014-8769-AODV.out -t -v
+ cve-2014-8767-OLSR cve-2014-8767-OLSR.pcap cve-2014-8767-OLSR.out -v
+ cve-2014-8768-Geonet cve-2014-8768-Geonet.pcap cve-2014-8768-Geonet.out -v
+ cve-2014-8769-AODV cve-2014-8769-AODV.pcap cve-2014-8769-AODV.out -v
  
  # bad packets from Kevin Day
  # cve-2015-2155 -- fuzz testing on FORCES printer
- kday1           kday1.pcap              kday1.out       -t -v
+ kday1           kday1.pcap              kday1.out       -v
  # cve-2015-2153 -- fuzz testing on TCP printer
- kday2           kday2.pcap              kday2.out       -t -v
+ kday2           kday2.pcap              kday2.out       -v
  # cve-2015-2153 -- fuzz testing on TCP printer
- kday3           kday3.pcap              kday3.out       -t -v
+ kday3           kday3.pcap              kday3.out       -v
  # cve-2015-2153 -- fuzz testing on TCP printer
- kday4           kday4.pcap              kday4.out       -t -v
+ kday4           kday4.pcap              kday4.out       -v
  # cve-2015-2153 -- fuzz testing on TCP printer
- kday5           kday5.pcap              kday5.out       -t -v
+ kday5           kday5.pcap              kday5.out       -v
  # cve-2015-2154 -- ethernet printer
- kday6           kday6.pcap              kday6.out       -t -v
+ kday6           kday6.pcap              kday6.out       -v
  # cve-2015-2153 -- fuzz testing on TCP printer
- kday7           kday7.pcap              kday7.out       -t -v
+ kday7           kday7.pcap              kday7.out       -v
  # cve-2015-2153 -- fuzz testing on TCP printer
- kday8           kday8.pcap              kday8.out       -t -v
+ kday8           kday8.pcap              kday8.out       -v
  
  # bad packets from reversex86.
- cve2015-0261_01    cve2015-0261-ipv6.pcap       cve2015-0261-ipv6.out -t -v
- cve2015-0261_02    cve2015-0261-crash.pcap      cve2015-0261-crash.out -t -v
+ cve2015-0261_01    cve2015-0261-ipv6.pcap       cve2015-0261-ipv6.out -v
+ cve2015-0261_02    cve2015-0261-crash.pcap      cve2015-0261-crash.out -v
  
  # OLSRv1 tests
- olsrv1_1      OLSRv1_HNA_sgw_1.pcap           OLSRv1_HNA_sgw_1.out    -t -v
+ olsrv1_1      OLSRv1_HNA_sgw_1.pcap           OLSRv1_HNA_sgw_1.out    -v
  
  # tests with unaligned data, to make sure they work on SPARC
- unaligned-nfs-1       unaligned-nfs-1.pcap    unaligned-nfs-1.out     -t -v
+ unaligned-nfs-1       unaligned-nfs-1.pcap    unaligned-nfs-1.out     -v
  
  # LISP tests
- lisp_eid_notify               lisp_eid_notify.pcap    lisp_eid_notify.out     -t -v
- lisp_eid_register     lisp_eid_register.pcap  lisp_eid_register.out   -t -v
- lisp_ipv6_eid         lisp_ipv6.pcap          lisp_ipv6.out           -t -v
+ lisp_eid_notify               lisp_eid_notify.pcap    lisp_eid_notify.out     -v
+ lisp_eid_register     lisp_eid_register.pcap  lisp_eid_register.out   -v
+ lisp_ipv6_eid         lisp_ipv6.pcap          lisp_ipv6.out           -v
  
  # pcap invalid versions (first: version = 1.4 ; second: version = 2.5)
- pcap-invalid-version-1 pcap-invalid-version-1.pcap pcap-invalid-version-1.out -t
- pcap-invalid-version-2 pcap-invalid-version-2.pcap pcap-invalid-version-2.out -t
+ pcap-invalid-version-1 pcap-invalid-version-1.pcap pcap-invalid-version-1.out
+ pcap-invalid-version-2 pcap-invalid-version-2.pcap pcap-invalid-version-2.out
  
- # pcap-ng invalid version (first: version = 0.1 ; second: version = 1.1)
- pcap-ng-invalid-vers-1 pcap-ng-invalid-vers-1.pcap pcap-ng-invalid-vers-1.out -t
- pcap-ng-invalid-vers-2 pcap-ng-invalid-vers-2.pcap pcap-ng-invalid-vers-2.out -t
+ # pcapng invalid version (first: version = 0.1 ; second: version = 1.1)
+ pcapng-invalid-vers-1 pcapng-invalid-vers-1.pcapng pcapng-invalid-vers-1.out
+ pcapng-invalid-vers-2 pcapng-invalid-vers-2.pcapng pcapng-invalid-vers-2.out
  
  # NSH tests
- nsh                    nsh.pcap                nsh.out                    -t
- nsh-vvv                nsh.pcap                nsh-vvv.out                -t -vvv
- nsh-over-vxlan-gpe     nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe.out     -t
- nsh-over-vxlan-gpe-v   nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe-v.out   -t -v
- nsh-over-vxlan-gpe-vv  nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe-vv.out  -t -vv
- nsh-over-vxlan-gpe-vvv nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe-vvv.out -t -vvv
+ nsh                    nsh.pcap                nsh.out
+ nsh-vvv                nsh.pcap                nsh-vvv.out                -vvv
+ nsh-over-vxlan-gpe     nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe.out
+ nsh-over-vxlan-gpe-v   nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe-v.out   -v
+ nsh-over-vxlan-gpe-vv  nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe-vv.out  -vv
+ nsh-over-vxlan-gpe-vvv nsh-over-vxlan-gpe.pcap nsh-over-vxlan-gpe-vvv.out -vvv
  
  # RESP tests
- resp_1 resp_1_benchmark.pcap resp_1.out -t
- resp_2 resp_2_inline.pcap    resp_2.out -t
- resp_3 resp_3_malicious.pcap resp_3.out -t
+ resp_1 resp_1_benchmark.pcap resp_1.out
+ resp_2 resp_2_inline.pcap    resp_2.out
+ resp_3 resp_3_malicious.pcap resp_3.out
+ # TFTP tests
+ tftp   tftp.pcap tftp.out
+ tftp-T tftp.pcap tftp-T.out -T tftp
+ # WHOIS tests
+ whois                 whois.pcap              whois.out
+ whois-v               whois.pcap              whois-v.out     -v
  
  # HNCP tests
- hncp hncp.pcap hncp.out -vvv -t
+ hncp hncp.pcap hncp.out -vvv
  
  # BFD tests with authentication fields
- bfd-raw-auth-simple bfd-raw-auth-simple.pcap bfd-raw-auth-simple.out -t
- bfd-raw-auth-simple-v bfd-raw-auth-simple.pcap bfd-raw-auth-simple-v.out -t -v
- bfd-raw-auth-md5 bfd-raw-auth-md5.pcap bfd-raw-auth-md5.out -t
- bfd-raw-auth-md5-v bfd-raw-auth-md5.pcap bfd-raw-auth-md5-v.out -t -v
- bfd-raw-auth-sha1 bfd-raw-auth-sha1.pcap bfd-raw-auth-sha1.out -t
- bfd-raw-auth-sha1-v bfd-raw-auth-sha1.pcap bfd-raw-auth-sha1-v.out -t -v
+ bfd-raw-auth-simple bfd-raw-auth-simple.pcap bfd-raw-auth-simple.out
+ bfd-raw-auth-simple-v bfd-raw-auth-simple.pcap bfd-raw-auth-simple-v.out -v
+ bfd-raw-auth-md5 bfd-raw-auth-md5.pcap bfd-raw-auth-md5.out
+ bfd-raw-auth-md5-v bfd-raw-auth-md5.pcap bfd-raw-auth-md5-v.out -v
+ bfd-raw-auth-sha1 bfd-raw-auth-sha1.pcap bfd-raw-auth-sha1.out
+ bfd-raw-auth-sha1-v bfd-raw-auth-sha1.pcap bfd-raw-auth-sha1-v.out -v
  
  # bad packets from Hanno Böck
- heap-overflow-1       heap-overflow-1.pcap            heap-overflow-1.out     -t -v -n
- heap-overflow-2       heap-overflow-2.pcap            heap-overflow-2.out     -t -v -n
- heapoverflow-atalk_print      heapoverflow-atalk_print.pcap   heapoverflow-atalk_print.out    -t -v -n
- heapoverflow-EXTRACT_16BITS   heapoverflow-EXTRACT_16BITS.pcap        heapoverflow-EXTRACT_16BITS.out -t -v -n
- heapoverflow-ppp_hdlc_if_print        heapoverflow-ppp_hdlc_if_print.pcap     heapoverflow-ppp_hdlc_if_print.out      -t -v -n
- heapoverflow-q933_printq      heapoverflow-q933_printq.pcap   heapoverflow-q933_printq.out    -t -v -n
- heapoverflow-sl_if_print      heapoverflow-sl_if_print.pcap   heapoverflow-sl_if_print.out    -t -v -n
- heapoverflow-ip_print_demux   heapoverflow-ip_print_demux.pcap        heapoverflow-ip_print_demux.out -t -v -n
- heapoverflow-in_checksum      heapoverflow-in_checksum.pcap   heapoverflow-in_checksum.out    -t -v -n
- heapoverflow-tcp_print        heapoverflow-tcp_print.pcap     heapoverflow-tcp_print.out      -t -v -n
- gre-heapoverflow-1    gre-heapoverflow-1.pcap gre-heapoverflow-1.out  -t -v -n
- gre-heapoverflow-2    gre-heapoverflow-2.pcap gre-heapoverflow-2.out  -t -v -n
- calm-fast-mac-lookup-heapoverflow     calm-fast-mac-lookup-heapoverflow.pcap  calm-fast-mac-lookup-heapoverflow.out   -t -v -n
- geonet-mac-lookup-heapoverflow        geonet-mac-lookup-heapoverflow.pcap     geonet-mac-lookup-heapoverflow.out      -t -v -n
- radiotap-heapoverflow radiotap-heapoverflow.pcap      radiotap-heapoverflow.out -t -v -n
- isoclns-heapoverflow  isoclns-heapoverflow.pcap       isoclns-heapoverflow.out        -t -v -n
- tcp-auth-heapoverflow tcp-auth-heapoverflow.pcap      tcp-auth-heapoverflow.out       -t -v -n
- frf15-heapoverflow    frf15-heapoverflow.pcap frf15-heapoverflow.out  -t -v -n
- atm-oam-heapoverflow  atm-oam-heapoverflow.pcap       atm-oam-heapoverflow.out        -t -v -n
- tcp_header_heapoverflow       tcp_header_heapoverflow.pcap    tcp_header_heapoverflow.out     -t -v -n
- ipcomp-heapoverflow   ipcomp-heapoverflow.pcap        ipcomp-heapoverflow.out -t -v -n
- llc-xid-heapoverflow  llc-xid-heapoverflow.pcap       llc-xid-heapoverflow.out        -t -v -n
- udp-length-heapoverflow       udp-length-heapoverflow.pcap    udp-length-heapoverflow.out     -t -v -n
- aarp-heapoverflow-1   aarp-heapoverflow-1.pcap        aarp-heapoverflow-1.out -t -v -n
- aarp-heapoverflow-2   aarp-heapoverflow-2.pcap        aarp-heapoverflow-2.out -t -v -n
- mpls-label-heapoverflow       mpls-label-heapoverflow.pcap    mpls-label-heapoverflow.out     -t -v -n
- bad-ipv4-version-pgm-heapoverflow     bad-ipv4-version-pgm-heapoverflow.pcap  bad-ipv4-version-pgm-heapoverflow.out   -t -v -n
- stp-heapoverflow-1    stp-heapoverflow-1.pcap stp-heapoverflow-1.out  -t -v -n
- stp-heapoverflow-2    stp-heapoverflow-2.pcap stp-heapoverflow-2.out  -t -v -n
- stp-heapoverflow-3    stp-heapoverflow-3.pcap stp-heapoverflow-3.out  -t -v -n
- stp-heapoverflow-4    stp-heapoverflow-4.pcap stp-heapoverflow-4.out  -t -v -n
- stp-heapoverflow-5    stp-heapoverflow-5.pcap stp-heapoverflow-5.out  -t -v -n
- arp-too-long-tha      arp-too-long-tha.pcap   arp-too-long-tha.out    -t -v -n
- juniper_header-heapoverflow   juniper_header-heapoverflow.pcap        juniper_header-heapoverflow.out -t -v -n
- tftp-heapoverflow     tftp-heapoverflow.pcap  tftp-heapoverflow.out   -t -v -n
- relts-0x80000000      relts-0x80000000.pcap   relts-0x80000000.out    -t -v -n
+ heap-overflow-1       heap-overflow-1.pcap            heap-overflow-1.out     -v
+ heap-overflow-2       heap-overflow-2.pcap            heap-overflow-2.out     -v
+ heapoverflow-atalk_print      heapoverflow-atalk_print.pcap   heapoverflow-atalk_print.out    -v
+ heapoverflow-EXTRACT_16BITS   heapoverflow-EXTRACT_16BITS.pcap        heapoverflow-EXTRACT_16BITS.out -v
+ heapoverflow-ppp_hdlc_if_print        heapoverflow-ppp_hdlc_if_print.pcap     heapoverflow-ppp_hdlc_if_print.out      -v
+ heapoverflow-q933_printq      heapoverflow-q933_printq.pcap   heapoverflow-q933_printq.out    -v
+ heapoverflow-sl_if_print      heapoverflow-sl_if_print.pcap   heapoverflow-sl_if_print.out    -v
+ heapoverflow-ip_demux_print   heapoverflow-ip_demux_print.pcap        heapoverflow-ip_demux_print.out -v
+ heapoverflow-in_checksum      heapoverflow-in_checksum.pcap   heapoverflow-in_checksum.out    -v
+ heapoverflow-tcp_print        heapoverflow-tcp_print.pcap     heapoverflow-tcp_print.out      -v
+ gre-heapoverflow-1    gre-heapoverflow-1.pcap gre-heapoverflow-1.out  -v
+ gre-heapoverflow-2    gre-heapoverflow-2.pcap gre-heapoverflow-2.out  -v
+ calm-fast-mac-lookup-heapoverflow     calm-fast-mac-lookup-heapoverflow.pcap  calm-fast-mac-lookup-heapoverflow.out   -v
+ geonet-mac-lookup-heapoverflow        geonet-mac-lookup-heapoverflow.pcap     geonet-mac-lookup-heapoverflow.out      -v
+ radiotap-heapoverflow radiotap-heapoverflow.pcap      radiotap-heapoverflow.out -v
+ isoclns-heapoverflow  isoclns-heapoverflow.pcap       isoclns-heapoverflow.out        -v
+ tcp-auth-heapoverflow tcp-auth-heapoverflow.pcap      tcp-auth-heapoverflow.out       -v
+ frf15-heapoverflow    frf15-heapoverflow.pcap frf15-heapoverflow.out  -v
+ atm-oam-heapoverflow  atm-oam-heapoverflow.pcap       atm-oam-heapoverflow.out        -v
+ tcp_header_heapoverflow       tcp_header_heapoverflow.pcap    tcp_header_heapoverflow.out     -v
+ ipcomp-heapoverflow   ipcomp-heapoverflow.pcap        ipcomp-heapoverflow.out -v
+ llc-xid-heapoverflow  llc-xid-heapoverflow.pcap       llc-xid-heapoverflow.out        -v
+ udp-length-heapoverflow       udp-length-heapoverflow.pcap    udp-length-heapoverflow.out     -v
+ aarp-heapoverflow-1   aarp-heapoverflow-1.pcap        aarp-heapoverflow-1.out -v
+ aarp-heapoverflow-2   aarp-heapoverflow-2.pcap        aarp-heapoverflow-2.out -v
+ mpls-label-heapoverflow       mpls-label-heapoverflow.pcap    mpls-label-heapoverflow.out     -v
+ bad-ipv4-version-pgm-heapoverflow     bad-ipv4-version-pgm-heapoverflow.pcap  bad-ipv4-version-pgm-heapoverflow.out   -v
+ stp-heapoverflow-1    stp-heapoverflow-1.pcap stp-heapoverflow-1.out  -v
+ stp-heapoverflow-2    stp-heapoverflow-2.pcap stp-heapoverflow-2.out  -v
+ stp-heapoverflow-3    stp-heapoverflow-3.pcap stp-heapoverflow-3.out  -v
+ stp-heapoverflow-4    stp-heapoverflow-4.pcap stp-heapoverflow-4.out  -v
+ arp-too-long-tha      arp-too-long-tha.pcap   arp-too-long-tha.out    -v
+ juniper_header-heapoverflow   juniper_header-heapoverflow.pcap        juniper_header-heapoverflow.out -v
+ tftp-heapoverflow     tftp-heapoverflow.pcap  tftp-heapoverflow.out   -v
+ relts-0x80000000      relts-0x80000000.pcap   relts-0x80000000.out    -v
  
  # bad packets from Brian Carpenter
- ipv6hdr-heapoverflow  ipv6hdr-heapoverflow.pcap       ipv6hdr-heapoverflow.out        -t
- ipv6hdr-heapoverflow-v        ipv6hdr-heapoverflow.pcap       ipv6hdr-heapoverflow-v.out      -t -v
- otv-heapoverflow-1    otv-heapoverflow-1.pcap         otv-heapoverflow-1.out          -t -c10
- otv-heapoverflow-2    otv-heapoverflow-2.pcap         otv-heapoverflow-2.out          -t -c10
- q933-heapoverflow-2   q933-heapoverflow-2.pcap        q933-heapoverflow-2.out         -t
- atm-heapoverflow      atm-heapoverflow.pcap           atm-heapoverflow.out            -t -c1 -e
+ ipv6hdr-heapoverflow  ipv6hdr-heapoverflow.pcap       ipv6hdr-heapoverflow.out
+ ipv6hdr-heapoverflow-v        ipv6hdr-heapoverflow.pcap       ipv6hdr-heapoverflow-v.out      -v
+ otv-heapoverflow-1    otv-heapoverflow-1.pcap         otv-heapoverflow-1.out
+ otv-heapoverflow-2    otv-heapoverflow-2.pcap         otv-heapoverflow-2.out
+ q933-heapoverflow-2   q933-heapoverflow-2.pcap        q933-heapoverflow-2.out
+ atm-heapoverflow      atm-heapoverflow.pcap           atm-heapoverflow.out -e
+ ipv6-next-header-oobr-1       ipv6-next-header-oobr-1.pcap    ipv6-next-header-oobr-1.out
+ ipv6-next-header-oobr-2       ipv6-next-header-oobr-2.pcap    ipv6-next-header-oobr-2.out
+ ipv6-rthdr-oobr               ipv6-rthdr-oobr.pcap            ipv6-rthdr-oobr.out
+ ieee802.11_tim_ie_oobr        ieee802.11_tim_ie_oobr.pcap     ieee802.11_tim_ie_oobr.out
+ decnet-shorthdr-oobr  decnet-shorthdr-oobr.pcap       decnet-shorthdr-oobr.out
+ isakmp-3948-oobr-2    isakmp-3948-oobr-2.pcap         isakmp-3948-oobr-2.out
+ ieee802.11_rates_oobr ieee802.11_rates_oobr.pcap      ieee802.11_rates_oobr.out
+ ipv6-mobility-header-oobr     ipv6-mobility-header-oobr.pcap  ipv6-mobility-header-oobr.out
+ beep-oobr             beep-oobr.pcap                  beep-oobr.out
  
  # bad packets from Kamil Frankowicz
- snmp-heapoverflow-1   snmp-heapoverflow-1.pcap        snmp-heapoverflow-1.out         -t
- snmp-heapoverflow-2   snmp-heapoverflow-2.pcap        snmp-heapoverflow-2.out         -t
- isoclns-heapoverflow-2        isoclns-heapoverflow-2.pcap     isoclns-heapoverflow-2.out      -t -e -c1
- isoclns-heapoverflow-3        isoclns-heapoverflow-3.pcap     isoclns-heapoverflow-3.out      -t -e -c1
+ snmp-heapoverflow-1   snmp-heapoverflow-1.pcap        snmp-heapoverflow-1.out
+ snmp-heapoverflow-2   snmp-heapoverflow-2.pcap        snmp-heapoverflow-2.out
+ isoclns-heapoverflow-2        isoclns-heapoverflow-2.pcap     isoclns-heapoverflow-2.out      -e
+ isoclns-heapoverflow-3        isoclns-heapoverflow-3.pcap     isoclns-heapoverflow-3.out      -e
+ stp-v4-length-sigsegv stp-v4-length-sigsegv.pcap      stp-v4-length-sigsegv.out
+ hoobr_pimv1           hoobr_pimv1.pcap                hoobr_pimv1.out
+ hoobr_safeputs                hoobr_safeputs.pcap             hoobr_safeputs.out
+ isakmp-rfc3948-oobr   isakmp-rfc3948-oobr.pcap        isakmp-rfc3948-oobr.out
+ isoclns-oobr          isoclns-oobr.pcap               isoclns-oobr.out
+ nfs-attr-oobr         nfs-attr-oobr.pcap              nfs-attr-oobr.out
+ decnet-oobr           decnet-oobr.pcap                decnet-oobr.out
+ oobr_parse_elements   oobr_parse_elements.pcap        oobr_parse_elements.out
+ hoobr_ripng_print     hoobr_ripng_print.pcap          hoobr_ripng_print.out
+ hoobr_juniper         hoobr_juniper.pcap              hoobr_juniper.out
+ hoobr_juniper2                hoobr_juniper2.pcap             hoobr_juniper2.out
+ hoobr_juniper3                hoobr_juniper3.pcap             hoobr_juniper3.out
+ hoobr_juniper4                hoobr_juniper4.pcap             hoobr_juniper4.out
+ hoobr_parse_field     hoobr_parse_field.pcap          hoobr_parse_field.out
+ hoobr_chdlc_print     hoobr_chdlc_print.pcap          hoobr_chdlc_print.out
+ hoobr_lookup_nsap     hoobr_lookup_nsap.pcap          hoobr_lookup_nsap.out
+ hoobr_rt6_print               hoobr_rt6_print.pcap            hoobr_rt6_print.out
+ hoobr_nfs_printfh     hoobr_nfs_printfh.pcap          hoobr_nfs_printfh.out
+ hoobr_aodv_extension  hoobr_aodv_extension.pcap       hoobr_aodv_extension.out
+ hoobr_nfs_xid_map_enter hoobr_nfs_xid_map_enter.pcap    hoobr_nfs_xid_map_enter.out
+ hoobr_bfd_print               hoobr_bfd_print.pcap            hoobr_bfd_print.out
+ # bad packets from Wilfried Kirsch
+ slip-bad-direction    slip-bad-direction.pcap         slip-bad-direction.out  -ve
+ # bad packets from GitHub issues #676 and #677
+ slip-compressed_sl_print-oobr slip-compressed_sl_print-oobr.pcap slip-compressed_sl_print-oobr.out -e
+ slip-sliplink_print-oobr slip-sliplink_print-oobr.pcap slip-sliplink_print-oobr.out -e
+ # bad packets from Otto Airamo and Antti Levomäki
+ nbns-valgrind         nbns-valgrind.pcap              nbns-valgrind.out       -vvv -e
+ arp-oobr              arp-oobr.pcap                   arp-oobr.out    -vvv -e
+ icmp-cksum-oobr-1     icmp-cksum-oobr-1.pcap          icmp-cksum-oobr-1.out   -vvv -e
+ icmp-cksum-oobr-2     icmp-cksum-oobr-2.pcap          icmp-cksum-oobr-2.out   -vvv -e
+ icmp-cksum-oobr-3     icmp-cksum-oobr-3.pcapng        icmp-cksum-oobr-3.out   -vvv -e
+ icmp-cksum-oobr-4     icmp-cksum-oobr-4.pcapng        icmp-cksum-oobr-4.out   -vvv -e
+ tok2str-oobr-1                tok2str-oobr-1.pcap             tok2str-oobr-1.out      -vvv -e
+ tok2str-oobr-2                tok2str-oobr-2.pcap             tok2str-oobr-2.out      -vvv -e
+ eigrp-tlv-oobr                eigrp-tlv-oobr.pcap             eigrp-tlv-oobr.out      -vvv -e
+ zephyr-oobr           zephyr-oobr.pcap                zephyr-oobr.out         -vvv -e
+ isakmp-no-none-np     isakmp-no-none-np.pcapng        isakmp-no-none-np.out   -vvv -e
+ telnet-iac-check-oobr telnet-iac-check-oobr.pcap      telnet-iac-check-oobr.out       -vvv -e
+ resp_4_infiniteloop   resp_4_infiniteloop.pcapng      resp_4_infiniteloop.out -vvv -e
+ dns_fwdptr            dns_fwdptr.pcap                 dns_fwdptr.out          -vvv -e
+ isis-areaaddr-oobr-1  isis-areaaddr-oobr-1.pcap       isis-areaaddr-oobr-1.out                -vvv -e
+ isis-areaaddr-oobr-2  isis-areaaddr-oobr-2.pcap       isis-areaaddr-oobr-2.out                -vvv -e
+ isis-extd-ipreach-oobr        isis-extd-ipreach-oobr.pcap     isis-extd-ipreach-oobr.out              -vvv -e
+ lldp-infinite-loop-1  lldp-infinite-loop-1.pcap       lldp-infinite-loop-1.out                -vvv -e
+ lldp-infinite-loop-2  lldp-infinite-loop-2.pcap       lldp-infinite-loop-2.out                -vvv -e
+ pimv2-oobr-1          pimv2-oobr-1.pcap               pimv2-oobr-1.out                -vvv -e
+ pimv2-oobr-2          pimv2-oobr-2.pcap               pimv2-oobr-2.out                -vvv -e
+ pimv2-oobr-3          pimv2-oobr-3.pcap               pimv2-oobr-3.out                -vvv -e
+ pimv2-oobr-4          pimv2-oobr-4.pcap               pimv2-oobr-4.out                -vvv -e
+ 802_15_4-oobr-1               802_15_4-oobr-1.pcap            802_15_4-oobr-1.out     -vvv -e
+ 802_15_4-oobr-2               802_15_4-oobr-2.pcap            802_15_4-oobr-2.out     -vvv -e
+ 802_15_4-data         802_15_4-data.pcap              802_15_4-data.out       -vvv -e
+ 802_15_4_beacon               802_15_4_beacon.pcap            802_15_4_beacon.out     -vvv -e
+ lmpv1_busyloop                lmpv1_busyloop.pcap             lmpv1_busyloop.out      -vvv -e
+ juniper_atm1_oobr     juniper_atm1_oobr.pcap          juniper_atm1_oobr.out   -vvv -e
+ juniper_es_oobr               juniper_es_oobr.pcap            juniper_es_oobr.out     -vvv -e
+ # bad packets from Yannick Formaggio
+ l2tp-avp-overflow     l2tp-avp-overflow.pcap          l2tp-avp-overflow.out   -v
+ pktap-heap-overflow   pktap-heap-overflow.pcap        pktap-heap-overflow.out -v
+ wb-oobr                       wb-oobr.pcap                    wb-oobr.out     -v
+ # bad packets from Bhargava Shastry
+ lldp_asan             lldp_asan.pcap                  lldp_asan.out   -v
+ extract_read2_asan    extract_read2_asan.pcap         extract_read2_asan.out  -v
+ getname_2_read4_asan  getname_2_read4_asan.pcap       getname_2_read4_asan.out        -v
+ eap_extract_read2_asan        eap_extract_read2_asan.pcap     eap_extract_read2_asan.out      -v
+ esis_snpa_asan                esis_snpa_asan.pcap             esis_snpa_asan.out      -v
+ esis_snpa_asan-2      esis_snpa_asan-2.pcap           esis_snpa_asan-2.out    -v
+ esis_snpa_asan-3      esis_snpa_asan-3.pcap           esis_snpa_asan-3.out    -v
+ esis_snpa_asan-4      esis_snpa_asan-4.pcap           esis_snpa_asan-4.out    -v
+ esis_snpa_asan-5      esis_snpa_asan-5.pcap           esis_snpa_asan-5.out    -v
+ dhcp6_reconf_asan     dhcp6_reconf_asan.pcap          dhcp6_reconf_asan.out   -v
+ pgm_opts_asan         pgm_opts_asan.pcap              pgm_opts_asan.out       -v
+ pgm_opts_asan_2               pgm_opts_asan_2.pcap            pgm_opts_asan_2.out     -v
+ pgm_opts_asan_3               pgm_opts_asan_3.pcap            pgm_opts_asan_3.out     -v
+ pgm_group_addr_asan   pgm_group_addr_asan.pcap        pgm_group_addr_asan.out -v
+ vtp_asan              vtp_asan.pcap                   vtp_asan.out    -v
+ vtp_asan-2            vtp_asan-2.pcap                 vtp_asan-2.out  -v
+ vtp_asan-3            vtp_asan-3.pcap                 vtp_asan-3.out  -v
+ icmp6_mobileprefix_asan       icmp6_mobileprefix_asan.pcap    icmp6_mobileprefix_asan.out     -v
+ ip_printroute_asan    ip_printroute_asan.pcap         ip_printroute_asan.out  -v
+ mobility_opt_asan     mobility_opt_asan.pcap          mobility_opt_asan.out   -v
+ mobility_opt_asan_2   mobility_opt_asan_2.pcap        mobility_opt_asan_2.out -v
+ mobility_opt_asan_3   mobility_opt_asan_3.pcap        mobility_opt_asan_3.out -v
+ mobility_opt_asan_4   mobility_opt_asan_4.pcap        mobility_opt_asan_4.out -v
+ mobility_opt_asan_5   mobility_opt_asan_5.pcap        mobility_opt_asan_5.out -v
+ mobility_opt_asan_6   mobility_opt_asan_6.pcap        mobility_opt_asan_6.out -v
+ mobility_opt_asan_7   mobility_opt_asan_7.pcap        mobility_opt_asan_7.out -v
+ mobility_opt_asan_8   mobility_opt_asan_8.pcap        mobility_opt_asan_8.out -v
+ isis_stlv_asan                isis_stlv_asan.pcap             isis_stlv_asan.out      -v
+ isis_stlv_asan-2      isis_stlv_asan-2.pcap           isis_stlv_asan-2.out    -v
+ isis_stlv_asan-3      isis_stlv_asan-3.pcap           isis_stlv_asan-3.out    -v
+ isis_stlv_asan-4      isis_stlv_asan-4.pcap           isis_stlv_asan-4.out    -v
+ isis_sysid_asan               isis_sysid_asan.pcap            isis_sysid_asan.out     -v
+ lldp_mgmt_addr_tlv_asan       lldp_mgmt_addr_tlv_asan.pcap    lldp_mgmt_addr_tlv_asan.out     -v
+ bootp_asan            bootp_asan.pcap                 bootp_asan.out          -v
+ bootp_asan-2          bootp_asan-2.pcap               bootp_asan-2.out        -v
+ ppp_ccp_config_deflate_option_asan    ppp_ccp_config_deflate_option_asan.pcap ppp_ccp_config_deflate_option_asan.out  -v
+ pim_header_asan               pim_header_asan.pcap            pim_header_asan.out     -v
+ pim_header_asan-2     pim_header_asan-2.pcap          pim_header_asan-2.out   -v
+ pim_header_asan-3     pim_header_asan-3.pcap          pim_header_asan-3.out   -v
+ pim_header_asan-4     pim_header_asan-4.pcap          pim_header_asan-4.out   -v
+ ip6_frag_asan         ip6_frag_asan.pcap              ip6_frag_asan.out       -v
+ radius_attr_asan      radius_attr_asan.pcap           radius_attr_asan.out    -v
+ ospf6_decode_v3_asan  ospf6_decode_v3_asan.pcap       ospf6_decode_v3_asan.out -v
+ ip_ts_opts_asan               ip_ts_opts_asan.pcap            ip_ts_opts_asan.out     -v
+ isakmpv1-attr-oobr    isakmpv1-attr-oobr.pcap         isakmpv1-attr-oobr.out  -v
+ isakmp-ikev1_n_print-oobr isakmp-ikev1_n_print-oobr.pcap isakmp-ikev1_n_print-oobr.out -v
+ ldp-ldp_tlv_print-oobr ldp-ldp_tlv_print-oobr.pcap ldp-ldp_tlv_print-oobr.out -v
+ icmp-icmp_print-oobr-1 icmp-icmp_print-oobr-1.pcap icmp-icmp_print-oobr-1.out -v
+ icmp-icmp_print-oobr-2 icmp-icmp_print-oobr-2.pcap icmp-icmp_print-oobr-2.out -v
+ rsvp-rsvp_obj_print-oobr rsvp-rsvp_obj_print-oobr.pcap rsvp-rsvp_obj_print-oobr.out -v
+ vrrp-vrrp_print-oobr vrrp-vrrp_print-oobr.pcap vrrp-vrrp_print-oobr.out -v
+ vrrp-vrrp_print-oobr-2 vrrp-vrrp_print-oobr-2.pcap vrrp-vrrp_print-oobr-2.out -v
+ bgp-bgp_capabilities_print-oobr-1 bgp-bgp_capabilities_print-oobr-1.pcap bgp-bgp_capabilities_print-oobr-1.out -v
+ bgp-bgp_capabilities_print-oobr-2 bgp-bgp_capabilities_print-oobr-2.pcap bgp-bgp_capabilities_print-oobr-2.out -v
+ lmp-lmp_print_data_link_subobjs-oobr lmp-lmp_print_data_link_subobjs-oobr.pcap lmp-lmp_print_data_link_subobjs-oobr.out -v
+ # The .pcap file is truncated after the 1st packet.
+ hncp_dhcpv6data-oobr  hncp_dhcpv6data-oobr.pcap       hncp_dhcpv6data-oobr.out -v
+ hncp_dhcpv4data-oobr  hncp_dhcpv4data-oobr.pcap       hncp_dhcpv4data-oobr.out -v
+ vqp-oobr              vqp-oobr.pcap                   vqp-oobr.out            -v
+ bgp_pmsi_tunnel-oobr  bgp_pmsi_tunnel-oobr.pcap       bgp_pmsi_tunnel-oobr.out -v
+ bgp_mvpn_6_and_7_oobr bgp_mvpn_6_and_7_oobr.pcap      bgp_mvpn_6_and_7_oobr.out       -v
+ rsvp_fast_reroute-oobr        rsvp_fast_reroute-oobr.pcap     rsvp_fast_reroute-oobr.out -v
+ esis_opt_prot-oobr    esis_opt_prot-oobr.pcap         esis_opt_prot-oobr.out  -v
+ rsvp_uni-oobr-1       rsvp_uni-oobr-1.pcap    rsvp_uni-oobr-1.out     -v
+ rsvp_uni-oobr-2       rsvp_uni-oobr-2.pcap    rsvp_uni-oobr-2.out     -v
+ rsvp_uni-oobr-3       rsvp_uni-oobr-3.pcap    rsvp_uni-oobr-3.out     -v
+ rpki-rtr-oobr         rpki-rtr-oobr.pcap      rpki-rtr-oobr.out       -v
+ lldp_8023_mtu-oobr    lldp_8023_mtu-oobr.pcap lldp_8023_mtu-oobr.out  -v
+ bgp_vpn_rt-oobr       bgp_vpn_rt-oobr.pcap    bgp_vpn_rt-oobr.out     -v -c1
+ cfm_sender_id-oobr    cfm_sender_id-oobr.pcap cfm_sender_id-oobr.out  -v
+ isis-extd-isreach-oobr        isis-extd-isreach-oobr.pcap     isis-extd-isreach-oobr.out -v
+ olsr-oobr-1           olsr-oobr-1.pcap                olsr-oobr-1.out -v
+ olsr-oobr-2           olsr-oobr-2.pcap                olsr-oobr-2.out -v
+ ikev1_id_ipv6_addr_subnet-oobr        ikev1_id_ipv6_addr_subnet-oobr.pcap     ikev1_id_ipv6_addr_subnet-oobr.out      -v
+ isakmp-various-oobr   isakmp-various-oobr.pcap        isakmp-various-oobr.out -v
+ aoe-oobr-1            aoe-oobr-1.pcap                 aoe-oobr-1.out  -v
+ frf16_magic_ie-oobr   frf16_magic_ie-oobr.pcap        frf16_magic_ie-oobr.out -v
+ rx_serviceid_oobr     rx_serviceid_oobr.pcap          rx_serviceid_oobr.out
+ bgp_mp_reach_nlri-oobr bgp_mp_reach_nlri-oobr.pcap     bgp_mp_reach_nlri-oobr.out -v
+ # bad packets from Katie Holly
+ mlppp-oobr            mlppp-oobr.pcap                 mlppp-oobr.out
+ kh-timed-001-oobr     kh-timed-001-oobr.pcap          kh-timed-001-oobr.out
+ kh-timed-002-oobr     kh-timed-002-oobr.pcap          kh-timed-002-oobr.out
+ kh-timed-004-oobr     kh-timed-004-oobr.pcap          kh-timed-004-oobr.out
+ # bad packets from Kim Gwan Yeong
+ mptcp-dss-oobr                mptcp-dss-oobr.pcap             mptcp-dss-oobr.out      -v
+ icmp6_nodeinfo_oobr   icmp6_nodeinfo_oobr.pcap        icmp6_nodeinfo_oobr.out
+ # bad packets from Henri Salo
+ rx_ubik-oobr          rx_ubik-oobr.pcap               rx_ubik-oobr.out
+ babel_update_oobr     babel_update_oobr.pcap          babel_update_oobr.out
+ # bad packets from Junjie Wang
+ ospf6_print_lshdr-oobr ospf6_print_lshdr-oobr.pcap ospf6_print_lshdr-oobr.out -vv
+ rpl-dao-oobr rpl-dao-oobr.pcap rpl-dao-oobr.out -vv
+ hncp_prefix-oobr hncp_prefix-oobr.pcap hncp_prefix-oobr.out -vvv
+ smb_print_trans-oobr1 smb_print_trans-oobr1.pcap smb_print_trans-oobr1.out -vv
+ # bad packets from Ryan Ackroyd
+ ieee802.11_meshhdr-oobr ieee802.11_meshhdr-oobr.pcap ieee802.11_meshhdr-oobr.out -H
+ dccp_options-oobr dccp_options-oobr.pcap dccp_options-oobr.out -vv
+ # bad packets from Philippe Antoine
+ smb_print_trans-oobr2 smb_print_trans-oobr2.pcap smb_print_trans-oobr2.out -vv
  
  # RTP tests
  # fuzzed pcap
- rtp-seg-fault-1  rtp-seg-fault-1.pcap  rtp-seg-fault-1.out  -t -v -T rtp
- rtp-seg-fault-2  rtp-seg-fault-2.pcap  rtp-seg-fault-2.out  -t -v -T rtp
+ rtp-seg-fault-1  rtp-seg-fault-1.pcapng  rtp-seg-fault-1.out  -v -T rtp
+ rtp-seg-fault-2  rtp-seg-fault-2.pcapng  rtp-seg-fault-2.out  -v -T rtp
  
- # NFS tests
- # fuzzed pcap
- nfs-seg-fault-1  nfs-seg-fault-1.pcap  nfs-seg-fault-1.out  -t
+ # SSH tests
+ ssh                   ssh.pcap                ssh.out
  
 +# MACsec
 +macsec-encrypted       macsec-encrypted.pcap          macsec-encrypted.out        -t -e
 +macsec-changed         macsec-changed.pcap            macsec-changed.out          -t -e
 +macsec-integonly       macsec-integonly.pcap          macsec-integonly.out        -t -e
 +macsec-snap            macsec-snap.pcap               macsec-snap.out             -t -e
 +macsec-short-shorter   macsec-short-shorter.pcap      macsec-short-shorter.out    -t -e
 +macsec-short-longer    macsec-short-longer.pcap       macsec-short-longer.out     -t -e
 +macsec-short-valid     macsec-short-valid.pcap        macsec-short-valid.out      -t -e
++
+ # NFS tests
++# fuzzed pcap
+ nfs-write-verf-cookie nfs-write-verf-cookie.pcapng nfs-write-verf-cookie.out -vv
+ # NFS fuzzed
+ nfs-seg-fault-1  nfs-seg-fault-1.pcapng  nfs-seg-fault-1.out
+ # NFS invalid
+ nfs-cannot-pad-32-bit nfs-cannot-pad-32-bit.pcap nfs-cannot-pad-32-bit.out
+ # DNS infinite loop tests
+ #
+ # See http://marc.info/?l=tcpdump-workers&m=95552439022555
+ #
+ dns-zlip-1            dns-zlip-1.pcap         dns-zlip-1.out
+ dns-zlip-2            dns-zlip-2.pcap         dns-zlip-2.out
+ dns-zlip-3            dns-zlip-3.pcap         dns-zlip-3.out
+ # NTP tests
+ ntp                   ntp.pcap                ntp.out
+ ntp-v                 ntp.pcap                ntp-v.out               -v
+ ntp-time              ntp-time.pcap           ntp-time.out
+ ntp-time--v           ntp-time.pcap           ntp-time--v.out         -v
+ ntp-time--vv          ntp-time.pcap           ntp-time--vv.out        -vv
+ ntp-time--vvv         ntp-time.pcap           ntp-time--vvv.out       -vvv
+ ntp-control           ntp-control.pcap        ntp-control.out
+ ntp-control--v                ntp-control.pcap        ntp-control--v.out      -v
+ ntp-control--vv               ntp-control.pcap        ntp-control--vv.out     -vv
+ ntp-control--vvv      ntp-control.pcap        ntp-control--vvv.out    -vvv
+ ntp-mode7             ntp-mode7.pcap          ntp-mode7.out
+ ntp-mode7--v          ntp-mode7.pcap          ntp-mode7--v.out        -v
+ ntp-mode7--vv         ntp-mode7.pcap          ntp-mode7--vv.out       -vv
+ ntp-mode7--vvv                ntp-mode7.pcap          ntp-mode7--vvv.out      -vvv
+ # RX/AFS
+ rx                    afs.pcap                rx.out
+ rx-v                  afs.pcap                rx-v.out                -v
+ # Empty pcap/pcapng tests
+ empty-pcap    empty.pcap      empty.out
+ empty-pcapng  empty.pcapng    empty.out
+ # DNS Extended rcode tests
+ dns-badcookie dns-badcookie.pcap      dns-badcookie.out
+ dns-badvers   dns-badvers.pcap        dns-badvers.out
+ # LLDP
+ lldp-app-priority     lldp-app-priority.pcap  lldp-app-priority.out   -v
+ # DNS URI RR support tests
+ dns-uri               dns-uri.pcap    dns-uri.out
+ # AF_VSOCK tests
+ vsock-1       vsock-1.pcapng  vsock-1.out
+ vsock-1-v     vsock-1.pcapng  vsock-1-v.out -v
+ vsock-1-vv    vsock-1.pcapng  vsock-1-vv.out -vv
+ #IP over infinband (ipoib)
+ ipoib ipoib.pcap      ipoib.out
+ ipoib-e       ipoib.pcap      ipoib-e.out -e
+ # BFD multihop and lag (RFC5883 & 7130)
+ bfd-multihop  bfd-multihop.pcap       bfd-multihop.out
+ bfd-multihop-v        bfd-multihop.pcap       bfd-multihop-v.out      -v
+ bfd-lag               bfd-lag.pcap            bfd-lag.out
+ bfd-lag-v     bfd-lag.pcap            bfd-lag-v.out           -v
+ # Arista Vendor Specific Tests
+ arista-ether             arista_ether.pcap        arista_ether.out
+ arista-ether-e           arista_ether.pcap        arista_ether-e.out       -e
+ arista-ether-ev          arista_ether.pcap        arista_ether-ev.out      -ev
+ # TIPC length field test
+ huge-tipc-messages    huge-tipc-messages.pcap huge-tipc-messages.out
+ # CVE-2018-10105 bad packets from Luis Rocha
+ sflow_print-segv sflow_print-segv.pcap sflow_print-segv.out -v
+ smb_data_print-oobr smb_data_print-oobr.pcapng smb_data_print-oobr.out -vv
+ smb_data_print-segv smb_data_print-segv.pcapng smb_data_print-segv.out -vv
+ #ptp tests
+ ptp         ptp.pcap    ptp.out
+ ptp_ethernet  ptp_ethernet.pcap       ptp_ethernet.out        -e
+ # bad packets from Jason Xiaole
+ ldp_tlv_print-oobr ldp_tlv_print-oobr.pcap ldp_tlv_print-oobr.out -v
+ #someip tests
+ someip1               someip1.pcap    someip1.out
+ someip2               someip2.pcap    someip2.out
+ # EDNS Options
+ edns-opts       edns-opts.pcap      edns-opts.out
+ edns-opts-v     edns-opts.pcap      edns-opts-v.out     -v
+ edns-opts-vv    edns-opts.pcap      edns-opts-vv.out    -vv