kern/90973: [net] [patch] if_bridge does not handle arp for own
addresses
Meno Abels
meno.abels at adviser.com
Tue Dec 27 03:00:48 PST 2005
>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 at 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:
More information about the freebsd-bugs
mailing list