Subject: Re: multicast address management
To: None <matt@netbsd.org, tech-net@netbsd.org>
From: None <itojun@iijlab.net>
List: tech-net
Date: 06/26/2003 10:02:33
>>>>Module Name: src
>>>>Committed By: matt
>>>>Date: Sun Jun 15 02:49:35 UTC 2003
>>>>
>>>>Modified Files:
>>>> src/sys/netinet: igmp.c igmp_var.h in.c in_pcb.c in_pcb.h in_var.h
>>>> ip_input.c ip_var.h tcp_input.c udp_usrreq.c
>>>>
>>>>Log Message:
>>>>Change the way multicasts are kept. They now use a hash table in the same
>>>>manner as the ifaddr hash table. By doing this, the mkludge code can go
>>>>away. At the same time, keep track of what pcbs are using what ifaddr and
>>>>when an address is deleted from an interface, notify/abort all sockets
>>>>that have that address as a source. Switch IGMP and multicasts to use pools
>>>>for allocation. Fix a number of potential problems in the igmp code where
>>>>allocation failures could cause a trap/panic.
>>> tnx for the change. we still have issued with ip_mroute.c and
>>> if_detach(), which i don't have clear idea how to fix.
>>> (rte->ifp keeps pointer to ifp, and if ifp goes away... bomb)
>> also it seems to me that rti->ifp filled by rti_fill() would never
>> be freed on if_detach().
>
> it looks to me that IN_MULTI_HASH() is not updated when
> in_delmulti() is called. also we should remove all in_multi
> on in_pcbpurgeif0().
in_pcbpurgeif0() seems okay, sorry
itojun