From owner-cvs-src-old@FreeBSD.ORG Tue Apr 14 16:45:28 2009 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C73ED106564A for ; Tue, 14 Apr 2009 16:45:28 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B40968FC21 for ; Tue, 14 Apr 2009 16:45:28 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n3EGjSj0095021 for ; Tue, 14 Apr 2009 16:45:28 GMT (envelope-from emaste@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n3EGjSoZ095020 for cvs-src-old@freebsd.org; Tue, 14 Apr 2009 16:45:28 GMT (envelope-from emaste@repoman.freebsd.org) Message-Id: <200904141645.n3EGjSoZ095020@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to emaste@repoman.freebsd.org using -f From: Ed Maste Date: Tue, 14 Apr 2009 16:45:17 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: RELENG_6 Subject: cvs commit: src/sys/netinet ip_divert.c ip_output.c X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Apr 2009 16:45:29 -0000 emaste 2009-04-14 16:45:17 UTC FreeBSD src repository Modified files: (Branch: RELENG_6) sys/netinet ip_divert.c ip_output.c Log: SVN rev 191063 on 2009-04-14 16:45:17Z by emaste MFC r171746 by csjp Summary: - We disallow multicast operations on divert sockets. It really doesn't make semantic sense to allow this, since typically you would set multicast parameters on multicast end points. NOTE: As a part of this change, we actually dis-allow multicast options on any socket that IS a divert socket OR IS NOT a SOCK_RAW or SOCK_DGRAM family - We check to see if there are any socket options that have been specified on the socket, and if there was (which is very un-common and also probably doesnt make sense to support) we duplicate the mbuf carrying the options. - We then drop the INP/INFO locks over the call to ip_output(). It should be noted that since we no longer support multicast operations on divert sockets and we have duplicated any socket options, we no longer need the reference to the pcb to be coherent. - Finally, we replaced the call to ip_input() to use netisr queuing. This should remove the recursive entry into the IP stack from divert. (The ip_output.c changes come from in_mcast.c in head.) Revision Changes Path 1.113.2.4 +45 -10 src/sys/netinet/ip_divert.c 1.242.2.22 +20 -0 src/sys/netinet/ip_output.c