matt@oddjob.UChicago.UUCP (Matt Crawford) (01/23/85)
Index: etc/routed/startup.c 4.2BSD Description: The high 3 bits of the interface flags should be masked off before being used in routed's tables. Otherwise the bits for IFF_NOTRAILERS, IFF_RUNNING, and IFF_NOARP will be mistaken for RTS_PASSIVE, RTS_INTERFACE, and RTS_REMOTE respectively. Repeat-By: Turn off trailers on an ethernet which out to receive routing broadcasts, then start routed. Fix: *** /tmp/,RCSt1003118 Tue Jan 22 16:30:15 1985 --- startup.c Sat Jan 19 16:04:56 1985 *************** *** 1,6 #ifndef lint static char sccsid[] = "@(#)startup.c 4.4 (Berkeley) 5/25/83"; #endif /* * Routing Table Management Daemon --- 1,15 ----- #ifndef lint static char sccsid[] = "@(#)startup.c 4.4 (Berkeley) 5/25/83"; #endif + /* $Header: startup.c,v 1.2 85/01/19 16:02:49 bin Exp $ + * $Log: startup.c,v $ + * Revision 1.2 85/01/19 16:02:49 bin + * Mask out the high 3 bits of the interface flags from the kernel. + * The bits for IFF_NOTRAILERS, IFF_RUNNING, and IFF_NOARP were being + * mistaken for RTS_PASSIVE, RTS_INTERFACE, and RTS_REMOTE respectively. + * + * 1.1 == 4.2 distribution + */ /* * Routing Table Management Daemon *************** *** 102,108 } strcpy(ifp->int_name, name); ifp->int_addr = ifs.if_addr; ! ifp->int_flags = ifs.if_flags | IFF_INTERFACE; /* this works because broadaddr overlaps dstaddr */ ifp->int_broadaddr = ifs.if_broadaddr; ifp->int_net = ifs.if_net; --- 111,117 ----- } strcpy(ifp->int_name, name); ifp->int_addr = ifs.if_addr; ! ifp->int_flags = (ifs.if_flags & 0x1f) | IFF_INTERFACE; /* this works because broadaddr overlaps dstaddr */ ifp->int_broadaddr = ifs.if_broadaddr; ifp->int_net = ifs.if_net; _____________________________________________________ Matt University crawford@anl-mcs.arpa Crawford of Chicago ihnp4!oddjob!matt