From owner-cvs-src@FreeBSD.ORG Sat Jul 7 00:54:47 2007 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6A49416A46C; Sat, 7 Jul 2007 00:54:47 +0000 (UTC) (envelope-from brian@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5AF3213C46E; Sat, 7 Jul 2007 00:54:47 +0000 (UTC) (envelope-from brian@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l670slSg007428; Sat, 7 Jul 2007 00:54:47 GMT (envelope-from brian@repoman.freebsd.org) Received: (from brian@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l670slr1007427; Sat, 7 Jul 2007 00:54:47 GMT (envelope-from brian) Message-Id: <200707070054.l670slr1007427@repoman.freebsd.org> From: Brian Somers Date: Sat, 7 Jul 2007 00:54:47 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: RELENG_6 Cc: Subject: cvs commit: src/sys/net if.c if_var.h src/sys/netinet in.c in_var.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Jul 2007 00:54:47 -0000 brian 2007-07-07 00:54:47 UTC FreeBSD src repository Modified files: (Branch: RELENG_6) sys/net if.c if_var.h sys/netinet in.c in_var.h Log: Fix a problem introduced in netinet/in.c 1.85.2.7 where in_ifdetach() calls in_delmulti_ifp(). The code now *really* deletes the elements in in_multihead for the ifp that's going away (rather than just decrementing the reference count). Previously we were left with inm and ifma structures containing bogus ifnet pointers after destroying an interface that had more than one IP4 assignment made to it in it's lifetime. I've also added a if_delmulti_ent() to make deleting known ifma structures possible rather than depending on if_findmulti() to end up finding the same thing. It will in fact always find the correct ifma *unless* the passed sockaddr has a bogus sa_len of zero. Finally, when adding a multicast address, we no longer increment the refcount (well, we do, but then we decrement it again). The refcount here is in fact bogus so hopefully readers will see that now. This code is going directly into -stable as it has been rewritten in -current and those changes are deemed too intrusive for -stable consumption right now. Reviewed by: bms Revision Changes Path 1.234.2.20 +32 -11 src/sys/net/if.c 1.98.2.8 +1 -0 src/sys/net/if_var.h 1.85.2.9 +28 -22 src/sys/netinet/in.c 1.53.2.5 +0 -1 src/sys/netinet/in_var.h