diff options
author | Guy Harris <guy@alum.mit.edu> | 2017-06-01 13:44:32 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2017-06-01 13:44:32 -0700 |
commit | 1a6b088a88886eac782008f37a7219a32b86da45 (patch) | |
tree | 12de58432416eb4aa4761ca65272e36ced564db1 /pcap-common.h | |
parent | 28f1b2074cba0c89c3ccbcf0d359f86d6519a73e (diff) |
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.h | 24 |
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); |