diff options
author | Martin Willi <martin@revosec.ch> | 2012-11-12 11:14:03 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-11-29 10:22:51 +0100 |
commit | d88597f0dd0df67e4096e917e118998d9066b770 (patch) | |
tree | eac1f3b4dc6dc4f418ad256b44cb7a784d3db558 /src/libhydra | |
parent | b185cdd16d1d7553fabf7792928df31ad9eea427 (diff) | |
download | strongswan-d88597f0dd0df67e4096e917e118998d9066b770.tar.bz2 strongswan-d88597f0dd0df67e4096e917e118998d9066b770.tar.xz |
Don't wait while removing external IPs used for load testing
Diffstat (limited to 'src/libhydra')
-rw-r--r-- | src/libhydra/kernel/kernel_interface.c | 4 | ||||
-rw-r--r-- | src/libhydra/kernel/kernel_interface.h | 4 | ||||
-rw-r--r-- | src/libhydra/kernel/kernel_net.h | 4 | ||||
-rw-r--r-- | src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c | 5 | ||||
-rw-r--r-- | src/libhydra/plugins/kernel_pfroute/kernel_pfroute_net.c | 3 |
5 files changed, 13 insertions, 7 deletions
diff --git a/src/libhydra/kernel/kernel_interface.c b/src/libhydra/kernel/kernel_interface.c index 733aced57..8948e0561 100644 --- a/src/libhydra/kernel/kernel_interface.c +++ b/src/libhydra/kernel/kernel_interface.c @@ -323,13 +323,13 @@ METHOD(kernel_interface_t, add_ip, status_t, } METHOD(kernel_interface_t, del_ip, status_t, - private_kernel_interface_t *this, host_t *virtual_ip, int prefix) + private_kernel_interface_t *this, host_t *virtual_ip, int prefix, bool wait) { if (!this->net) { return NOT_SUPPORTED; } - return this->net->del_ip(this->net, virtual_ip, prefix); + return this->net->del_ip(this->net, virtual_ip, prefix, wait); } METHOD(kernel_interface_t, add_route, status_t, diff --git a/src/libhydra/kernel/kernel_interface.h b/src/libhydra/kernel/kernel_interface.h index a5ee0b55b..8d8ef2e83 100644 --- a/src/libhydra/kernel/kernel_interface.h +++ b/src/libhydra/kernel/kernel_interface.h @@ -349,9 +349,11 @@ struct kernel_interface_t { * * @param virtual_ip virtual ip address to assign * @param prefix prefix length of the IP to uninstall, -1 for auto + * @param wait TRUE to wait untily IP is gone * @return SUCCESS if operation completed */ - status_t (*del_ip) (kernel_interface_t *this, host_t *virtual_ip, int prefix); + status_t (*del_ip) (kernel_interface_t *this, host_t *virtual_ip, + int prefix, bool wait); /** * Add a route. diff --git a/src/libhydra/kernel/kernel_net.h b/src/libhydra/kernel/kernel_net.h index a6b7686b0..6a3b2cee7 100644 --- a/src/libhydra/kernel/kernel_net.h +++ b/src/libhydra/kernel/kernel_net.h @@ -128,9 +128,11 @@ struct kernel_net_t { * * @param virtual_ip virtual ip address to assign * @param prefix prefix length of the IP to uninstall, -1 for auto + * @param wait TRUE to wait until IP is gone * @return SUCCESS if operation completed */ - status_t (*del_ip) (kernel_net_t *this, host_t *virtual_ip, int prefix); + status_t (*del_ip) (kernel_net_t *this, host_t *virtual_ip, int prefix, + bool wait); /** * Add a route. diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c index c00fa8800..23a354dba 100644 --- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c +++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c @@ -1758,7 +1758,8 @@ METHOD(kernel_net_t, add_ip, status_t, } METHOD(kernel_net_t, del_ip, status_t, - private_kernel_netlink_net_t *this, host_t *virtual_ip, int prefix) + private_kernel_netlink_net_t *this, host_t *virtual_ip, int prefix, + bool wait) { addr_map_entry_t *entry, lookup = { .ip = virtual_ip, @@ -1798,7 +1799,7 @@ METHOD(kernel_net_t, del_ip, status_t, entry->addr->installed = FALSE; status = manage_ipaddr(this, RTM_DELADDR, 0, entry->iface->ifindex, virtual_ip, prefix); - if (status == SUCCESS) + if (status == SUCCESS && wait) { /* wait until the address is really gone */ while (is_known_vip(this, virtual_ip)) { diff --git a/src/libhydra/plugins/kernel_pfroute/kernel_pfroute_net.c b/src/libhydra/plugins/kernel_pfroute/kernel_pfroute_net.c index 7311ded0f..7ac3e8a3c 100644 --- a/src/libhydra/plugins/kernel_pfroute/kernel_pfroute_net.c +++ b/src/libhydra/plugins/kernel_pfroute/kernel_pfroute_net.c @@ -647,7 +647,8 @@ METHOD(kernel_net_t, add_ip, status_t, } METHOD(kernel_net_t, del_ip, status_t, - private_kernel_pfroute_net_t *this, host_t *virtual_ip, int prefix) + private_kernel_pfroute_net_t *this, host_t *virtual_ip, int prefix, + bool wait) { return FAILED; } |