Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Jun 2000 18:06:15 -0400 (EDT)
From:      Mikhail Teterin <mi@privatelabs.com>
To:        FreeBSD-gnats-submit@freebsd.org
Cc:        luigi@iet.unipi.it
Subject:   kern/19551: panic when enabling bridge_ipfw
Message-ID:  <200006272206.SAA88013@misha.privatelabs.com>

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

>Number:         19551
>Category:       kern
>Synopsis:       panic when enabling bridge_ipfw
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jun 27 15:10:04 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Mikhail Teterin
>Release:        FreeBSD 4.0-STABLE i386
>Organization:
Virtual Estates, Inc.
>Environment:

	The   machine  has   3   network   cards  (82c169   PNIC
	10/100BaseTX -- dc driver). Two of them are parts of the
	bridge. One  of the two (dc0)  has no IP address  of its
	own  -- it  plugs directly  into the  router. The  other
	(dc2)  connects  to our  office  LAN.  dc1 is  currently
	unused.

>Description:

	The bridging is enabled as follows:
		sysctl -w net.link.ether.bridge_cfg=dc0:1,dc2:1
		sysctl -w net.link.ether.bridge=1
		sysctl -w net.link.ether.bridge_ipfw=1

	With the kernel  built from April 27  sources, the setup
	works fine.

	With todays  kernel (and a  week old kernel)  the system
	panics when bridge_ipfw is  enabled (commenting the line
	out stops the panic, but disables the firewall).

	The  crash happens  in  sys/netinet/ip_icmp.c, where  on
	line 633, where the NULL pointer is referenced:

(kgdb) l
627		/*
628		 * The following happens if the packet was not addressed to us,
629		 * and was received on an interface with no IP address.
630		 */
631		f (ia == (struct in_ifaddr *)0)
632			ia = in_ifaddrhead.tqh_first;
633		t = IA_SIN(ia)->sin_addr;
634		ip->ip_src = t;
635		ip->ip_ttl = MAXTTL;
636
(kgdb) p ia
$2 = (struct in_ifaddr *) 0x0

	The full stack is

#0  boot (howto=256) at /opt/src/sys/kern/kern_shutdown.c:302
#1  0xc0138358 in poweroff_wait (junk=0xc025842f, howto=0)
    at /opt/src/sys/kern/kern_shutdown.c:552
#2  0xc0226ed2 in trap_fatal (frame=0xc025e4fc, eva=76)
    at /opt/src/sys/i386/i386/trap.c:927
#3  0xc0226b91 in trap_pfault (frame=0xc025e4fc, usermode=0, eva=76)
    at /opt/src/sys/i386/i386/trap.c:820
#4  0xc022677b in trap (frame={tf_fs = -1071579120, tf_es = 16, tf_ds = 16, 
      tf_edi = 20, tf_esi = -1067166976, tf_ebp = -1071258284, 
      tf_isp = -1071258328, tf_ebx = -1067166756, tf_edx = 0, 
      tf_ecx = -1067166976, tf_eax = 0, tf_trapno = 12, tf_err = 0, 
      tf_eip = -1072156088, tf_cs = 8, tf_eflags = 66118, 
      tf_esp = -1067166756, tf_ss = -1067166976})
    at /opt/src/sys/i386/i386/trap.c:426
#5  0xc0183248 in icmp_reflect (m=0xc0645300)
    at /opt/src/sys/netinet/ip_icmp.c:632
#6  0xc0182ca8 in icmp_error (n=0xc0645200, type=3, code=3, dest=0, 
    destifp=0x0) at /opt/src/sys/netinet/ip_icmp.c:220
#7  0xc018f1ee in udp_input (m=0xc0645200, off=20, proto=17)
    at /opt/src/sys/netinet/udp_usrreq.c:358
#8  0xc0183e93 in ip_input (m=0xc0645200)
    at /opt/src/sys/netinet/ip_input.c:743
#9  0xc0183f0b in ipintr () at /opt/src/sys/netinet/ip_input.c:771
#10 0xc021c875 in swi_net_next ()

>How-To-Repeat:

	See environment. This can be  reproduced at will even in
	single user mode by simply enabling bridging:
		sysctl -w net.link.ether.bridge=1
	and requesting the bridged  packet be routed through the
	firewall rules:
		sysctl -w net.link.ether.bridge_ipfw=1
	The interfaces don't  need to be configured  for this to
	happen...

>Fix:
	I wish I knew :(

>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?200006272206.SAA88013>