dect
/
libpcap
Archived
13
0
Fork 0

From Daniele Orlandi <daniele@orlandi.com>: add support for capturing

LAPD frames with vISDN.
This commit is contained in:
guy 2006-01-22 20:12:09 +00:00
parent ecb745522b
commit f742f4b148
4 changed files with 23 additions and 4 deletions

View File

@ -23,6 +23,7 @@ Additional people who have contributed patches:
Chris G. Demetriou <cgd@netbsd.org>
Chris Lightfoot <cwrl@users.sourceforge.net>
Chris Pepper <pepper@mail.reppep.com>
Daniele Orlandi <daniele@orlandi.com>
Darren Reed <darrenr@reed.wattle.id.au>
David Kaelbling <drk@sgi.com>
David Young <dyoung@ojctech.com>

View File

@ -27,7 +27,7 @@
#ifndef lint
static const char rcsid[] _U_ =
"@(#) $Header: /tcpdump/master/libpcap/pcap-linux.c,v 1.110.2.8 2005-11-24 19:28:23 guy Exp $ (LBL)";
"@(#) $Header: /tcpdump/master/libpcap/pcap-linux.c,v 1.110.2.9 2006-01-22 20:12:09 guy Exp $ (LBL)";
#endif
/*
@ -1340,6 +1340,16 @@ static void map_arphrd_to_dlt(pcap_t *handle, int arptype, int cooked_ok)
//handle->md.cooked = 1;
break;
/* ARPHRD_LAPD is unofficial and randomly allocated, if reallocation
* is needed, please report it to <daniele@orlandi.com> */
#ifndef ARPHRD_LAPD
#define ARPHRD_LAPD 8445
#endif
case ARPHRD_LAPD:
/* Don't expect IP packet out of this interfaces... */
handle->linktype = DLT_LINUX_LAPD;
break;
default:
handle->linktype = -1;
break;
@ -1421,6 +1431,7 @@ live_open_new(pcap_t *handle, const char *device, int promisc,
if (handle->linktype == -1 ||
handle->linktype == DLT_LINUX_SLL ||
handle->linktype == DLT_LINUX_IRDA ||
handle->linktype == DLT_LINUX_LAPD ||
(handle->linktype == DLT_EN10MB &&
(strncmp("isdn", device, 4) == 0 ||
strncmp("isdY", device, 4) == 0))) {
@ -1474,7 +1485,8 @@ live_open_new(pcap_t *handle, const char *device, int promisc,
}
/* IrDA capture is not a real "cooked" capture,
* it's IrLAP frames, not IP packets. */
if (handle->linktype != DLT_LINUX_IRDA)
if (handle->linktype != DLT_LINUX_IRDA &&
handle->linktype != DLT_LINUX_LAPD)
handle->linktype = DLT_LINUX_SLL;
}

7
pcap.3
View File

@ -1,4 +1,4 @@
.\" @(#) $Header: /tcpdump/master/libpcap/Attic/pcap.3,v 1.64.2.8 2005-09-07 08:29:17 guy Exp $
.\" @(#) $Header: /tcpdump/master/libpcap/Attic/pcap.3,v 1.64.2.9 2006-01-22 20:12:10 guy Exp $
.\"
.\" Copyright (c) 1994, 1996, 1997
.\" The Regents of the University of California. All rights reserved.
@ -1079,6 +1079,11 @@ and type bytes.
Linux-IrDA packets, with a
.B DLT_LINUX_SLL
header followed by the IrLAP header.
.TP 5
.B DLT_LINUX_LAPD
LAPD (Q.921) frames, with a
.B DLT_LINUX_SLL
header captured via vISDN.
.RE
.PP
.B pcap_list_datalinks()

3
pcap.c
View File

@ -33,7 +33,7 @@
#ifndef lint
static const char rcsid[] _U_ =
"@(#) $Header: /tcpdump/master/libpcap/pcap.c,v 1.88.2.10 2006-01-22 18:25:14 gianluca Exp $ (LBL)";
"@(#) $Header: /tcpdump/master/libpcap/pcap.c,v 1.88.2.11 2006-01-22 20:12:10 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@ -354,6 +354,7 @@ static struct dlt_choice dlt_choices[] = {
DLT_CHOICE(DLT_ARCNET_LINUX, "Linux ARCNET"),
DLT_CHOICE(DLT_DOCSIS, "DOCSIS"),
DLT_CHOICE(DLT_LINUX_IRDA, "Linux IrDA"),
DLT_CHOICE(DLT_LINUX_LAPD, "Linux vISDN LAPD"),
DLT_CHOICE(DLT_IEEE802_11_RADIO_AVS, "802.11 plus AVS radio information header"),
DLT_CHOICE(DLT_SYMANTEC_FIREWALL, "Symantec Firewall"),
DLT_CHOICE(DLT_JUNIPER_ATM1, "Juniper ATM1 PIC"),