From owner-freebsd-bugs@FreeBSD.ORG Fri Mar 18 21:10:10 2011 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 82BCD106564A for ; Fri, 18 Mar 2011 21:10:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 43D588FC13 for ; Fri, 18 Mar 2011 21:10:10 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p2ILAAks071970 for ; Fri, 18 Mar 2011 21:10:10 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p2ILAAeg071969; Fri, 18 Mar 2011 21:10:10 GMT (envelope-from gnats) Resent-Date: Fri, 18 Mar 2011 21:10:10 GMT Resent-Message-Id: <201103182110.p2ILAAeg071969@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Hans-Werner Braun Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E457C1065675 for ; Fri, 18 Mar 2011 21:00:28 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id D6F2A8FC24 for ; Fri, 18 Mar 2011 21:00:28 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p2IL0Soi067591 for ; Fri, 18 Mar 2011 21:00:28 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id p2IL0SvJ067590; Fri, 18 Mar 2011 21:00:28 GMT (envelope-from nobody) Message-Id: <201103182100.p2IL0SvJ067590@red.freebsd.org> Date: Fri, 18 Mar 2011 21:00:28 GMT From: Hans-Werner Braun To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: kern/155680: problems with multicast X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Mar 2011 21:10:10 -0000 >Number: 155680 >Category: kern >Synopsis: problems with multicast >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Mar 18 21:10:09 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Hans-Werner Braun >Release: 8.2 >Organization: UCSD/HPWREN >Environment: FreeBSD mcr.hpwren.ucsd.edu 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Feb 17 02:41:51 UTC 2011 root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64 >Description: I am having the samae multicast problems with 8.2 that I had with 8.1 in that (as confirmed by tcpdump) the group-join request does not get sent out. It started with 8.1, earlier releases did not have that problem. Upon further testing, this problem appears to be specific to the "re0" interface. It works with an "fxp0" interface, however, it seems to hang the fxp0 interface for sever seconds, alongside "link state changed to DOWN/UP" events. I do not see any problem with msk and ale interfaces, however, those are in laptops, not PCI cards. Can you recommend a PCI-based product that works? >How-To-Repeat: #!/usr/local/bin/perl use Socket; $PORT=$ARGV[0]; $PATTERN=$ARGV[1]; $SERVER=$ARGV[2]; if($PORT eq ""){ printf"Syntax: mcaststream.pl port {pattern} {multicastaddress}\n"; exit; } if($SERVER eq ""){$SERVER="233.7.117.79";} $|=1; $IP_ADD_MEMBERSHIP=12; ($name, $aliases, $type, $len, $SERVERIP) = gethostbyname($SERVER); $sockaddr = 'S n a4 x8'; socket(S, PF_INET,SOCK_DGRAM,UDP_PROTO)||die("$!"); setsockopt(S, SOL_SOCKET, SO_REUSEPORT, 1)||die("$!"); $us = pack($sockaddr, 2, $PORT, pack("C4", 0,0,0,0)); bind(S, $us)||die("$!"); setsockopt(S, 0, $IP_ADD_MEMBERSHIP, $SERVERIP."\0\0\0\0")||die("$!"); while($theiraddr=recv(S,$BUF,1024,0)){ ($junk, $junk, $sourceaddr, $junk) = unpack($sockaddr, $theiraddr); $theirip=join('.',unpack('C4', $sourceaddr)); if($BUF =~ $PATTERN){ printf"$theirip\t$BUF"; } } >Fix: Only fix I know is not to use an re or fxp interface, but I am not sure what is a good PCI choice there. >Release-Note: >Audit-Trail: >Unformatted: