diff options
author | Martin Willi <martin@revosec.ch> | 2013-02-21 09:39:23 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2013-03-01 11:11:24 +0100 |
commit | 76f7d80e80c3217979e92548f7f93cdb96d9f6c5 (patch) | |
tree | 5ab2c971f6f74083bd07bcbf2fa8e7addb9bf728 /src/libhydra/kernel/kernel_interface.c | |
parent | d830174e3c5d6fb0978384f43893ca9cfbe4e1e0 (diff) | |
download | strongswan-76f7d80e80c3217979e92548f7f93cdb96d9f6c5.tar.bz2 strongswan-76f7d80e80c3217979e92548f7f93cdb96d9f6c5.tar.xz |
Introduce "features" for the kernel backends returning kernel capabilities
Diffstat (limited to 'src/libhydra/kernel/kernel_interface.c')
-rw-r--r-- | src/libhydra/kernel/kernel_interface.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/libhydra/kernel/kernel_interface.c b/src/libhydra/kernel/kernel_interface.c index 8948e0561..b82fd6d3d 100644 --- a/src/libhydra/kernel/kernel_interface.c +++ b/src/libhydra/kernel/kernel_interface.c @@ -137,6 +137,22 @@ struct private_kernel_interface_t { bool ifaces_exclude; }; +METHOD(kernel_interface_t, get_features, kernel_feature_t, + private_kernel_interface_t *this) +{ + kernel_feature_t features = 0; + + if (this->ipsec && this->ipsec->get_features) + { + features |= this->ipsec->get_features(this->ipsec); + } + if (this->net && this->net->get_features) + { + features |= this->net->get_features(this->net); + } + return features; +} + METHOD(kernel_interface_t, get_spi, status_t, private_kernel_interface_t *this, host_t *src, host_t *dst, u_int8_t protocol, u_int32_t reqid, u_int32_t *spi) @@ -682,6 +698,7 @@ kernel_interface_t *kernel_interface_create() INIT(this, .public = { + .get_features = _get_features, .get_spi = _get_spi, .get_cpi = _get_cpi, .add_sa = _add_sa, @@ -757,4 +774,3 @@ kernel_interface_t *kernel_interface_create() return &this->public; } - |