aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/plugins/stroke/stroke_socket.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-11-03 15:12:05 +0100
committerMartin Willi <martin@revosec.ch>2010-11-03 15:12:05 +0100
commit851d60484ea9f3d61d133fbd0eecea7eff015b3c (patch)
treea7e50781153f2dcdba9da42dcbf816c9d247153f /src/libcharon/plugins/stroke/stroke_socket.c
parent49a9028201f3d2be9b3b7e640eae5de65ce9b5cd (diff)
downloadstrongswan-851d60484ea9f3d61d133fbd0eecea7eff015b3c.tar.bz2
strongswan-851d60484ea9f3d61d133fbd0eecea7eff015b3c.tar.xz
Added a stroke rekey command to trigger IKE/CHILD_SA rekeying manually
Diffstat (limited to 'src/libcharon/plugins/stroke/stroke_socket.c')
-rw-r--r--src/libcharon/plugins/stroke/stroke_socket.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libcharon/plugins/stroke/stroke_socket.c b/src/libcharon/plugins/stroke/stroke_socket.c
index 0a5110fd3..2e321f8b0 100644
--- a/src/libcharon/plugins/stroke/stroke_socket.c
+++ b/src/libcharon/plugins/stroke/stroke_socket.c
@@ -246,6 +246,17 @@ static void stroke_terminate_srcip(private_stroke_socket_t *this,
}
/**
+ * rekey a connection by name/id
+ */
+static void stroke_rekey(private_stroke_socket_t *this, stroke_msg_t *msg, FILE *out)
+{
+ pop_string(msg, &msg->terminate.name);
+ DBG1(DBG_CFG, "received stroke: rekey '%s'", msg->rekey.name);
+
+ this->control->rekey(this->control, msg, out);
+}
+
+/**
* route a policy (install SPD entries)
*/
static void stroke_route(private_stroke_socket_t *this, stroke_msg_t *msg, FILE *out)
@@ -510,6 +521,9 @@ static job_requeue_t process(stroke_job_context_t *ctx)
case STR_TERMINATE_SRCIP:
stroke_terminate_srcip(this, msg, out);
break;
+ case STR_REKEY:
+ stroke_rekey(this, msg, out);
+ break;
case STR_STATUS:
stroke_status(this, msg, out, FALSE);
break;