diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2009-09-24 19:08:14 +0200 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2009-09-24 19:08:14 +0200 |
commit | 2d507e64b7d7029906aac30dbea317795b5339de (patch) | |
tree | d6c06aa6b73b8a5ba33957009eed6789fc32dc69 | |
parent | 54fe0d9230be440d9f627ff7f94a202e6117e1b9 (diff) |
Do not allow gateway routes with NULL iface.
-rw-r--r-- | sysdep/bsd/krt-sock.c | 5 | ||||
-rw-r--r-- | sysdep/linux/krt-scan.c | 6 | ||||
-rw-r--r-- | sysdep/linux/netlink/netlink.c | 6 |
3 files changed, 12 insertions, 5 deletions
diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c index 2e8f1b83..29ebe20c 100644 --- a/sysdep/bsd/krt-sock.c +++ b/sysdep/bsd/krt-sock.c @@ -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; diff --git a/sysdep/linux/krt-scan.c b/sysdep/linux/krt-scan.c index b7fc1295..374cf011 100644 --- a/sysdep/linux/krt-scan.c +++ b/sysdep/linux/krt-scan.c @@ -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; } diff --git a/sysdep/linux/netlink/netlink.c b/sysdep/linux/netlink/netlink.c index 2e85f54b..9f839af0 100644 --- a/sysdep/linux/netlink/netlink.c +++ b/sysdep/linux/netlink/netlink.c @@ -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 { |