Subject: multicast broken; fix to if_ether.c
To: None <current-users@sun-lamp.cs.berkeley.edu>
From: Brad Parker <brad@fcr.com>
List: current-users
Date: 12/11/1993 11:59:20
I installed a multicast kernel and I noticed that when I joined a
multicast group my machine would arp for the multicast group I had
just joined (this struck me as a little odd). After some probing I
discovered that if_ether.c was missing some code.

If guess some of the original patch to netinet/if_ether.c was moved to
net/if_ethersubr.c and this little #ifdef got lost (it's an important
one, however, as it causes arpresolv to return the proper multicast
phys address instead of trying to resolve it with arp)

I haven't tried any multicast tunneling yet, but I hope to next week.

-brad

*** if_ether.c.orig	Sat Dec 11 11:18:30 1993
--- if_ether.c	Sat Dec 11 11:21:44 1993
***************
*** 188,193 ****
--- 188,200 ----
  	int s;
  
  	*usetrailers = 0;
+ #ifdef MULTICAST
+ 	if (IN_MULTICAST(ntohl(destip->s_addr))) {
+ 		ETHER_MAP_IP_MULTICAST(destip, desten);
+ 		return(1);
+ 	}
+ 	else
+ #endif MULTICAST
  	if (m->m_flags & M_BCAST) {	/* broadcast */
  		bcopy((caddr_t)etherbroadcastaddr, (caddr_t)desten,
  		    sizeof(etherbroadcastaddr));

------------------------------------------------------------------------------