aboutsummaryrefslogtreecommitdiffstats
path: root/src/libhydra/kernel
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-09-23 09:14:26 +0200
committerTobias Brunner <tobias@strongswan.org>2012-09-24 17:12:18 +0200
commit2e2feffb6701e9e9f100fa57185dee47f9c25b5b (patch)
tree0812b739084c0e51d1bb50ab7555425c011273bd /src/libhydra/kernel
parent64595464b2010b70abb051562df66f35614af0c2 (diff)
downloadstrongswan-2e2feffb6701e9e9f100fa57185dee47f9c25b5b.tar.bz2
strongswan-2e2feffb6701e9e9f100fa57185dee47f9c25b5b.tar.xz
Don't check interface of inbound message if interfaces are not filtered
We don't have a proper kernel-net interface on Android yet, so the check for a usable interface does not work there.
Diffstat (limited to 'src/libhydra/kernel')
-rw-r--r--src/libhydra/kernel/kernel_interface.c12
-rw-r--r--src/libhydra/kernel/kernel_interface.h9
2 files changed, 16 insertions, 5 deletions
diff --git a/src/libhydra/kernel/kernel_interface.c b/src/libhydra/kernel/kernel_interface.c
index 7bfda2486..5320ee2e9 100644
--- a/src/libhydra/kernel/kernel_interface.c
+++ b/src/libhydra/kernel/kernel_interface.c
@@ -389,6 +389,12 @@ METHOD(kernel_interface_t, is_interface_usable, bool,
NULL, iface) == expected;
}
+METHOD(kernel_interface_t, all_interfaces_usable, bool,
+ private_kernel_interface_t *this)
+{
+ return this->ifaces_filter == NULL;
+}
+
METHOD(kernel_interface_t, get_address_by_ts, status_t,
private_kernel_interface_t *this, traffic_selector_t *ts, host_t **ip)
{
@@ -698,6 +704,7 @@ kernel_interface_t *kernel_interface_create()
.enable_udp_decap = _enable_udp_decap,
.is_interface_usable = _is_interface_usable,
+ .all_interfaces_usable = _all_interfaces_usable,
.get_address_by_ts = _get_address_by_ts,
.add_ipsec_interface = _add_ipsec_interface,
.remove_ipsec_interface = _remove_ipsec_interface,
@@ -725,12 +732,9 @@ kernel_interface_t *kernel_interface_create()
"%s.interfaces_use", NULL, hydra->daemon);
if (!ifaces)
{
+ this->ifaces_exclude = TRUE;
ifaces = lib->settings->get_str(lib->settings,
"%s.interfaces_ignore", NULL, hydra->daemon);
- if (ifaces)
- {
- this->ifaces_exclude = TRUE;
- }
}
if (ifaces)
{
diff --git a/src/libhydra/kernel/kernel_interface.h b/src/libhydra/kernel/kernel_interface.h
index c09f07bd9..88d4a5bce 100644
--- a/src/libhydra/kernel/kernel_interface.h
+++ b/src/libhydra/kernel/kernel_interface.h
@@ -312,7 +312,7 @@ struct kernel_interface_t {
* @param name allocated interface name (optional)
* @return TRUE if interface found and usable
*/
- bool (*get_interface) (kernel_interface_t *this, host_t *host, char **name);
+ bool (*get_interface)(kernel_interface_t *this, host_t *host, char **name);
/**
* Creates an enumerator over all local addresses.
@@ -416,6 +416,13 @@ struct kernel_interface_t {
bool (*is_interface_usable)(kernel_interface_t *this, const char *iface);
/**
+ * Check if interfaces are excluded by config.
+ *
+ * @return TRUE if no interfaces are exclued by config
+ */
+ bool (*all_interfaces_usable)(kernel_interface_t *this);
+
+ /**
* Tries to find an IP address of a local interface that is included in the
* supplied traffic selector.
*