]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Do not allow gateway routes with NULL iface.
authorOndrej Zajicek <santiago@crfreenet.org>
Thu, 24 Sep 2009 17:08:14 +0000 (19:08 +0200)
committerOndrej Zajicek <santiago@crfreenet.org>
Thu, 24 Sep 2009 17:08:14 +0000 (19:08 +0200)
sysdep/bsd/krt-sock.c
sysdep/linux/krt-scan.c
sysdep/linux/netlink/netlink.c

index 2e8f1b834089e4a4ced2264ad3ce9b9da0375552..29ebe20c72f0a129f35b460bd52a1f7dab9ad260 100644 (file)
@@ -339,7 +339,10 @@ krt_read_rt(struct ks_msg *msg, struct krt_proto *p, int scan)
     if (ng && ng->scope)
       a.iface = ng->iface;
     else
-      log(L_WARN "Kernel told us to use non-neighbor %I for %I/%d", igate, net->n.prefix, net->n.pxlen);
+      {
+       log(L_WARN "Kernel told us to use non-neighbor %I for %I/%d", ra.gw, net->n.prefix, net->n.pxlen);
+       return;
+      }
 
     a.dest = RTD_ROUTER;
     a.gw = igate;
index b7fc12952335a7dae960b66813ab3f14d17df8ba..374cf011d30ed9e142e0b9041277b031fe395432 100644 (file)
@@ -103,8 +103,10 @@ krt_parse_entry(byte *ent, struct krt_proto *p)
       if (ng && ng->scope)
        a.iface = ng->iface;
       else
-       /* FIXME: Remove this warning? Handle it somehow... */
-       log(L_WARN "Kernel told us to use non-neighbor %I for %I/%d", gw, net->n.prefix, net->n.pxlen);
+       {
+         log(L_WARN "Kernel told us to use non-neighbor %I for %I/%d", ra.gw, net->n.prefix, net->n.pxlen);
+         return;
+       }
       a.dest = RTD_ROUTER;
       a.gw = gw;
     }
index 2e85f54b8176b8d8692adbdfb928d8b064069342..9f839af00f243440e4f02f9e44d6ee7cb768d5df 100644 (file)
@@ -686,8 +686,10 @@ nl_parse_route(struct nlmsghdr *h, int scan)
          if (ng && ng->scope)
            ra.iface = ng->iface;
          else
-           /* FIXME: Remove this warning? Handle it somehow... */
-           log(L_WARN "Kernel told us to use non-neighbor %I for %I/%d", ra.gw, net->n.prefix, net->n.pxlen);
+           {
+             log(L_WARN "Kernel told us to use non-neighbor %I for %I/%d", ra.gw, net->n.prefix, net->n.pxlen);
+             return;
+           }
        }
       else
        {