try again; can't block subnet 0 with internal "network" route
[unix-history] / usr / src / sbin / routed / input.c
index 6eee6d2..e96cfbf 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)input.c    5.5 (Berkeley) %G%";
+static char sccsid[] = "@(#)input.c    5.6 (Berkeley) %G%";
 #endif not lint
 
 /*
 #endif not lint
 
 /*
@@ -164,7 +164,9 @@ rip_input(from, size)
                                continue;
                        }
                        rt = rtlookup(&n->rip_dst);
                                continue;
                        }
                        rt = rtlookup(&n->rip_dst);
-                       if (rt == 0) {
+                       if (rt == 0 ||
+                           (rt->rt_state & (RTS_INTERNAL|RTS_INTERFACE)) ==
+                           (RTS_INTERNAL|RTS_INTERFACE)) {
                                rt = rtfind(&n->rip_dst);
                                if (rt && equal(from, &rt->rt_router) &&
                                    rt->rt_metric == n->rip_metric)
                                rt = rtfind(&n->rip_dst);
                                if (rt && equal(from, &rt->rt_router) &&
                                    rt->rt_metric == n->rip_metric)