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
-static char sccsid[] = "@(#)input.c 5.16 (Berkeley) %G%";
+static char sccsid[] = "@(#)input.c 5.17 (Berkeley) %G%";
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);
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.
*/
-static char sccsid[] = "@(#)startup.c 5.12 (Berkeley) %G%";
+static char sccsid[] = "@(#)startup.c 5.13 (Berkeley) %G%";
{
struct sockaddr_in net;
struct sockaddr *dst;
{
struct sockaddr_in net;
struct sockaddr *dst;
register struct rt_entry *rt;
if (ifp->int_flags & IFF_POINTOPOINT)
register struct rt_entry *rt;
if (ifp->int_flags & IFF_POINTOPOINT)
- rtadd(dst, &loopaddr, 0, state);
+ rtadd(dst, &loopaddr, 1, state);
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,
-static char sccsid[] = "@(#)tables.c 5.12 (Berkeley) %G%";
+static char sccsid[] = "@(#)tables.c 5.13 (Berkeley) %G%";
{
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);
}