diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2018-10-08 11:41:33 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2018-10-08 20:20:43 +0200 |
commit | 168949e119104ca1c916b3e3593ef11235380e1f (patch) | |
tree | 376a7e05fec90435cd1fe3a7022d7a06eb28b0fa | |
parent | db7be4463239a9945ed307d4af55e467a78db984 (diff) |
client: Set snaplen to MAXIMUM_SNAPLEN
Despite this value not being exported publicly, the truth is that
tcpdump and wireshark nowadays avoid processing any file with snaplen
bigger than this value:
"tcpdump: pcap_loop: invalid packet capture length 861244, bigger than
snaplen of 262144"
It also fails to set snaplen to values bigger than that:
"tcpdump -s 262145" --> "tcpdump: invalid snaplen 262145"
pcapfix also warns about wrong packet length if bigger than same value
(defined as PCAP_MAX_SNAPLEN there).
MAXIMUM_SPANPLEN is defined in tcpdump's netdissect.h and libpcap's
pcap-int.h. It is also defined as WTAP_MAX_PACKET_SIZE in
wireshark/wiretap/wtap.h (this one being the only publicly available).
Change-Id: Ib7449d5aba9da342c150704ebd0e1f09e7f7276c
-rw-r--r-- | include/osmo-pcap/common.h | 5 | ||||
-rw-r--r-- | src/osmo_client_network.c | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/include/osmo-pcap/common.h b/include/osmo-pcap/common.h index 27fd514..5d977f1 100644 --- a/include/osmo-pcap/common.h +++ b/include/osmo-pcap/common.h @@ -58,4 +58,9 @@ extern const char *osmopcap_copyright; extern int osmopcap_go_parent(struct vty *vty); extern int osmopcap_is_config_node(struct vty *vty, int node); +/* defined in libpcap's pcap-int.h, which is not public */ +#ifndef MAXIMUM_SNAPLEN +#define MAXIMUM_SNAPLEN 262144 +#endif + #endif diff --git a/src/osmo_client_network.c b/src/osmo_client_network.c index 3d741a8..e900ef4 100644 --- a/src/osmo_client_network.c +++ b/src/osmo_client_network.c @@ -42,7 +42,6 @@ #include <string.h> #include <unistd.h> - static void _osmo_client_connect(void *_data) { osmo_client_connect((struct osmo_pcap_client_conn *) _data); @@ -257,7 +256,7 @@ void osmo_client_send_link(struct osmo_pcap_client_conn *conn) hdr->version_minor = 4; hdr->thiszone = 0; hdr->sigfigs = 0; - hdr->snaplen = UINT_MAX; + hdr->snaplen = MAXIMUM_SNAPLEN; hdr->linktype = pcap_datalink(conn->client->handle); write_data(conn, msg); |