diff options
author | Martin Willi <martin@revosec.ch> | 2012-11-12 10:06:09 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-11-29 10:22:51 +0100 |
commit | b185cdd16d1d7553fabf7792928df31ad9eea427 (patch) | |
tree | 3b2d62992ad1d2051d770495722b7b75b30e5b23 /src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c | |
parent | 0a54d3e1a19915f81dea1b942e88e5d637214e0e (diff) | |
download | strongswan-b185cdd16d1d7553fabf7792928df31ad9eea427.tar.bz2 strongswan-b185cdd16d1d7553fabf7792928df31ad9eea427.tar.xz |
Install virtual IPs via interface name, and use an interface lookup where required
Diffstat (limited to 'src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c')
-rw-r--r-- | src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c index 7db51fc85..c00fa8800 100644 --- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c +++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c @@ -1664,7 +1664,7 @@ static status_t manage_ipaddr(private_kernel_netlink_net_t *this, int nlmsg_type METHOD(kernel_net_t, add_ip, status_t, private_kernel_netlink_net_t *this, host_t *virtual_ip, int prefix, - host_t *iface_ip) + char *iface_name) { addr_map_entry_t *entry, lookup = { .ip = virtual_ip, @@ -1715,17 +1715,11 @@ METHOD(kernel_net_t, add_ip, status_t, this->ifaces->find_first(this->ifaces, (void*)iface_entry_by_name, (void**)&iface, this->install_virtual_ip_on) != SUCCESS) { - lookup.ip = iface_ip; - entry = this->addrs->get_match(this->addrs, &lookup, - (void*)addr_map_entry_match); - if (!entry) + if (this->ifaces->find_first(this->ifaces, (void*)iface_entry_by_name, + (void**)&iface, iface_name) != SUCCESS) { /* if we don't find the requested interface we just use the first */ this->ifaces->get_first(this->ifaces, (void**)&iface); } - else - { - iface = entry->iface; - } } if (iface) { |