RFC#1812 directed broadcast compliant patch for FreeBSD 2.2.1R *** sys/i386/conf/GENERIC.orig Fri Jun 13 18:42:46 1997 --- src/sys/i386/conf/GENERIC Fri Jun 13 18:43:00 1997 *************** *** 29,34 **** --- 29,35 ---- options "CD9660" #ISO 9660 Filesystem options PROCFS #Process filesystem options "COMPAT_43" #Compatible with BSD 4.3 [KEEP THIS!] + #options DIRECTED_BROADCAST #Broadcast across subnets options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device options BOUNCE_BUFFERS #include support for DMA bounce buffers options UCONSOLE #Allow users to grab the console *** sys/netinet/ip_input.c.orig Fri Jun 13 11:16:48 1997 --- sys/netinet/ip_input.c Fri Jun 13 18:40:33 1997 *************** *** 365,371 **** if (IA_SIN(ia)->sin_addr.s_addr == ip->ip_dst.s_addr) goto ours; ! if (ia->ia_ifp && ia->ia_ifp->if_flags & IFF_BROADCAST) { if (satosin(&ia->ia_broadaddr)->sin_addr.s_addr == ip->ip_dst.s_addr) goto ours; --- 365,375 ---- if (IA_SIN(ia)->sin_addr.s_addr == ip->ip_dst.s_addr) goto ours; ! if (ia->ia_ifp && ia->ia_ifp->if_flags & IFF_BROADCAST ! #ifdef DIRECTED_BROADCAST ! && ia->ia_ifp == m->m_pkthdr.rcvif ! #endif ! ) { if (satosin(&ia->ia_broadaddr)->sin_addr.s_addr == ip->ip_dst.s_addr) goto ours; *************** *** 1270,1275 **** --- 1274,1282 ---- } error = ip_output(m, (struct mbuf *)0, &ipforward_rt, + #ifdef DIRECTED_BROADCAST + IP_ALLOWBROADCAST | + #endif IP_FORWARDING, 0); if (error) ipstat.ips_cantforward++;