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));
------------------------------------------------------------------------------