&imo, NULL);
&imo, (void *)NULL);
igmp_sendpkt(inm, type, addr)	struct in_multi *inm;	int type;	in_addr_t addr;{	struct mbuf *m;	struct igmp *igmp;	struct ip *ip;	struct ip_moptions imo;#ifdef MROUTING	extern struct socket *ip_mrouter;#endif /* MROUTING */	MGETHDR(m, M_DONTWAIT, MT_HEADER);	if (m == NULL)		return;	/*	 * Assume max_linkhdr + sizeof(struct ip) + IGMP_MINLEN	 * is smaller than mbuf size returned by MGETHDR.	 */	m->m_data += max_linkhdr;	m->m_len = sizeof(struct ip) + IGMP_MINLEN;	m->m_pkthdr.len = sizeof(struct ip) + IGMP_MINLEN;	ip = mtod(m, struct ip *);	ip->ip_tos = 0;	ip->ip_len = sizeof(struct ip) + IGMP_MINLEN;	ip->ip_off = 0;	ip->ip_p = IPPROTO_IGMP;	ip->ip_src.s_addr = INADDR_ANY;	if (addr) {		ip->ip_dst.s_addr = addr;	} else {		ip->ip_dst = inm->inm_addr;	}	m->m_data += sizeof(struct ip);	m->m_len -= sizeof(struct ip);	igmp = mtod(m, struct igmp *);	igmp->igmp_type = type;	igmp->igmp_code = 0;	igmp->igmp_group = inm->inm_addr;	igmp->igmp_cksum = 0;	igmp->igmp_cksum = in_cksum(m, IGMP_MINLEN);	m->m_data -= sizeof(struct ip);	m->m_len += sizeof(struct ip);	imo.imo_multicast_ifp = inm->inm_ifp;	imo.imo_multicast_ttl = 1;#ifdef RSVP_ISI	imo.imo_multicast_vif = -1;#endif	/*	 * Request loopback of the report if we are acting as a multicast	 * router, so that the process-level routing demon can hear it.	 */#ifdef MROUTING	imo.imo_multicast_loop = (ip_mrouter != NULL);#else	imo.imo_multicast_loop = 0;#endif /* MROUTING */	ip_output(m, (struct mbuf *)0, (struct route *)0, IP_MULTICASTOPTS,	    &imo, NULL);	++igmpstat.igps_snd_reports;}