From owner-freebsd-current@FreeBSD.ORG Sat Jul 18 18:56:57 2009 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 65B1D106564A for ; Sat, 18 Jul 2009 18:56:57 +0000 (UTC) (envelope-from pieter@degoeje.nl) Received: from smtp.utwente.nl (smtp2.utsp.utwente.nl [130.89.2.9]) by mx1.freebsd.org (Postfix) with ESMTP id DFC9C8FC16 for ; Sat, 18 Jul 2009 18:56:56 +0000 (UTC) (envelope-from pieter@degoeje.nl) Received: from nox.student.utwente.nl (nox.student.utwente.nl [130.89.165.91]) by smtp.utwente.nl (8.12.10/SuSE Linux 0.7) with ESMTP id n6IIulFN014523 for ; Sat, 18 Jul 2009 20:56:47 +0200 From: Pieter de Goeje To: freebsd-current@freebsd.org Date: Sat, 18 Jul 2009 20:56:47 +0200 User-Agent: KMail/1.11.4 (FreeBSD/8.0-BETA2; KDE/4.2.4; amd64; ; ) MIME-Version: 1.0 Content-Type: Text/Plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200907182056.47383.pieter@degoeje.nl> X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact icts.servicedesk@utwente.nl for more information. X-UTwente-MailScanner: Found to be clean X-UTwente-MailScanner-From: pieter@degoeje.nl X-Spam-Status: No Subject: Sending multicast datagrams broken (regression) X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jul 2009 18:56:57 -0000 I'm observing that multicast IPv4 UDP datagrams sent from the latest 8.0-BETA2 are being discarded. The code below used to work with 7.2. Sender Receiver Result ---------------------- 8.0 8.0 Broken, but loop back traffic works 8.0 7.2 Broken 7.2 8.0 Works Oddly enough, when I run tcpdump on a 8.0 sender, it shows packets being sent, but on the receiver tcpdump shows no activity whatsoever. The receiver was properly registering it's membership (which was verified with ifmcstat). Testing was done on three hosts, two of which are running 8.0 and one 7.2. The hosts are connected using a single switch. I've tried if_em and if_re NICs, both with the same results. Kind regards, Pieter de Goeje PS. I can post complete code if necessary. ---- fd is initialized with a freshly created AF_INET datagram socket, maddr contains the group address (239.255.9.9 in the test case, but I've tried multiple different addresses). void doit(int fd, in_addr_t maddr, int port) { struct sockaddr_in addr; int cnt; struct ip_mreq mreq; char message[] = "Hello"; memset(&addr, 0, sizeof(addr)); addr.sin_family=AF_INET; addr.sin_addr.s_addr=maddr; addr.sin_port=htons(port); u_char ttl = 2; if(setsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)) == -1) { err(1, "setsockopt"); } for(;;) { if(sendto(fd, message, sizeof(message) - 1, 0, (struct sockaddr *)&addr, sizeof(addr)) == -1) { err(1, "sendto"); } sleep(1); } }