misc/149086: Generic multicast join failure in 8.1

Hans-Werner Braun hwb at ucsd.edu
Fri Jul 30 00:00:10 UTC 2010


>Number:         149086
>Category:       misc
>Synopsis:       Generic multicast join failure in 8.1
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jul 30 00:00:09 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Hans-Werner Braun
>Release:        8.1-RELEASE
>Organization:
UC San Diego
>Environment:
FreeBSD mcr.hpwren.ucsd.edu 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Thu Jul 29 09:50:21 PDT 2010     hwb at mcr.hpwren.ucsd.edu:/usr/src/sys/amd64/compile/MCR  amd64

>Description:
A perl program that I used in previous FreeBSD releases does not work any more. Specifically from tcpdump outputs it does not send the join request to the router. The program:

#!/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";
 }
}
>How-To-Repeat:
The above program sends no traffic out of the Ethernet interface (specifically the join request).
>Fix:


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


More information about the freebsd-bugs mailing list