4.2bsd route daemon error -- flags botched
Matt Crawford
matt at oddjob.UChicago.UUCP
Wed Jan 23 08:42:19 AEST 1985
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 at anl-mcs.arpa
Crawford of Chicago ihnp4!oddjob!matt
More information about the Comp.bugs.4bsd.ucb-fixes
mailing list