FreeBSD/sys/netinet/in_mcast.c
/*
 * Prune a source entry from an existing socket-layer filter set,
 * maintaining any required invariants and checking allocations.
 *
 * The source is marked as being left at t1, it is not freed.
 *
 * Return 0 if no error occurred, otherwise return an errno value.
 */
Prune a source entry from an existing socket-layer filter set,
maintaining any required invariants and checking allocations.

The source is marked as being left at t1, it is not freed.

Return 0 if no error occurred, otherwise return an errno value.
Prune a source entry from an existing socket - layer filter set maintaining any required invariants and checking allocations . The source is marked as being left at t1 it is not freed . Return 0 if no error occurred otherwise return an errno value .
static int
imf_prune(struct in_mfilter *imf, const struct sockaddr_in *psin)
{
	struct ip_msource	 find;
	struct ip_msource	*ims;
	struct in_msource	*lims;
	find.ims_haddr = ntohl(psin->sin_addr.s_addr);
	ims = RB_FIND(ip_msource_tree, &imf->imf_sources, &find);
	if (ims == NULL)
		return (ENOENT);
	lims = (struct in_msource *)ims;
	lims->imsl_st[1] = MCAST_UNDEFINED;
	return (0);
}
static int imf_prune ( struct in_mfilter * imf , const struct sockaddr_in * psin ) { struct ip_msource find ; struct ip_msource * ims ; struct in_msource * lims ; find . ims_haddr = ntohl ( psin -> sin_addr . s_addr ) ; ims = RB_FIND ( ip_msource_tree , & imf -> imf_sources , & find ) ; if ( ims == NULL ) return ( ENOENT ) ; lims = ( struct in_msource * ) ims ; lims -> imsl_st [ 1 ] = MCAST_UNDEFINED ; return ( 0 ) ; }
Prune a source entry from an existing socket-layer filter set,
 maintaining any required invariants and checking allocations.
Prune a source entry from an existing socket - layer filter set maintaining any required invariants and checking allocations .
/* key is host byte order */