diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2009-09-22 20:00:49 +0200 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2009-09-22 20:55:10 +0200 |
commit | b88bbe8aa1284c98e2f234b0cc991ff5775680da (patch) | |
tree | 062db93569813983735c35ffb4ec087ba907e798 /src | |
parent | b262680175d1b18a2884e0f95206264737dcc621 (diff) | |
download | strongswan-b88bbe8aa1284c98e2f234b0cc991ff5775680da.tar.bz2 strongswan-b88bbe8aa1284c98e2f234b0cc991ff5775680da.tar.xz |
set XFRM_STATE_AF_UNSPEC flag
Diffstat (limited to 'src')
-rw-r--r-- | src/pluto/kernel_netlink.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/pluto/kernel_netlink.c b/src/pluto/kernel_netlink.c index 362270318..a0db5e69c 100644 --- a/src/pluto/kernel_netlink.c +++ b/src/pluto/kernel_netlink.c @@ -40,6 +40,11 @@ #include "whack.h" /* for RC_LOG_SERIOUS */ #include "kernel_alg.h" +/** required for Linux 2.6.26 kernel and later */ +#ifndef XFRM_STATE_AF_UNSPEC +#define XFRM_STATE_AF_UNSPEC 32 +#endif + /* Minimum priority number in SPD used by pluto. */ #define MIN_SPD_PRIORITY 1024 @@ -602,7 +607,15 @@ static bool netlink_add_sa(const struct kernel_sa *sa, bool replace) req.p.id.spi = sa->spi; req.p.id.proto = satype2proto(sa->satype); req.p.family = sa->src->u.v4.sin_family; - req.p.mode = (sa->encapsulation == ENCAPSULATION_MODE_TUNNEL); + if (sa->encapsulation == ENCAPSULATION_MODE_TUNNEL) + { + req.p.mode = XFRM_MODE_TUNNEL; + req.p.flags |= XFRM_STATE_AF_UNSPEC; + } + else + { + req.p.mode = XFRM_MODE_TRANSPORT; + } req.p.replay_window = sa->replay_window; req.p.reqid = sa->reqid; req.p.lft.soft_byte_limit = XFRM_INF; |