diff options
author | Tobias Brunner <tobias@strongswan.org> | 2011-09-30 17:41:01 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2012-09-21 18:16:25 +0200 |
commit | cef0a8118e5fd004a9cc8dd2172a1f9b7cd9a5aa (patch) | |
tree | eb7f855ea2d73312b0f38573c6869644d6206ef0 /src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c | |
parent | 9d6b02d6c16590de559a69eb1bcc74304dbaddf7 (diff) | |
download | strongswan-cef0a8118e5fd004a9cc8dd2172a1f9b7cd9a5aa.tar.bz2 strongswan-cef0a8118e5fd004a9cc8dd2172a1f9b7cd9a5aa.tar.xz |
Check routes with equal prefix if preferred source is specified
Diffstat (limited to 'src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c')
-rw-r--r-- | src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c index 73d7ed2c9..9d82a4e89 100644 --- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c +++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c @@ -1236,8 +1236,10 @@ static host_t *get_route(private_kernel_netlink_net_t *this, host_t *dest, } rta = RTA_NEXT(rta, rtasize); } - if (msg->rtm_dst_len <= best) - { /* not better than a previous one */ + if (msg->rtm_dst_len < best || + msg->rtm_dst_len == best && (nexthop || !candidate)) + { /* not better than a previous one, but if a preferred source + * address is specified, we still check equal routes */ continue; } enumerator = this->rt_exclude->create_enumerator(this->rt_exclude); |