missed a few: make default, local-loop routes have metric 1,
authorMike Karels <karels@ucbvax.Berkeley.EDU>
Tue, 7 Jun 1988 07:16:33 +0000 (23:16 -0800)
committerMike Karels <karels@ucbvax.Berkeley.EDU>
Tue, 7 Jun 1988 07:16:33 +0000 (23:16 -0800)
as not incremented when sent; check for 0 on input (can't be right)

SCCS-vsn: sbin/routed/input.c 5.17
SCCS-vsn: sbin/routed/startup.c 5.13
SCCS-vsn: sbin/routed/tables.c 5.13

usr/src/sbin/routed/input.c
usr/src/sbin/routed/startup.c
usr/src/sbin/routed/tables.c

index d475dc9..396dbbb 100644 (file)
@@ -11,7 +11,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)input.c    5.16 (Berkeley) %G%";
+static char sccsid[] = "@(#)input.c    5.17 (Berkeley) %G%";
 #endif /* not lint */
 
 /*
 #endif /* not lint */
 
 /*
@@ -33,7 +33,7 @@ rip_input(from, size)
        struct interface *if_ifwithdstaddr();
        int newsize;
        register struct afswitch *afp;
        struct interface *if_ifwithdstaddr();
        int newsize;
        register struct afswitch *afp;
-       static struct sockaddr badfrom;
+       static struct sockaddr badfrom, badfrom2;
 
        ifp = 0;
        TRACE_INPUT(ifp, from, size);
 
        ifp = 0;
        TRACE_INPUT(ifp, from, size);
@@ -191,6 +191,18 @@ rip_input(from, size)
                                   from->sa_family);
                                continue;
                        }
                                   from->sa_family);
                                continue;
                        }
+                       if (n->rip_metric == 0 ||
+                           (unsigned) n->rip_metric > HOPCNT_INFINITY) {
+                               if (bcmp((char *)from, (char *)&badfrom2,
+                                   sizeof(badfrom2)) != 0) {
+                                       syslog(LOG_ERR,
+                                           "bad metric (%d) from %s\n",
+                                           n->rip_metric,
+                                 (*afswitch[from->sa_family].af_format)(from));
+                                       badfrom2 = *from;
+                               }
+                               continue;
+                       }
                        /*
                         * Adjust metric according to incoming interface.
                         */
                        /*
                         * Adjust metric according to incoming interface.
                         */
index bf92dda..a92e98f 100644 (file)
@@ -11,7 +11,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)startup.c  5.12 (Berkeley) %G%";
+static char sccsid[] = "@(#)startup.c  5.13 (Berkeley) %G%";
 #endif /* not lint */
 
 /*
 #endif /* not lint */
 
 /*
@@ -188,7 +188,7 @@ addrouteforif(ifp)
 {
        struct sockaddr_in net;
        struct sockaddr *dst;
 {
        struct sockaddr_in net;
        struct sockaddr *dst;
-       int state, metric;
+       int state;
        register struct rt_entry *rt;
 
        if (ifp->int_flags & IFF_POINTOPOINT)
        register struct rt_entry *rt;
 
        if (ifp->int_flags & IFF_POINTOPOINT)
@@ -271,7 +271,7 @@ add_ptopt_localrt(ifp)
                        return;
                rtdelete(rt);
        }
                        return;
                rtdelete(rt);
        }
-       rtadd(dst, &loopaddr, 0, state);
+       rtadd(dst, &loopaddr, 1, state);
 }
 
 /*
 }
 
 /*
@@ -319,6 +319,8 @@ gwkludge()
                        continue;
                if (!gethostnameornumber(gname, &gate))
                        continue;
                        continue;
                if (!gethostnameornumber(gname, &gate))
                        continue;
+               if (metric == 0)                        /* XXX */
+                       metric = 1;
                if (strcmp(qual, "passive") == 0) {
                        /*
                         * Passive entries aren't placed in our tables,
                if (strcmp(qual, "passive") == 0) {
                        /*
                         * Passive entries aren't placed in our tables,
index 5393f6b..62dda1c 100644 (file)
@@ -11,7 +11,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)tables.c   5.12 (Berkeley) %G%";
+static char sccsid[] = "@(#)tables.c   5.13 (Berkeley) %G%";
 #endif /* not lint */
 
 /*
 #endif /* not lint */
 
 /*
@@ -298,7 +298,7 @@ rtdefault()
 {
        extern struct sockaddr inet_default;
 
 {
        extern struct sockaddr inet_default;
 
-       rtadd(&inet_default, &inet_default, 0,
+       rtadd(&inet_default, &inet_default, 1,
                RTS_CHANGED | RTS_PASSIVE | RTS_INTERNAL);
 }
 
                RTS_CHANGED | RTS_PASSIVE | RTS_INTERNAL);
 }