Skip site navigation (1)Skip section navigation (2)
Date:      7 Dec 2000 19:46:27 -0000
From:      fujiwara@rcac.tdi.co.jp
To:        FreeBSD-gnats-submit@freebsd.org
Cc:        ohm@rcac.tdi.co.jp, fujiwara@rcac.tdi.co.jp
Subject:   misc/23362: tcpdump cannot work on CISCO_HDLC encoded link
Message-ID:  <20001207194627.1724.qmail@f.rcac.tdi.co.jp>
Resent-Message-ID: <200012071950.eB7Jo1879793@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         23362
>Category:       misc
>Synopsis:       tcpdump wrong on sppp CISCO_HDLC encoded link
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Dec 07 11:50:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Kazunori_Fujiwara
>Release:        FreeBSD 5.0-CURRENT i386, 4.*, 3.*
>Organization:
TDI Co, LTD.
>Environment:
System: FreeBSD spacecraft.f.rcac.tdi.co.jp 5.0-CURRENT FreeBSD 5.0-CURRENT #2: Mon Dec 4 04:46:08 JST 2000 fujiwara@spacecraft.f.rcac.tdi.co.jp:/usr/src/sys/compile/SPACECRAFT i386

	FreeBSD 3/4/5, with/without kame

>Description:
	FreeBSD's bpf doesnot distingish PPP and CISCO_HDLC.
	tcpdump on CISCO_HDLC link with some expressions,
	tcpdump don't catch any bpf data.

>How-To-Repeat:

	use RISCom sr driver with CISCO_HDLC mode.

>Fix:

	Support DLT_CHDLC with BPF and sr driver,
	or catch CISCO_HDLC packet when DLT_PPP.

Index: /usr/src/contrib/libpcap/gencode.c
===================================================================
RCS file: /FreeBSD-CVS/src/contrib/libpcap/gencode.c,v
retrieving revision 1.8
diff -u -r1.8 gencode.c
--- /usr/src/contrib/libpcap/gencode.c	2000/03/04 23:57:39	1.8
+++ /usr/src/contrib/libpcap/gencode.c	2000/12/07 19:25:00
@@ -661,11 +661,19 @@
 		return gen_false();
 
 	case DLT_PPP:
-		if (proto == ETHERTYPE_IP)
-			proto = PPP_IP;			/* XXX was 0x21 */
+		if (proto == ETHERTYPE_IP) {
+			b0 = gen_cmp(off_linktype, BPF_H, PPP_IP);
+			b1 = gen_cmp(off_linktype, BPF_H, proto);
+			gen_or(b0, b1);
+			return b1;
+		}
 #ifdef INET6
-		else if (proto == ETHERTYPE_IPV6)
-			proto = PPP_IPV6;
+		if (proto == ETHERTYPE_IPV6) {
+			b0 = gen_cmp(off_linktype, BPF_H, PPP_IPV6);
+			b1 = gen_cmp(off_linktype, BPF_H, proto);
+			gen_or(b0, b1);
+			return b1;
+		}
 #endif
 		break;
 

>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001207194627.1724.qmail>