aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gencode.c14
-rw-r--r--pcap-bpf.h9
-rw-r--r--ppp.h5
-rw-r--r--savefile.c13
4 files changed, 37 insertions, 4 deletions
diff --git a/gencode.c b/gencode.c
index 16ef9e98..15ecda25 100644
--- a/gencode.c
+++ b/gencode.c
@@ -21,7 +21,7 @@
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/libpcap/gencode.c,v 1.207 2004-07-15 00:08:06 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/libpcap/gencode.c,v 1.208 2004-08-18 14:25:02 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -750,6 +750,7 @@ init_linktype(type)
return;
case DLT_PPP:
+ case DLT_PPP_WITHDIRECTION:
case DLT_C_HDLC: /* BSD/OS Cisco HDLC */
case DLT_PPP_SERIAL: /* NetBSD sync/async serial PPP */
off_linktype = 2;
@@ -1506,6 +1507,7 @@ gen_linktype(proto)
break;
case DLT_PPP:
+ case DLT_PPP_WITHDIRECTION:
case DLT_PPP_SERIAL:
case DLT_PPP_ETHER:
/*
@@ -5067,6 +5069,16 @@ gen_inbound(dir)
(bpf_int32)((dir == 0) ? PF_IN : PF_OUT));
break;
+ case DLT_PPP_WITHDIRECTION:
+ if (dir) {
+ /* match outgoing packets */
+ b0 = gen_cmp(0, BPF_B, PPP_WITHDIRECTION_OUT);
+ } else {
+ /* match incoming packets */
+ b0 = gen_cmp(0, BPF_B, PPP_WITHDIRECTION_IN);
+ }
+ break;
+
default:
bpf_error("inbound/outbound not supported on linktype %d",
linktype);
diff --git a/pcap-bpf.h b/pcap-bpf.h
index 49579887..c8c6a4e9 100644
--- a/pcap-bpf.h
+++ b/pcap-bpf.h
@@ -37,7 +37,7 @@
*
* @(#)bpf.h 7.1 (Berkeley) 5/7/91
*
- * @(#) $Header: /tcpdump/master/libpcap/pcap-bpf.h,v 1.21 2004-06-07 20:00:08 guy Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/libpcap/pcap-bpf.h,v 1.22 2004-08-18 14:25:01 hannes Exp $ (LBL)
*/
/*
@@ -510,6 +510,13 @@ struct bpf_version {
#define DLT_BACNET_MS_TP 165
/*
+ * another PPP variant as per request from Karsten Keil <kkeil@suse.de>
+ * the first byte of the PPP header (0xff03) is modified to accomodate
+ * the direction 0x00 = IN, 0x01 = OUT
+ */
+#define DLT_PPP_WITHDIRECTION 166
+
+/*
* The instruction encodings.
*/
/* instruction classes */
diff --git a/ppp.h b/ppp.h
index 6bd4d968..4eb9c9c3 100644
--- a/ppp.h
+++ b/ppp.h
@@ -1,4 +1,4 @@
-/* @(#) $Header: /tcpdump/master/libpcap/ppp.h,v 1.9 2004-06-16 08:20:28 hannes Exp $ (LBL) */
+/* @(#) $Header: /tcpdump/master/libpcap/ppp.h,v 1.10 2004-08-18 14:25:01 hannes Exp $ (LBL) */
/*
* Point to Point Protocol (PPP) RFC1331
*
@@ -18,6 +18,9 @@
#define PPP_ADDRESS 0xff /* The address byte value */
#define PPP_CONTROL 0x03 /* The control byte value */
+#define PPP_WITHDIRECTION_IN 0x00 /* non-standard for DLT_PPP_WITHDIRECTION */
+#define PPP_WITHDIRECTION_OUT 0x01 /* non-standard for DLT_PPP_WITHDIRECTION */
+
/* Protocol numbers */
#define PPP_IP 0x0021 /* Raw IP */
#define PPP_OSI 0x0023 /* OSI Network Layer */
diff --git a/savefile.c b/savefile.c
index 6821b2f8..dc89f243 100644
--- a/savefile.c
+++ b/savefile.c
@@ -30,7 +30,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/libpcap/savefile.c,v 1.108 2004-08-17 17:50:33 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/libpcap/savefile.c,v 1.109 2004-08-18 14:25:01 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -333,6 +333,14 @@ static const char rcsid[] _U_ =
*/
#define LINKTYPE_BACNET_MS_TP 165
+/*
+ * another PPP variant as per request from Karsten Keil <kkeil@suse.de>
+ * the first byte (0xff) of the PPP header (0xff03) is tweaked to accomodate
+ * the direction 0x00 = IN, 0x01 = OUT
+ */
+#define LINKTYPE_PPP_WITHDIRECTION 166
+
+
static struct linktype_map {
int dlt;
int linktype;
@@ -497,6 +505,9 @@ static struct linktype_map {
/* BACnet MS/TP */
{ DLT_BACNET_MS_TP, LINKTYPE_BACNET_MS_TP },
+ /* PPP with direction flag in the PPP header */
+ { DLT_PPP_WITHDIRECTION,LINKTYPE_PPP_WITHDIRECTION},
+
{ -1, -1 }
};