summaryrefslogtreecommitdiff
path: root/pcap-common.h
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2017-06-01 13:44:32 -0700
committerGuy Harris <guy@alum.mit.edu>2017-06-01 13:44:32 -0700
commit1a6b088a88886eac782008f37a7219a32b86da45 (patch)
tree12de58432416eb4aa4761ca65272e36ced564db1 /pcap-common.h
parent28f1b2074cba0c89c3ccbcf0d359f86d6519a73e (diff)
downloadlibpcap-1a6b088a88886eac782008f37a7219a32b86da45.tar.gz
Allow bigger D-Bus packets, but don't allocate big buffers initially.
D-Bus packets can be up to 128MB in size, but don't allocate 128MB for every pcap_t, or even every D-Bus pcap_t. Start out with enough to handle 2KB packets - that should be enough for most regular network packets - and grow the buffer as necessary to handle packets up to the snapshot length. Treat packets bigger than the maximum snapshot length for the link-layer type as errors; we continue to use MAXIMUM_SNAPLEN (256KB) for most link-layer header types, but use 128MB for DLT_DBUS, as per the above. If the snapshot length in the file header or IDB is 0, or is > 2^31-1, use the maximum snapshot length for the link-layer header type as the snapshot length. The check for 2^31-1 is there because the current API for snapshot lengths returns an int, and thus can't handle snapshot lengths > 2^31-1, even though the field is actually unsigned.
Diffstat (limited to 'pcap-common.h')
-rw-r--r--pcap-common.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/pcap-common.h b/pcap-common.h
index 6ac5bcd2..b8d1f314 100644
--- a/pcap-common.h
+++ b/pcap-common.h
@@ -1,3 +1,25 @@
+/*
+ * Copyright (c) 1993, 1994, 1995, 1996, 1997
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code distributions
+ * retain the above copyright notice and this paragraph in its entirety, (2)
+ * distributions including binary code include the above copyright notice and
+ * this paragraph in its entirety in the documentation or other materials
+ * provided with the distribution, and (3) all advertising materials mentioning
+ * features or use of this software display the following acknowledgement:
+ * ``This product includes software developed by the University of California,
+ * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+ * the University nor the names of its contributors may be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * pcap-common.h - common code for pcap and pcap-ng files
+ */
/*
* We use the "receiver-makes-right" approach to byte order,
@@ -23,3 +45,5 @@ extern int linktype_to_dlt(int linktype);
extern void swap_pseudo_headers(int linktype, struct pcap_pkthdr *hdr,
u_char *data);
+
+extern u_int max_snaplen_for_dlt(int dlt);