diff options
author | Guy Harris <guy@alum.mit.edu> | 2015-05-20 16:56:06 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2015-05-20 16:56:06 -0700 |
commit | 0b1de8f73d9b1484095a5ba484e83021ef7bc7ae (patch) | |
tree | 533481dd7368deb7a0f73eeaa043cecad01fab39 | |
parent | ef6c3b8bd9463638760e8fdae90561ca708c1a76 (diff) | |
parent | c7b0d30ccd6b30c313914e538fbfca169cb5e911 (diff) | |
download | tcpdump-0b1de8f73d9b1484095a5ba484e83021ef7bc7ae.tar.gz |
Merge pull request #455 from brooksdavis/gndo-cleanup
Remove global netdissect_object and remove non-dissection related fields
-rw-r--r-- | netdissect.h | 15 | ||||
-rw-r--r-- | print.c | 16 | ||||
-rw-r--r-- | print.h | 4 | ||||
-rw-r--r-- | tcpdump.c | 285 |
4 files changed, 159 insertions, 161 deletions
diff --git a/netdissect.h b/netdissect.h index e1a384c7..7c140f1d 100644 --- a/netdissect.h +++ b/netdissect.h @@ -101,7 +101,6 @@ struct netdissect_options { int ndo_sflag; /* use the libsmi to translate OIDs */ int ndo_Sflag; /* print raw TCP sequence numbers */ int ndo_tflag; /* print packet arrival time */ - int ndo_Uflag; /* "unbuffered" output of dump files */ int ndo_uflag; /* Print undecoded NFS handles */ int ndo_vflag; /* verbose */ int ndo_xflag; /* print packet in hex */ @@ -109,21 +108,9 @@ struct netdissect_options { int ndo_Aflag; /* print packet only in ascii observing TAB, * LF, CR and SPACE as graphical chars */ - int ndo_Bflag; /* buffer size */ - int ndo_Iflag; /* rfmon (monitor) mode */ - int ndo_Oflag; /* run filter code optimizer */ int ndo_dlt; /* if != -1, ask libpcap for the DLT it names*/ - int ndo_jflag; /* packet time stamp source */ - int ndo_pflag; /* don't go promiscuous */ int ndo_immediate; /* use immediate mode */ - int ndo_Cflag; /* rotate dump files after this many bytes */ - int ndo_Cflag_count; /* Keep track of which file number we're writing */ - int ndo_Gflag; /* rotate dump files after this many seconds */ - int ndo_Gflag_count; /* number of files created with Gflag rotation */ - time_t ndo_Gflag_time; /* The last time_t the dump file was rotated. */ - int ndo_Wflag; /* recycle output files after this number of files */ - int ndo_WflagChars; int ndo_Hflag; /* dissect 802.11s draft mesh standard */ 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 */ @@ -637,6 +624,4 @@ extern int esp_print_decrypt_buffer_by_ikev2(netdissect_options *ndo, extern void geonet_print(netdissect_options *ndo,const u_char *eth_hdr,const u_char *geo_pck, u_int len); extern void calm_fast_print(netdissect_options *ndo,const u_char *eth_hdr,const u_char *calm_pck, u_int len); -extern netdissect_options *gndo; - #endif /* netdissect_h */ @@ -247,11 +247,12 @@ static int tcpdump_printf(netdissect_options *ndo _U_, const char *fmt, ...) ; void -init_print(u_int32_t localnet, u_int32_t mask, uint32_t timezone_offset) +init_print(netdissect_options *ndo, u_int32_t localnet, u_int32_t mask, + uint32_t timezone_offset) { thiszone = timezone_offset; - init_addrtoname(gndo, localnet, mask); + init_addrtoname(ndo, localnet, mask); init_checksum(); } @@ -300,17 +301,18 @@ has_printer(int type) } struct print_info -get_print_info(int type) +get_print_info(netdissect_options *ndo, int type) { + const char *dltname; struct print_info printinfo; - printinfo.ndo = gndo; + printinfo.ndo = ndo; printinfo.printer = lookup_printer(type); if (printinfo.printer == NULL) { - gndo->ndo_dltname = pcap_datalink_val_to_name(type); - if (gndo->ndo_dltname != NULL) + dltname = pcap_datalink_val_to_name(type); + if (dltname != NULL) error("packet printing is not supported for link type %s: use -w", - gndo->ndo_dltname); + dltname); else error("packet printing is not supported for link type %d: use -w", type); } @@ -33,12 +33,12 @@ struct print_info { if_printer printer; }; -void init_print(u_int32_t localnet, u_int32_t mask, +void init_print(netdissect_options *ndo, u_int32_t localnet, u_int32_t mask, uint32_t timezone_offset); int has_printer(int type); -struct print_info get_print_info(int type); +struct print_info get_print_info(netdissect_options *ndo, int type); void pretty_print_packet(struct print_info *print_info, const struct pcap_pkthdr *h, const u_char *sp, @@ -134,18 +134,24 @@ extern int SIZE_BUF; #define SIGNAL_REQ_INFO SIGUSR1 #endif -netdissect_options Gndo; -netdissect_options *gndo = &Gndo; - +static int Cflag; /* rotate dump files after this many bytes */ +static int Cflag_count; /* Keep track of which file number we're writing */ static int Dflag; /* list available devices and exit */ static int dflag; /* print filter code */ +static int Gflag; /* rotate dump files after this many seconds */ +static int Gflag_count; /* number of files created with Gflag rotation */ +static time_t Gflag_time; /* The last time_t the dump file was rotated. */ static int Lflag; /* list available data link types and exit */ +static int Iflag; /* rfmon (monitor) mode */ #ifdef HAVE_PCAP_SET_TSTAMP_TYPE static int Jflag; /* list available time stamp types */ #endif #ifdef HAVE_PCAP_SETDIRECTION int Qflag = -1; /* restrict captured packet by send/receive direction */ #endif +static int Uflag; /* "unbuffered" output of dump files */ +static int Wflag; /* recycle output files after this number of files */ +static int WflagChars; static char *zflag = NULL; /* compress each savefile using a specified command (like gzip or bzip2) */ static int infodelay; @@ -267,7 +273,7 @@ show_dlts_and_exit(const char *device, pcap_t *pd) if (supports_monitor_mode) (void) fprintf(stderr, "Data link types for %s %s (use option -y to set):\n", device, - gndo->ndo_Iflag ? "when in monitor mode" : "when not in monitor mode"); + Iflag ? "when in monitor mode" : "when not in monitor mode"); else (void) fprintf(stderr, "Data link types for %s (use option -y to set):\n", device); @@ -550,11 +556,11 @@ MakeFilename(char *buffer, char *orig_name, int cnt, int max_chars) error("Makefilename: malloc"); /* Process with strftime if Gflag is set. */ - if (gndo->ndo_Gflag != 0) { + if (Gflag != 0) { struct tm *local_tm; /* Convert Gflag_time to a usable format */ - if ((local_tm = localtime(&gndo->ndo_Gflag_time)) == NULL) { + if ((local_tm = localtime(&Gflag_time)) == NULL) { error("MakeTimedFilename: localtime"); } @@ -725,18 +731,23 @@ main(int argc, char **argv) cap_rights_t rights; int cansandbox; #endif /* HAVE_CAPSICUM */ + int Bflag=0; /* buffer size */ + int jflag=-1; /* packet time stamp source */ + int Oflag=1; /* run filter code optimizer */ + int pflag=0; /* don't go promiscuous */ + netdissect_options Ndo; + netdissect_options *ndo = &Ndo; #ifdef WIN32 if(wsockinit() != 0) return 1; #endif /* WIN32 */ - gndo->ndo_jflag=-1; /* not set */ - gndo->ndo_Oflag=1; - gndo->ndo_Rflag=1; - gndo->ndo_dlt=-1; - ndo_set_function_pointers(gndo); - gndo->ndo_snaplen = DEFAULT_SNAPLEN; - gndo->ndo_immediate = 0; + memset(ndo, 0, sizeof(*ndo)); + ndo->ndo_Rflag=1; + ndo->ndo_dlt=-1; + ndo_set_function_pointers(ndo); + ndo->ndo_snaplen = DEFAULT_SNAPLEN; + ndo->ndo_immediate = 0; cnt = -1; device = NULL; @@ -774,17 +785,17 @@ main(int argc, char **argv) break; case 'A': - ++gndo->ndo_Aflag; + ++ndo->ndo_Aflag; break; case 'b': - ++gndo->ndo_bflag; + ++ndo->ndo_bflag; break; #if defined(HAVE_PCAP_CREATE) || defined(WIN32) case 'B': - gndo->ndo_Bflag = atoi(optarg)*1024; - if (gndo->ndo_Bflag <= 0) + Bflag = atoi(optarg)*1024; + if (Bflag <= 0) error("invalid packet buffer size %s", optarg); break; #endif /* defined(HAVE_PCAP_CREATE) || defined(WIN32) */ @@ -796,8 +807,8 @@ main(int argc, char **argv) break; case 'C': - gndo->ndo_Cflag = atoi(optarg) * 1000000; - if (gndo->ndo_Cflag < 0) + Cflag = atoi(optarg) * 1000000; + if (Cflag < 0) error("invalid file size %s", optarg); break; @@ -814,18 +825,18 @@ main(int argc, char **argv) break; case 'e': - ++gndo->ndo_eflag; + ++ndo->ndo_eflag; break; case 'E': #ifndef HAVE_LIBCRYPTO warning("crypto code not compiled in"); #endif - gndo->ndo_espsecret = optarg; + ndo->ndo_espsecret = optarg; break; case 'f': - ++gndo->ndo_fflag; + ++ndo->ndo_fflag; break; case 'F': @@ -833,15 +844,15 @@ main(int argc, char **argv) break; case 'G': - gndo->ndo_Gflag = atoi(optarg); - if (gndo->ndo_Gflag < 0) + Gflag = atoi(optarg); + if (Gflag < 0) error("invalid number of seconds %s", optarg); /* We will create one file initially. */ - gndo->ndo_Gflag_count = 0; + Gflag_count = 0; /* Grab the current time for rotation use. */ - if ((gndo->ndo_Gflag_time = time(NULL)) == (time_t)-1) { + if ((Gflag_time = time(NULL)) == (time_t)-1) { error("main: can't get current time: %s", pcap_strerror(errno)); } @@ -853,7 +864,7 @@ main(int argc, char **argv) break; case 'H': - ++gndo->ndo_Hflag; + ++ndo->ndo_Hflag; break; case 'i': @@ -900,14 +911,14 @@ main(int argc, char **argv) #ifdef HAVE_PCAP_CREATE case 'I': - ++gndo->ndo_Iflag; + ++Iflag; break; #endif /* HAVE_PCAP_CREATE */ #ifdef HAVE_PCAP_SET_TSTAMP_TYPE case 'j': - gndo->ndo_jflag = pcap_tstamp_type_name_to_val(optarg); - if (gndo->ndo_jflag < 0) + jflag = pcap_tstamp_type_name_to_val(optarg); + if (jflag < 0) error("invalid time stamp type %s", optarg); break; @@ -938,7 +949,7 @@ main(int argc, char **argv) break; case 'K': - ++gndo->ndo_Kflag; + ++ndo->ndo_Kflag; break; case 'm': @@ -946,7 +957,7 @@ main(int argc, char **argv) if (smiLoadModule(optarg) == 0) { error("could not load MIB module %s", optarg); } - gndo->ndo_sflag = 1; + ndo->ndo_sflag = 1; #else (void)fprintf(stderr, "%s: ignoring option `-m %s' ", program_name, optarg); @@ -959,28 +970,28 @@ main(int argc, char **argv) #ifndef HAVE_LIBCRYPTO warning("crypto code not compiled in"); #endif - gndo->ndo_sigsecret = optarg; + ndo->ndo_sigsecret = optarg; break; case 'n': - ++gndo->ndo_nflag; + ++ndo->ndo_nflag; break; case 'N': - ++gndo->ndo_Nflag; + ++ndo->ndo_Nflag; break; case 'O': - gndo->ndo_Oflag = 0; + Oflag = 0; break; case 'p': - ++gndo->ndo_pflag; + ++pflag; break; case 'q': - ++gndo->ndo_qflag; - ++gndo->ndo_suppress_default_print; + ++ndo->ndo_qflag; + ++ndo->ndo_suppress_default_print; break; #ifdef HAVE_PCAP_SETDIRECTION @@ -1001,75 +1012,75 @@ main(int argc, char **argv) break; case 'R': - gndo->ndo_Rflag = 0; + ndo->ndo_Rflag = 0; break; case 's': - gndo->ndo_snaplen = strtol(optarg, &end, 0); + ndo->ndo_snaplen = strtol(optarg, &end, 0); if (optarg == end || *end != '\0' - || gndo->ndo_snaplen < 0 || gndo->ndo_snaplen > MAXIMUM_SNAPLEN) + || ndo->ndo_snaplen < 0 || ndo->ndo_snaplen > MAXIMUM_SNAPLEN) error("invalid snaplen %s", optarg); - else if (gndo->ndo_snaplen == 0) - gndo->ndo_snaplen = MAXIMUM_SNAPLEN; + else if (ndo->ndo_snaplen == 0) + ndo->ndo_snaplen = MAXIMUM_SNAPLEN; break; case 'S': - ++gndo->ndo_Sflag; + ++ndo->ndo_Sflag; break; case 't': - ++gndo->ndo_tflag; + ++ndo->ndo_tflag; break; case 'T': if (strcasecmp(optarg, "vat") == 0) - gndo->ndo_packettype = PT_VAT; + ndo->ndo_packettype = PT_VAT; else if (strcasecmp(optarg, "wb") == 0) - gndo->ndo_packettype = PT_WB; + ndo->ndo_packettype = PT_WB; else if (strcasecmp(optarg, "rpc") == 0) - gndo->ndo_packettype = PT_RPC; + ndo->ndo_packettype = PT_RPC; else if (strcasecmp(optarg, "rtp") == 0) - gndo->ndo_packettype = PT_RTP; + ndo->ndo_packettype = PT_RTP; else if (strcasecmp(optarg, "rtcp") == 0) - gndo->ndo_packettype = PT_RTCP; + ndo->ndo_packettype = PT_RTCP; else if (strcasecmp(optarg, "snmp") == 0) - gndo->ndo_packettype = PT_SNMP; + ndo->ndo_packettype = PT_SNMP; else if (strcasecmp(optarg, "cnfp") == 0) - gndo->ndo_packettype = PT_CNFP; + ndo->ndo_packettype = PT_CNFP; else if (strcasecmp(optarg, "tftp") == 0) - gndo->ndo_packettype = PT_TFTP; + ndo->ndo_packettype = PT_TFTP; else if (strcasecmp(optarg, "aodv") == 0) - gndo->ndo_packettype = PT_AODV; + ndo->ndo_packettype = PT_AODV; else if (strcasecmp(optarg, "carp") == 0) - gndo->ndo_packettype = PT_CARP; + ndo->ndo_packettype = PT_CARP; else if (strcasecmp(optarg, "radius") == 0) - gndo->ndo_packettype = PT_RADIUS; + ndo->ndo_packettype = PT_RADIUS; else if (strcasecmp(optarg, "zmtp1") == 0) - gndo->ndo_packettype = PT_ZMTP1; + ndo->ndo_packettype = PT_ZMTP1; else if (strcasecmp(optarg, "vxlan") == 0) - gndo->ndo_packettype = PT_VXLAN; + ndo->ndo_packettype = PT_VXLAN; else if (strcasecmp(optarg, "pgm") == 0) - gndo->ndo_packettype = PT_PGM; + ndo->ndo_packettype = PT_PGM; else if (strcasecmp(optarg, "pgm_zmtp1") == 0) - gndo->ndo_packettype = PT_PGM_ZMTP1; + ndo->ndo_packettype = PT_PGM_ZMTP1; else if (strcasecmp(optarg, "lmp") == 0) - gndo->ndo_packettype = PT_LMP; + ndo->ndo_packettype = PT_LMP; else error("unknown packet type `%s'", optarg); break; case 'u': - ++gndo->ndo_uflag; + ++ndo->ndo_uflag; break; #ifdef HAVE_PCAP_DUMP_FLUSH case 'U': - ++gndo->ndo_Uflag; + ++Uflag; break; #endif case 'v': - ++gndo->ndo_vflag; + ++ndo->ndo_vflag; break; case 'V': @@ -1081,28 +1092,28 @@ main(int argc, char **argv) break; case 'W': - gndo->ndo_Wflag = atoi(optarg); - if (gndo->ndo_Wflag < 0) + Wflag = atoi(optarg); + if (Wflag < 0) error("invalid number of output files %s", optarg); - gndo->ndo_WflagChars = getWflagChars(gndo->ndo_Wflag); + WflagChars = getWflagChars(Wflag); break; case 'x': - ++gndo->ndo_xflag; - ++gndo->ndo_suppress_default_print; + ++ndo->ndo_xflag; + ++ndo->ndo_suppress_default_print; break; case 'X': - ++gndo->ndo_Xflag; - ++gndo->ndo_suppress_default_print; + ++ndo->ndo_Xflag; + ++ndo->ndo_suppress_default_print; break; case 'y': - gndo->ndo_dltname = optarg; - gndo->ndo_dlt = - pcap_datalink_name_to_val(gndo->ndo_dltname); - if (gndo->ndo_dlt < 0) - error("invalid data link type %s", gndo->ndo_dltname); + ndo->ndo_dltname = optarg; + ndo->ndo_dlt = + pcap_datalink_name_to_val(ndo->ndo_dltname); + if (ndo->ndo_dlt < 0) + error("invalid data link type %s", ndo->ndo_dltname); break; #if defined(HAVE_PCAP_DEBUG) || defined(HAVE_YYDEBUG) @@ -1128,7 +1139,7 @@ main(int argc, char **argv) break; case '#': - gndo->ndo_packet_number = 1; + ndo->ndo_packet_number = 1; break; case OPTION_VERSION: @@ -1138,15 +1149,15 @@ main(int argc, char **argv) #ifdef HAVE_PCAP_SET_TSTAMP_PRECISION case OPTION_TSTAMP_PRECISION: - gndo->ndo_tstamp_precision = tstamp_precision_from_string(optarg); - if (gndo->ndo_tstamp_precision < 0) + ndo->ndo_tstamp_precision = tstamp_precision_from_string(optarg); + if (ndo->ndo_tstamp_precision < 0) error("unsupported time stamp precision"); break; #endif #ifdef HAVE_PCAP_SET_IMMEDIATE_MODE case OPTION_IMMEDIATE_MODE: - gndo->ndo_immediate = 1; + ndo->ndo_immediate = 1; break; #endif @@ -1161,7 +1172,7 @@ main(int argc, char **argv) show_devices_and_exit(); #endif - switch (gndo->ndo_tflag) { + switch (ndo->ndo_tflag) { case 0: /* Default */ case 4: /* Default + Date*/ @@ -1179,7 +1190,7 @@ main(int argc, char **argv) break; } - if (gndo->ndo_fflag != 0 && (VFileName != NULL || RFileName != NULL)) + if (ndo->ndo_fflag != 0 && (VFileName != NULL || RFileName != NULL)) error("-f can not be used with -V or -r"); if (VFileName != NULL && RFileName != NULL) @@ -1193,7 +1204,7 @@ main(int argc, char **argv) * probably expecting to see packets pop up immediately. */ if (WFileName == NULL && isatty(1)) - gndo->ndo_immediate = 1; + ndo->ndo_immediate = 1; #endif #ifdef WITH_CHROOT @@ -1254,7 +1265,7 @@ main(int argc, char **argv) #ifdef HAVE_PCAP_SET_TSTAMP_PRECISION pd = pcap_open_offline_with_tstamp_precision(RFileName, - gndo->ndo_tstamp_precision, ebuf); + ndo->ndo_tstamp_precision, ebuf); #else pd = pcap_open_offline(RFileName, ebuf); #endif @@ -1313,16 +1324,16 @@ main(int argc, char **argv) show_tstamp_types_and_exit(device, pd); #endif #ifdef HAVE_PCAP_SET_TSTAMP_PRECISION - status = pcap_set_tstamp_precision(pd, gndo->ndo_tstamp_precision); + status = pcap_set_tstamp_precision(pd, ndo->ndo_tstamp_precision); if (status != 0) error("%s: Can't set %ssecond time stamp precision: %s", device, - tstamp_precision_to_string(gndo->ndo_tstamp_precision), + tstamp_precision_to_string(ndo->ndo_tstamp_precision), pcap_statustostr(status)); #endif #ifdef HAVE_PCAP_SET_IMMEDIATE_MODE - if (gndo->ndo_immediate) { + if (ndo->ndo_immediate) { status = pcap_set_immediate_mode(pd, 1); if (status != 0) error("%s: Can't set immediate mode: %s", @@ -1337,15 +1348,15 @@ main(int argc, char **argv) supports_monitor_mode = 1; else supports_monitor_mode = 0; - status = pcap_set_snaplen(pd, gndo->ndo_snaplen); + status = pcap_set_snaplen(pd, ndo->ndo_snaplen); if (status != 0) error("%s: Can't set snapshot length: %s", device, pcap_statustostr(status)); - status = pcap_set_promisc(pd, !gndo->ndo_pflag); + status = pcap_set_promisc(pd, !pflag); if (status != 0) error("%s: Can't set promiscuous mode: %s", device, pcap_statustostr(status)); - if (gndo->ndo_Iflag) { + if (Iflag) { status = pcap_set_rfmon(pd, 1); if (status != 0) error("%s: Can't set monitor mode: %s", @@ -1355,15 +1366,15 @@ main(int argc, char **argv) if (status != 0) error("%s: pcap_set_timeout failed: %s", device, pcap_statustostr(status)); - if (gndo->ndo_Bflag != 0) { - status = pcap_set_buffer_size(pd, gndo->ndo_Bflag); + if (Bflag != 0) { + status = pcap_set_buffer_size(pd, Bflag); if (status != 0) error("%s: Can't set buffer size: %s", device, pcap_statustostr(status)); } #ifdef HAVE_PCAP_SET_TSTAMP_TYPE - if (gndo->ndo_jflag != -1) { - status = pcap_set_tstamp_type(pd, gndo->ndo_jflag); + if (jflag != -1) { + status = pcap_set_tstamp_type(pd, jflag); if (status < 0) error("%s: Can't set time stamp type: %s", device, pcap_statustostr(status)); @@ -1432,9 +1443,9 @@ main(int argc, char **argv) #endif /* !defined(HAVE_PCAP_CREATE) && defined(WIN32) */ if (Lflag) show_dlts_and_exit(device, pd); - if (gndo->ndo_dlt >= 0) { + if (ndo->ndo_dlt >= 0) { #ifdef HAVE_PCAP_SET_DATALINK - if (pcap_set_datalink(pd, gndo->ndo_dlt) < 0) + if (pcap_set_datalink(pd, ndo->ndo_dlt) < 0) error("%s", pcap_geterr(pd)); #else /* @@ -1442,21 +1453,21 @@ main(int argc, char **argv) * data link type, so we only let them * set it to what it already is. */ - if (gndo->ndo_dlt != pcap_datalink(pd)) { + if (ndo->ndo_dlt != pcap_datalink(pd)) { error("%s is not one of the DLTs supported by this device\n", - gndo->ndo_dltname); + ndo->ndo_dltname); } #endif (void)fprintf(stderr, "%s: data link type %s\n", - program_name, gndo->ndo_dltname); + program_name, ndo->ndo_dltname); (void)fflush(stderr); } i = pcap_snapshot(pd); - if (gndo->ndo_snaplen < i) { - warning("snaplen raised from %d to %d", gndo->ndo_snaplen, i); - gndo->ndo_snaplen = i; + if (ndo->ndo_snaplen < i) { + warning("snaplen raised from %d to %d", ndo->ndo_snaplen, i); + ndo->ndo_snaplen = i; } - if(gndo->ndo_fflag != 0) { + if(ndo->ndo_fflag != 0) { if (pcap_lookupnet(device, &localnet, &netmask, ebuf) < 0) { warning("foreign (-f) flag used but: %s", ebuf); } @@ -1468,7 +1479,7 @@ main(int argc, char **argv) else cmdbuf = copy_argv(&argv[optind]); - if (pcap_compile(pd, &fcode, cmdbuf, gndo->ndo_Oflag, netmask) < 0) + if (pcap_compile(pd, &fcode, cmdbuf, Oflag, netmask) < 0) error("%s", pcap_geterr(pd)); if (dflag) { bpf_dump(&fcode, dflag); @@ -1476,7 +1487,7 @@ main(int argc, char **argv) free(cmdbuf); exit(0); } - init_print(localnet, netmask, timezone_offset); + init_print(ndo, localnet, netmask, timezone_offset); #ifndef WIN32 (void)setsignal(SIGPIPE, cleanup); @@ -1565,8 +1576,8 @@ main(int argc, char **argv) error("malloc of dumpinfo.CurrentFileName"); /* We do not need numbering for dumpfiles if Cflag isn't set. */ - if (gndo->ndo_Cflag != 0) - MakeFilename(dumpinfo.CurrentFileName, WFileName, 0, gndo->ndo_WflagChars); + if (Cflag != 0) + MakeFilename(dumpinfo.CurrentFileName, WFileName, 0, WflagChars); else MakeFilename(dumpinfo.CurrentFileName, WFileName, 0, 0); @@ -1578,7 +1589,7 @@ main(int argc, char **argv) */ capng_update( CAPNG_DROP, - (gndo->ndo_Cflag || gndo->ndo_Gflag ? 0 : CAPNG_PERMITTED) + (Cflag || Gflag ? 0 : CAPNG_PERMITTED) | CAPNG_EFFECTIVE, CAP_DAC_OVERRIDE ); @@ -1589,7 +1600,7 @@ main(int argc, char **argv) #ifdef HAVE_CAPSICUM set_dumper_capsicum_rights(p); #endif - if (gndo->ndo_Cflag != 0 || gndo->ndo_Gflag != 0) { + if (Cflag != 0 || Gflag != 0) { #ifdef HAVE_CAPSICUM dumpinfo.WFileName = strdup(basename(WFileName)); dumpinfo.dirfd = open(dirname(WFileName), @@ -1620,12 +1631,12 @@ main(int argc, char **argv) pcap_userdata = (u_char *)p; } #ifdef HAVE_PCAP_DUMP_FLUSH - if (gndo->ndo_Uflag) + if (Uflag) pcap_dump_flush(p); #endif } else { type = pcap_datalink(pd); - printinfo = get_print_info(type); + printinfo = get_print_info(ndo, type); callback = print_packet; pcap_userdata = (u_char *)&printinfo; } @@ -1639,7 +1650,7 @@ main(int argc, char **argv) (void)setsignal(SIGNAL_REQ_INFO, requestinfo); #endif - if (gndo->ndo_vflag > 0 && WFileName) { + if (ndo->ndo_vflag > 0 && WFileName) { /* * When capturing to a file, "-v" means tcpdump should, * every 10 secodns, "v"erbosely report the number of @@ -1662,7 +1673,7 @@ main(int argc, char **argv) * to a file from the -V file). Print a message to * the standard error on UN*X. */ - if (!gndo->ndo_vflag && !WFileName) { + if (!ndo->ndo_vflag && !WFileName) { (void)fprintf(stderr, "%s: verbose output suppressed, use -v or -vv for full protocol decode\n", program_name); @@ -1672,18 +1683,18 @@ main(int argc, char **argv) dlt_name = pcap_datalink_val_to_name(dlt); if (dlt_name == NULL) { (void)fprintf(stderr, "listening on %s, link-type %u, capture size %u bytes\n", - device, dlt, gndo->ndo_snaplen); + device, dlt, ndo->ndo_snaplen); } else { (void)fprintf(stderr, "listening on %s, link-type %s (%s), capture size %u bytes\n", device, dlt_name, - pcap_datalink_val_to_description(dlt), gndo->ndo_snaplen); + pcap_datalink_val_to_description(dlt), ndo->ndo_snaplen); } (void)fflush(stderr); } #endif /* WIN32 */ #ifdef HAVE_CAPSICUM - cansandbox = (gndo->ndo_nflag && VFileName == NULL && zflag == NULL); + cansandbox = (ndo->ndo_nflag && VFileName == NULL && zflag == NULL); if (cansandbox && cap_enter() < 0 && errno != ENOSYS) error("unable to enter the capability mode"); #endif /* HAVE_CAPSICUM */ @@ -1745,7 +1756,7 @@ main(int argc, char **argv) new_dlt = pcap_datalink(pd); if (WFileName && new_dlt != dlt) error("%s: new dlt does not match original", RFileName); - printinfo = get_print_info(new_dlt); + printinfo = get_print_info(ndo, new_dlt); dlt_name = pcap_datalink_val_to_name(new_dlt); if (dlt_name == NULL) { fprintf(stderr, "reading from file %s, link-type %u\n", @@ -1756,7 +1767,7 @@ main(int argc, char **argv) RFileName, dlt_name, pcap_datalink_val_to_description(new_dlt)); } - if (pcap_compile(pd, &fcode, cmdbuf, gndo->ndo_Oflag, netmask) < 0) + if (pcap_compile(pd, &fcode, cmdbuf, Oflag, netmask) < 0) error("%s", pcap_geterr(pd)); if (pcap_setfilter(pd, &fcode) < 0) error("%s", pcap_geterr(pd)); @@ -1925,7 +1936,7 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s * first thereby cancelling the Cflag boundary (since the file should * be 0). */ - if (gndo->ndo_Gflag != 0) { + if (Gflag != 0) { /* Check if it is time to rotate */ time_t t; @@ -1937,16 +1948,16 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s /* If the time is greater than the specified window, rotate */ - if (t - gndo->ndo_Gflag_time >= gndo->ndo_Gflag) { + if (t - Gflag_time >= Gflag) { #ifdef HAVE_CAPSICUM FILE *fp; int fd; #endif /* Update the Gflag_time */ - gndo->ndo_Gflag_time = t; + Gflag_time = t; /* Update Gflag_count */ - gndo->ndo_Gflag_count++; + Gflag_count++; /* * Close the current file and open a new one. */ @@ -1962,9 +1973,9 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s * Check to see if we've exceeded the Wflag (when * not using Cflag). */ - if (gndo->ndo_Cflag == 0 && gndo->ndo_Wflag > 0 && gndo->ndo_Gflag_count >= gndo->ndo_Wflag) { + if (Cflag == 0 && Wflag > 0 && Gflag_count >= Wflag) { (void)fprintf(stderr, "Maximum file limit reached: %d\n", - gndo->ndo_Wflag); + Wflag); exit(0); /* NOTREACHED */ } @@ -1979,16 +1990,16 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s * so multiple files would end with 1,2,3 in the filename. * The counting is handled with the -C flow after this. */ - gndo->ndo_Cflag_count = 0; + Cflag_count = 0; /* * This is always the first file in the Cflag * rotation: e.g. 0 * We also don't need numbering if Cflag is not set. */ - if (gndo->ndo_Cflag != 0) + if (Cflag != 0) MakeFilename(dump_info->CurrentFileName, dump_info->WFileName, 0, - gndo->ndo_WflagChars); + WflagChars); else MakeFilename(dump_info->CurrentFileName, dump_info->WFileName, 0, 0); @@ -2030,12 +2041,12 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s * larger than Cflag - the last packet written to the * file could put it over Cflag. */ - if (gndo->ndo_Cflag != 0) { + if (Cflag != 0) { long size = pcap_dump_ftell(dump_info->p); if (size == -1) error("ftell fails on output file"); - if (size > gndo->ndo_Cflag) { + if (size > Cflag) { #ifdef HAVE_CAPSICUM FILE *fp; int fd; @@ -2053,17 +2064,17 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s if (zflag != NULL) compress_savefile(dump_info->CurrentFileName); - gndo->ndo_Cflag_count++; - if (gndo->ndo_Wflag > 0) { - if (gndo->ndo_Cflag_count >= gndo->ndo_Wflag) - gndo->ndo_Cflag_count = 0; + Cflag_count++; + if (Wflag > 0) { + if (Cflag_count >= Wflag) + Cflag_count = 0; } if (dump_info->CurrentFileName != NULL) free(dump_info->CurrentFileName); dump_info->CurrentFileName = (char *)malloc(PATH_MAX + 1); if (dump_info->CurrentFileName == NULL) error("dump_packet_and_trunc: malloc"); - MakeFilename(dump_info->CurrentFileName, dump_info->WFileName, gndo->ndo_Cflag_count, gndo->ndo_WflagChars); + MakeFilename(dump_info->CurrentFileName, dump_info->WFileName, Cflag_count, WflagChars); #ifdef HAVE_LIBCAP_NG capng_update(CAPNG_ADD, CAPNG_EFFECTIVE, CAP_DAC_OVERRIDE); capng_apply(CAPNG_SELECT_BOTH); @@ -2098,7 +2109,7 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s pcap_dump((u_char *)dump_info->p, h, sp); #ifdef HAVE_PCAP_DUMP_FLUSH - if (gndo->ndo_Uflag) + if (Uflag) pcap_dump_flush(dump_info->p); #endif @@ -2116,7 +2127,7 @@ dump_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp) pcap_dump(user, h, sp); #ifdef HAVE_PCAP_DUMP_FLUSH - if (gndo->ndo_Uflag) + if (Uflag) pcap_dump_flush((pcap_dumper_t *)user); #endif |