aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/processing
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2011-06-28 19:42:54 +0200
committerAndreas Steffen <andreas.steffen@strongswan.org>2011-06-28 19:42:54 +0200
commitf87991704e517ee433ee87e9dd37bf758268f71d (patch)
tree4fe8b5e539f019a1b8df1fab30d68f1abdde98ae /src/libcharon/processing
parent6a5c8ee7a53d3652bd95eeb97a77c2d18b7737d4 (diff)
downloadstrongswan-f87991704e517ee433ee87e9dd37bf758268f71d.tar.bz2
strongswan-f87991704e517ee433ee87e9dd37bf758268f71d.tar.xz
implemented PASS and DROP shunt policies
Diffstat (limited to 'src/libcharon/processing')
-rw-r--r--src/libcharon/processing/jobs/start_action_job.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libcharon/processing/jobs/start_action_job.c b/src/libcharon/processing/jobs/start_action_job.c
index 63b9d7dcc..8f924bc15 100644
--- a/src/libcharon/processing/jobs/start_action_job.c
+++ b/src/libcharon/processing/jobs/start_action_job.c
@@ -42,6 +42,7 @@ METHOD(job_t, execute, void,
enumerator_t *enumerator, *children;
peer_cfg_t *peer_cfg;
child_cfg_t *child_cfg;
+ ipsec_mode_t mode;
char *name;
enumerator = charon->backends->create_peer_cfg_enumerator(charon->backends,
@@ -69,7 +70,16 @@ METHOD(job_t, execute, void,
break;
case ACTION_ROUTE:
DBG1(DBG_JOB, "start action: route '%s'", name);
- charon->traps->install(charon->traps, peer_cfg, child_cfg);
+ mode = child_cfg->get_mode(child_cfg);
+ if (mode == MODE_PASS || mode == MODE_DROP)
+ {
+ charon->shunts->install(charon->shunts, child_cfg);
+ }
+ else
+ {
+ charon->traps->install(charon->traps, peer_cfg,
+ child_cfg);
+ }
break;
case ACTION_NONE:
break;