Article View: comp.bugs.4bsd
Article #1066Bug in new routed with multiple point-to-point links +FIX
From: Bruce Robertson
Date: Fri, 20 May 1988 15:27
Date: Fri, 20 May 1988 15:27
85 lines
3240 bytes
3240 bytes
Index: etc/routed/startup.c 4.3BSD
Description:
This describes a bug in the new version of routed found in
~ftp/pub/routed.tar.Z on ucbarpa.
If you have configured multiple point-to-point links with the
same network number, routed will only supply the first
interface with routing information.
In ifinit(), for every new network interface seen, the list of
previously seen interfaces is searched. The interface is
ignored if it is already on the list; this prevents routed
from suppling routing information more than once on a single
interface. Unfortunately, routed uses the "source" address
for this comparison, even with point-to-point links. If your
PTP links have the same network number, this source address is
the same for all interfaces, causing only the first interface
to be put on the list. For PTP links, the destination address
should be used.
Repeat-By:
Configure more than one SLIP interface, giving them all the
same network number. Only the first interface will be
supplied with routing information.
Fix:
Install this patch:
*** /tmp/,RCSt1a15333 Wed May 18 09:39:58 1988
--- startup.c Fri May 13 15:25:43 1988
***************
*** 65,83 ****
lookforinterfaces = 1;
continue;
}
- /* already known to us? */
- if (if_ifwithaddr(&ifs.int_addr))
- continue;
- /* argh, this'll have to change sometime */
- if (ifs.int_addr.sa_family != AF_INET)
- continue;
- if (ifs.int_flags & IFF_LOOPBACK) {
- foundloopback = 1;
- loopaddr = ifs.int_addr;
- for (ifp = ifnet; ifp; ifp = ifp->int_next)
- if (ifp->int_flags & IFF_POINTOPOINT)
- add_ptopt_localrt(ifp);
- }
if (ifs.int_flags & IFF_POINTOPOINT) {
if (ioctl(s, SIOCGIFDSTADDR, (char *)&ifreq) < 0) {
syslog(LOG_ERR, "ioctl (get dstaddr)");
--- 65,70 ----
***************
*** 91,96 ****
--- 78,101 ----
continue;
}
ifs.int_broadaddr = ifreq.ifr_broadaddr;
+ }
+ /* already known to us? */
+ if (ifs.int_flags & IFF_POINTOPOINT)
+ {
+ if (if_ifwithdstaddr(&ifs.int_dstaddr))
+ continue;
+ }
+ else if (if_ifwithaddr(&ifs.int_addr))
+ continue;
+ /* argh, this'll have to change sometime */
+ if (ifs.int_addr.sa_family != AF_INET)
+ continue;
+ if (ifs.int_flags & IFF_LOOPBACK) {
+ foundloopback = 1;
+ loopaddr = ifs.int_addr;
+ for (ifp = ifnet; ifp; ifp = ifp->int_next)
+ if (ifp->int_flags & IFF_POINTOPOINT)
+ add_ptopt_localrt(ifp);
}
if (ioctl(s, SIOCGIFMETRIC, (char *)&ifreq) < 0)
syslog(LOG_ERR, "ioctl (get metric)");
--
Bruce Robertson
MicroSage Computer Systems
bruce@stride.com
Technical Details
Message-ID:
<792@stride.Stride.COM>Path:
arc1-ca.pugleaf.net!utzoo!attcan!uunet!husc6!think!ames!lll-tis!oodis01!uplherc!utah-gr!stride!bruceShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!husc6!think!ames!lll-tis!oodis01!uplherc!utah-gr!stride!bruce From: bruce@Stride.COM (Bruce Robertson) Newsgroups: comp.bugs.4bsd Subject: Bug in new routed with multiple point-to-point links +FIX Message-ID: <792@stride.Stride.COM> Date: 20 May 88 15:27:43 GMT Reply-To: bruce@stride.UUCP (Bruce Robertson) Organization: MicroSage Computer Systems, Reno, NV Lines: 85