Date: Sat, 7 Jul 2007 00:54:47 +0000 (UTC) From: Brian Somers <brian@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/net if.c if_var.h src/sys/netinet in.c in_var.h Message-ID: <200707070054.l670slr1007427@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707070054.l670slr1007427>