]> The Tcpdump Group git mirrors - tcpdump/blobdiff - tcpdump.c
Add support for getting table ranges Fixup get by key formatting while at it
[tcpdump] / tcpdump.c
index 49029b8988ab6486fdf4627fc41fe356673dd0a5..5435c7d41e6f292b7262e0f77c3f526d0cf56552 100644 (file)
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -312,6 +312,9 @@ static struct printer printers[] = {
 };
 
 static struct ndo_printer ndo_printers[] = {
+#ifdef DLT_NFLOG
+       { nflog_if_print,       DLT_NFLOG},
+#endif
        { ether_if_print,       DLT_EN10MB },
 #ifdef DLT_IPNET
        { ipnet_if_print,       DLT_IPNET },
@@ -1011,6 +1014,14 @@ main(int argc, char **argv)
                                packettype = PT_CARP;
                        else if (strcasecmp(optarg, "radius") == 0)
                                packettype = PT_RADIUS;
+                       else if (strcasecmp(optarg, "zmtp1") == 0)
+                               packettype = PT_ZMTP1;
+                       else if (strcasecmp(optarg, "vxlan") == 0)
+                               packettype = PT_VXLAN;
+                       else if (strcasecmp(optarg, "pgm") == 0)
+                               packettype = PT_PGM;
+                       else if (strcasecmp(optarg, "pgm_zmtp1") == 0)
+                               packettype = PT_PGM_ZMTP1;
                        else
                                error("unknown packet type `%s'", optarg);
                        break;
@@ -1210,8 +1221,8 @@ main(int argc, char **argv)
                 * Print a message to the standard error on Windows.
                 * XXX - why do it here, with a different message?
                 */
-               if(strlen(device) == 1) //we assume that an ASCII string is always longer than 1 char
-               {                                               //a Unicode string has a \0 as second byte (so strlen() is 1)
+               if(strlen(device) == 1) /* we assume that an ASCII string is always longer than 1 char */
+               {                                               /* a Unicode string has a \0 as second byte (so strlen() is 1) */
                        fprintf(stderr, "%s: listening on %ws\n", program_name, device);
                }
                else
@@ -1541,6 +1552,14 @@ main(int argc, char **argv)
                        }
                        (void)fflush(stdout);
                }
+                if (status == -2) {
+                       /*
+                        * We got interrupted. If we are reading multiple
+                        * files (via -V) set these so that we stop.
+                        */
+                       VFileName = NULL;
+                       ret = NULL;
+               }
                if (status == -1) {
                        /*
                         * Error.  Report it.