Rawshark: Add a memory limit (-m) option.
Add an option to rawshark that lets the user set a maximum memory limit. Change-Id: Ie102ee5f6ba5aec90a35bd63297184c7dc37662c Reviewed-on: https://code.wireshark.org/review/19911 Reviewed-by: Gerald Combs <gerald@wireshark.org>
This commit is contained in:
parent
c0d25e8a5d
commit
47ad059bd7
|
@ -10,6 +10,7 @@ S<[ B<-d> E<lt>encap:linktypeE<gt>|E<lt>proto:protonameE<gt> ]>
|
|||
S<[ B<-F> E<lt>field to displayE<gt> ]>
|
||||
S<[ B<-h> ]>
|
||||
S<[ B<-l> ]>
|
||||
S<[ B<-m> E<lt>bytesE<gt> ]>
|
||||
S<[ B<-n> ]>
|
||||
S<[ B<-N> E<lt>name resolving flagsE<gt> ]>
|
||||
S<[ B<-o> E<lt>preference settingE<gt> ] ...>
|
||||
|
@ -146,6 +147,11 @@ see the dissected data for a packet as soon as B<TShark> sees the
|
|||
packet and generates that output, rather than seeing it only when the
|
||||
standard output buffer containing that data fills up.
|
||||
|
||||
=item -m E<lt>memory limit bytesE<gt>
|
||||
|
||||
Limit rawshark's memory usage to the specified number of bytes. POSIX
|
||||
(non-Windows) only.
|
||||
|
||||
=item -n
|
||||
|
||||
Disable network object name resolution (such as hostname, TCP and UDP port
|
||||
|
|
24
rawshark.c
24
rawshark.c
|
@ -40,6 +40,11 @@
|
|||
#include <locale.h>
|
||||
#include <limits.h>
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GETOPT_H
|
||||
#include <getopt.h>
|
||||
#endif
|
||||
|
@ -191,6 +196,9 @@ print_usage(FILE *output)
|
|||
fprintf(output, " -d <encap:linktype>|<proto:protoname>\n");
|
||||
fprintf(output, " packet encapsulation or protocol\n");
|
||||
fprintf(output, " -F <field> field to display\n");
|
||||
#ifndef _WIN32
|
||||
fprintf(output, " -m virtual memory limit, in bytes \n");
|
||||
#endif
|
||||
fprintf(output, " -n disable all name resolution (def: all enabled)\n");
|
||||
fprintf(output, " -N <name resolve flags> enable specific name resolution(s): \"mnNtd\"\n");
|
||||
fprintf(output, " -p use the system's packet header format\n");
|
||||
|
@ -416,6 +424,8 @@ main(int argc, char *argv[])
|
|||
|
||||
#ifdef _WIN32
|
||||
WSADATA wsaData;
|
||||
#else
|
||||
struct rlimit limit;
|
||||
#endif /* _WIN32 */
|
||||
|
||||
char *gpf_path, *pf_path;
|
||||
|
@ -438,7 +448,7 @@ main(int argc, char *argv[])
|
|||
{0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
#define OPTSTRING_INIT "d:F:hlnN:o:pr:R:sS:t:v"
|
||||
#define OPTSTRING_INIT "d:F:hlm:nN:o:pr:R:sS:t:v"
|
||||
|
||||
static const char optstring[] = OPTSTRING_INIT;
|
||||
|
||||
|
@ -632,6 +642,18 @@ main(int argc, char *argv[])
|
|||
and the output buffer is only flushed when it fills up). */
|
||||
line_buffered = TRUE;
|
||||
break;
|
||||
#ifndef _WIN32
|
||||
case 'm':
|
||||
limit.rlim_cur = get_positive_int(optarg, "memory limit");
|
||||
limit.rlim_max = get_positive_int(optarg, "memory limit");
|
||||
|
||||
if(setrlimit(RLIMIT_AS, &limit) != 0)
|
||||
{
|
||||
cmdarg_err("setrlimit() returned error");
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case 'n': /* No name resolution */
|
||||
disable_name_resolution();
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue