kernel-ark/net
David L Stevens c9e3e8b695 [IPV6]: multicast join and misc
Here is a simplified version of the patch to fix a bug in IPv6
multicasting. It:

1) adds existence check & EADDRINUSE error for regular joins
2) adds an exception for EADDRINUSE in the source-specific multicast
        join (where a prior join is ok)
3) adds a missing/needed read_lock on sock_mc_list; would've raced
        with destroying the socket on interface down without
4) adds a "leave group" in the (INCLUDE, empty) source filter case.
        This frees unneeded socket buffer memory, but also prevents
        an inappropriate interaction among the 8 socket options that
        mess with this. Some would fail as if in the group when you
        aren't really.

Item #4 had a locking bug in the last version of this patch; rather than
removing the idev->lock read lock only, I've simplified it to remove
all lock state in the path and treat it as a direct "leave group" call for
the (INCLUDE,empty) case it covers. Tested on an MP machine. :-)

Much thanks to HoerdtMickael <hoerdt@clarinet.u-strasbg.fr> who
reported the original bug.

Signed-off-by: David L Stevens <dlstevens@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2005-06-21 13:58:25 -07:00
..
802
8021q
appletalk [ATALK]: endian annotations 2005-06-20 13:32:05 -07:00
atm
ax25
bluetooth
bridge
core [NETLINK]: Set correct pid for ioctl originating netlink events 2005-06-18 22:55:51 -07:00
decnet [DECNET]: Remove unnecessary initilization of unused variable entries 2005-06-18 22:55:02 -07:00
econet
ethernet
ipv4 [IPV4]: Add LC-Trie FIB lookup algorithm. 2005-06-21 12:43:18 -07:00
ipv6 [IPV6]: multicast join and misc 2005-06-21 13:58:25 -07:00
ipx
irda
key [IPSEC]: Add XFRM_STATE_NOPMTUDISC flag 2005-06-20 13:21:43 -07:00
lapb
llc
netlink
netrom
packet
rose
rxrpc
sched [PKT_SCHED]: noop/noqueue qdisc style cleanups 2005-06-18 22:59:08 -07:00
sctp [SCTP] sctp_connectx() API support 2005-06-20 13:14:57 -07:00
sunrpc
unix
wanrouter
x25
xfrm [IPSEC]: Add xfrm_state_afinfo->init_flags 2005-06-20 13:19:41 -07:00
compat.c
Kconfig
Makefile
nonet.c
socket.c
sysctl_net.c
TUNABLE