reinstall point-to-point interface when it reappears
authorMike Karels <karels@ucbvax.Berkeley.EDU>
Fri, 21 Dec 1984 10:05:19 +0000 (02:05 -0800)
committerMike Karels <karels@ucbvax.Berkeley.EDU>
Fri, 21 Dec 1984 10:05:19 +0000 (02:05 -0800)
SCCS-vsn: sbin/routed/input.c 4.10

usr/src/sbin/routed/input.c

index 8419fd1..e1f8376 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
 #ifndef lint
-static char sccsid[] = "@(#)input.c    4.9 (Berkeley) %G%";
+static char sccsid[] = "@(#)input.c    4.10 (Berkeley) %G%";
 #endif
 
 /*
 #endif
 
 /*
@@ -94,9 +94,15 @@ rip_input(from, size)
                                rt->rt_timer = 0;
                        return;
                }
                                rt->rt_timer = 0;
                        return;
                }
-               /* update timer for interface on which the packet arrived */
+               /*
+                * Update timer for interface on which the packet arrived.
+                * If from other end of a point-to-point link that isn't
+                * in the routing tables, (re-)add the route.
+                */
                if ((rt = rtfind(from)) && (rt->rt_state & RTS_INTERFACE))
                        rt->rt_timer = 0;
                if ((rt = rtfind(from)) && (rt->rt_state & RTS_INTERFACE))
                        rt->rt_timer = 0;
+               else if (ifp = if_ifwithdstaddr(from))
+                       addrouteforif(ifp);
                size -= 4 * sizeof (char);
                n = msg->rip_nets;
                for (; size > 0; size -= sizeof (struct netinfo), n++) {
                size -= 4 * sizeof (char);
                n = msg->rip_nets;
                for (; size > 0; size -= sizeof (struct netinfo), n++) {