From owner-freebsd-net@FreeBSD.ORG Sun Oct 10 15:11:39 2004 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A034416A4CE; Sun, 10 Oct 2004 15:11:39 +0000 (GMT) Received: from fledge.watson.org (fledge.watson.org [204.156.12.50]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4431A43D2F; Sun, 10 Oct 2004 15:11:39 +0000 (GMT) (envelope-from robert@fledge.watson.org) Received: from fledge.watson.org (localhost [127.0.0.1]) by fledge.watson.org (8.13.1/8.13.1) with ESMTP id i9AFA8JI026884; Sun, 10 Oct 2004 11:10:08 -0400 (EDT) (envelope-from robert@fledge.watson.org) Received: from localhost (robert@localhost)i9AF9wIg026875; Sun, 10 Oct 2004 11:10:08 -0400 (EDT) (envelope-from robert@fledge.watson.org) Date: Sun, 10 Oct 2004 11:09:58 -0400 (EDT) From: Robert Watson X-Sender: robert@fledge.watson.org To: swp@swp.pp.ru In-Reply-To: <20041010065909.GA8177@swp.bspu.secna.ru> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: freebsd-net@freebsd.org cc: csjp@freebsd.org Subject: Re: why required root privileges to set multicast options now? X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Oct 2004 15:11:39 -0000 On Sun, 10 Oct 2004 swp@swp.pp.ru wrote: > FreeBSD 5.3-BETA7 Sun Oct 10 18:50:14 OMSST 2004 > > ospfd (net/quagga from ports) run with credentials of quagga:quagga and > unable to set multicast options now. > > OSPF: can't setsockopt IP_ADD_MEMBERSHIP (AllSPFRouters): \ > Operation not permitted > OSPF: can't setsockopt IP_MULTICAST_LOOP(0): Operation not permitted > OSPF: can't setsockopt IP_MULTICAST_TTL(1): Operation not permitted > OSPF: can't setsockopt IP_MULTICAST_IF: Operation not permitted > > 5.2-CURRENT and 5.2.1 have no problem. This appears to have been introduced as a result of changes to permit root to bind raw sockets in jail. In particular, the likely control flow path to get the above errors was to perform setsockopt() on a UDP socket, which probaly works its way down to in_control() to ip_ctloutput(). This would also explain why sdr stopped working for me a little while ago (I figured it was a bad package build). I've CC'd Christian as he might have some insight into how to clean this up. Robert N M Watson FreeBSD Core Team, TrustedBSD Projects robert@fledge.watson.org Principal Research Scientist, McAfee Research