Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Dec 2005 11:51:18 +0100
From:      Meno Abels <meno.abels@adviser.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        meno.abels@adviser.com
Subject:   kern/90973: [net] [patch] if_bridge does not handle arp for own addresses
Message-ID:  <20051227105119.2B39143D53@mx1.FreeBSD.org>
Resent-Message-ID: <200512271100.jBRB0CaB029499@freefall.freebsd.org>

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

>Number:         90973
>Category:       kern
>Synopsis:       [net] [patch] if_bridge does not handle arp for own addresses
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Dec 27 11:00:12 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Meno Abels
>Release:        FreeBSD 6.0-RELEASE i386
>Organization:
Adviser COM
>Environment:
System: FreeBSD sshd 6.0-RELEASE FreeBSD 6.0-RELEASE #1: Thu Jul 28 23:45:40 MEST 2005 root@tiger.de.20six.net:/jails/tiger/usr/obj/jails/tiger/usr/src_5.4/sys/GENERIC i386

>Description:
	If you have for example the following config:
		lnc1: 192.168.100.1
		tap1: 
	and these interfaces are bridged:
		ifconfig bridge0 addm lnc1 addm tap1 up
	If you now send packets over tap1 to 192.168.100.1 the arp lookup is not answered by 
	bridged host.
	
>How-To-Repeat:
	ping and arp -d
>Fix:
	In if_ether.c the detection of the bridge works on every bridge interfaces but
        not for the bridged(if_bridge) interface himself. This dectection is only required if
	there is a cloned bridge interface. So I added these:

--- sys/netinet/if_ether.c      7 Oct 2005 01:51:29 -0000       1.137.2.4
+++ sys/netinet/if_ether.c      27 Dec 2005 10:33:31 -0000
@@ -607,7 +607,7 @@
        int carp_match = 0;
 #endif
 
-       if (do_bridge || ifp->if_bridge)
+       if (do_bridge || ifp->if_bridge || ifp->if_type == IFT_BRIDGE)
                bridged = 1;
 
        req_len = arphdr_len2(ifp->if_addrlen, sizeof(struct in_addr));


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



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