aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2009-09-22 20:00:49 +0200
committerAndreas Steffen <andreas.steffen@strongswan.org>2009-09-22 20:55:10 +0200
commitb88bbe8aa1284c98e2f234b0cc991ff5775680da (patch)
tree062db93569813983735c35ffb4ec087ba907e798 /src
parentb262680175d1b18a2884e0f95206264737dcc621 (diff)
downloadstrongswan-b88bbe8aa1284c98e2f234b0cc991ff5775680da.tar.bz2
strongswan-b88bbe8aa1284c98e2f234b0cc991ff5775680da.tar.xz
set XFRM_STATE_AF_UNSPEC flag
Diffstat (limited to 'src')
-rw-r--r--src/pluto/kernel_netlink.c15
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;