>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     [email protected]:/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:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"

Reply via email to