controller: Add option to force destruction of an IKE_SA
[strongswan.git] / src / conftest / actions.c
index 3f937b1..66e41f7 100644 (file)
@@ -65,7 +65,7 @@ static job_requeue_t initiate(char *config)
        {
                DBG1(DBG_CFG, "initiating IKE_SA for CHILD_SA config '%s'", config);
                charon->controller->initiate(charon->controller, peer_cfg, child_cfg,
-                                                                        NULL, NULL, 0);
+                                                                        NULL, NULL, 0, FALSE);
        }
        else
        {
@@ -117,19 +117,20 @@ static job_requeue_t rekey_child(char *config)
        enumerator_t *enumerator, *children;
        ike_sa_t *ike_sa;
        child_sa_t *child_sa;
-       u_int32_t reqid = 0, spi = 0;
-       protocol_id_t proto = PROTO_ESP;
+       uint32_t spi, proto;
+       host_t *dst = NULL;
 
        enumerator = charon->controller->create_ike_sa_enumerator(
                                                                                                        charon->controller, TRUE);
        while (enumerator->enumerate(enumerator, &ike_sa))
        {
                children = ike_sa->create_child_sa_enumerator(ike_sa);
-               while (children->enumerate(children, (void**)&child_sa))
+               while (children->enumerate(children, &child_sa))
                {
                        if (streq(config, child_sa->get_name(child_sa)))
                        {
-                               reqid = child_sa->get_reqid(child_sa);
+                               dst = ike_sa->get_my_host(ike_sa);
+                               dst = dst->clone(dst);
                                proto = child_sa->get_protocol(child_sa);
                                spi = child_sa->get_spi(child_sa, TRUE);
                                break;
@@ -138,11 +139,12 @@ static job_requeue_t rekey_child(char *config)
                children->destroy(children);
        }
        enumerator->destroy(enumerator);
-       if (reqid)
+       if (dst)
        {
                DBG1(DBG_CFG, "starting rekey of CHILD_SA '%s'", config);
                lib->processor->queue_job(lib->processor,
-                                               (job_t*)rekey_child_sa_job_create(reqid, proto, spi));
+                                               (job_t*)rekey_child_sa_job_create(proto, spi, dst));
+               dst->destroy(dst);
        }
        else
        {
@@ -207,7 +209,8 @@ static job_requeue_t close_ike(char *config)
        if (id)
        {
                DBG1(DBG_CFG, "closing IKE_SA '%s'", config);
-               charon->controller->terminate_ike(charon->controller, id, NULL, NULL, 0);
+               charon->controller->terminate_ike(charon->controller, id, FALSE, NULL,
+                                                                                 NULL, 0);
        }
        else
        {