summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/strongswan/Jenkinsfile2
-rw-r--r--packages/strongswan/patches/0001-charon-add-optional-source-and-remote-overrides-for-.patch (renamed from packages/strongswan/patches/1001-charon-add-optional-source-and-remote-overrides-for-.patch)168
-rw-r--r--packages/strongswan/patches/0002-vici-send-certificates-for-ike-sa-events.patch (renamed from packages/strongswan/patches/1002-vici-send-certificates-for-ike-sa-events.patch)37
-rw-r--r--packages/strongswan/patches/0003-vici-add-support-for-individual-sa-state-changes.patch (renamed from packages/strongswan/patches/1003-vici-add-support-for-individual-sa-state-changes.patch)20
-rw-r--r--packages/strongswan/patches/0004-VyOS-disable-options-enabled-by-Debian-that-are-unus.patch115
-rw-r--r--packages/strongswan/patches/1004-API-fixup-after-controller-changes.patch44
6 files changed, 229 insertions, 157 deletions
diff --git a/packages/strongswan/Jenkinsfile b/packages/strongswan/Jenkinsfile
index 6fa02658..98d1cca4 100644
--- a/packages/strongswan/Jenkinsfile
+++ b/packages/strongswan/Jenkinsfile
@@ -21,7 +21,7 @@
def pkgList = [
['name': 'strongswan',
- 'scmCommit': 'debian/5.9.1-1',
+ 'scmCommit': 'debian/5.9.8-3',
'scmUrl': 'https://salsa.debian.org/debian/strongswan.git',
'buildCmd': 'cd ..; ./build.sh'],
]
diff --git a/packages/strongswan/patches/1001-charon-add-optional-source-and-remote-overrides-for-.patch b/packages/strongswan/patches/0001-charon-add-optional-source-and-remote-overrides-for-.patch
index 6819ca08..b791166a 100644
--- a/packages/strongswan/patches/1001-charon-add-optional-source-and-remote-overrides-for-.patch
+++ b/packages/strongswan/patches/0001-charon-add-optional-source-and-remote-overrides-for-.patch
@@ -1,7 +1,7 @@
-From 809c18140e39d9f16137e478c2142f7c55f39b1c Mon Sep 17 00:00:00 2001
+From db627ec8a8e72bc6b23dc8ab00f4e6b4f448d01c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
Date: Mon, 21 Sep 2015 13:41:58 +0300
-Subject: [PATCH 2/4] charon: add optional source and remote overrides for
+Subject: [PATCH 1/3] charon: add optional source and remote overrides for
initiate
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
@@ -17,7 +17,7 @@ and is a prerequisite for dmvpn support.
Signed-off-by: Timo Teräs <timo.teras@iki.fi>
---
src/charon-cmd/cmd/cmd_connection.c | 2 +-
- src/libcharon/control/controller.c | 43 ++++++++++++-
+ src/libcharon/control/controller.c | 42 +++++++++++-
src/libcharon/control/controller.h | 3 +
src/libcharon/plugins/stroke/stroke_control.c | 5 +-
src/libcharon/plugins/vici/vici_config.c | 2 +-
@@ -25,15 +25,15 @@ Signed-off-by: Timo Teräs <timo.teras@iki.fi>
.../processing/jobs/start_action_job.c | 2 +-
src/libcharon/sa/ike_sa_manager.c | 50 ++++++++++++++-
src/libcharon/sa/ike_sa_manager.h | 8 ++-
- src/libcharon/sa/trap_manager.c | 45 ++++++-------
+ src/libcharon/sa/trap_manager.c | 44 +++++--------
src/swanctl/commands/initiate.c | 40 +++++++++++-
- 11 files changed, 217 insertions(+), 47 deletions(-)
+ 11 files changed, 215 insertions(+), 47 deletions(-)
diff --git a/src/charon-cmd/cmd/cmd_connection.c b/src/charon-cmd/cmd/cmd_connection.c
-index 0481d78d4..805d6f198 100644
+index 8c09cac89..8582798d2 100644
--- a/src/charon-cmd/cmd/cmd_connection.c
+++ b/src/charon-cmd/cmd/cmd_connection.c
-@@ -438,7 +438,7 @@ static job_requeue_t initiate(private_cmd_connection_t *this)
+@@ -439,7 +439,7 @@ static job_requeue_t initiate(private_cmd_connection_t *this)
child_cfg = create_child_cfg(this, peer_cfg);
if (charon->controller->initiate(charon->controller, peer_cfg, child_cfg,
@@ -43,7 +43,7 @@ index 0481d78d4..805d6f198 100644
terminate(pid);
}
diff --git a/src/libcharon/control/controller.c b/src/libcharon/control/controller.c
-index 3baa9342a..5abc4c1df 100644
+index cff504966..9c5afe833 100644
--- a/src/libcharon/control/controller.c
+++ b/src/libcharon/control/controller.c
@@ -15,6 +15,28 @@
@@ -92,7 +92,7 @@ index 3baa9342a..5abc4c1df 100644
/**
* unique ID, used for various methods
*/
-@@ -414,9 +446,14 @@ METHOD(job_t, initiate_execute, job_requeue_t,
+@@ -414,10 +446,15 @@ METHOD(job_t, initiate_execute, job_requeue_t,
ike_sa_t *ike_sa;
interface_listener_t *listener = &job->listener;
peer_cfg_t *peer_cfg = listener->peer_cfg;
@@ -102,21 +102,14 @@ index 3baa9342a..5abc4c1df 100644
ike_sa = charon->ike_sa_manager->checkout_by_config(charon->ike_sa_manager,
- peer_cfg);
+ peer_cfg, my_host, other_host);
+ peer_cfg->destroy(peer_cfg);
+ DESTROY_IF(my_host);
+ DESTROY_IF(other_host);
+
if (!ike_sa)
{
DESTROY_IF(listener->child_cfg);
-@@ -425,6 +462,7 @@ METHOD(job_t, initiate_execute, job_requeue_t,
- listener_done(listener);
- return JOB_REQUEUE_NONE;
- }
-+
- listener->lock->lock(listener->lock);
- listener->ike_sa = ike_sa;
- listener->lock->unlock(listener->lock);
-@@ -497,6 +535,7 @@ METHOD(job_t, initiate_execute, job_requeue_t,
+@@ -492,6 +529,7 @@ METHOD(job_t, initiate_execute, job_requeue_t,
METHOD(controller_t, initiate, status_t,
private_controller_t *this, peer_cfg_t *peer_cfg, child_cfg_t *child_cfg,
@@ -124,7 +117,7 @@ index 3baa9342a..5abc4c1df 100644
controller_cb_t callback, void *param, u_int timeout, bool limits)
{
interface_job_t *job;
-@@ -519,6 +558,8 @@ METHOD(controller_t, initiate, status_t,
+@@ -514,6 +552,8 @@ METHOD(controller_t, initiate, status_t,
.status = FAILED,
.child_cfg = child_cfg,
.peer_cfg = peer_cfg,
@@ -134,10 +127,10 @@ index 3baa9342a..5abc4c1df 100644
.options.limits = limits,
},
diff --git a/src/libcharon/control/controller.h b/src/libcharon/control/controller.h
-index b4ccfced2..7a088b122 100644
+index cdd3a5d43..507c19fb3 100644
--- a/src/libcharon/control/controller.h
+++ b/src/libcharon/control/controller.h
-@@ -79,6 +79,8 @@ struct controller_t {
+@@ -80,6 +80,8 @@ struct controller_t {
*
* @param peer_cfg peer_cfg to use for IKE_SA setup
* @param child_cfg optional child_cfg to set up CHILD_SA from
@@ -146,7 +139,7 @@ index b4ccfced2..7a088b122 100644
* @param cb logging callback
* @param param parameter to include in each call of cb
* @param timeout timeout in ms to wait for callbacks, 0 to disable
-@@ -92,6 +94,7 @@ struct controller_t {
+@@ -93,6 +95,7 @@ struct controller_t {
*/
status_t (*initiate)(controller_t *this,
peer_cfg_t *peer_cfg, child_cfg_t *child_cfg,
@@ -155,10 +148,10 @@ index b4ccfced2..7a088b122 100644
bool limits);
diff --git a/src/libcharon/plugins/stroke/stroke_control.c b/src/libcharon/plugins/stroke/stroke_control.c
-index 8d84b934e..b00d0e62d 100644
+index ba4e5bf9e..db2c6f00b 100644
--- a/src/libcharon/plugins/stroke/stroke_control.c
+++ b/src/libcharon/plugins/stroke/stroke_control.c
-@@ -108,7 +108,7 @@ static void charon_initiate(private_stroke_control_t *this, peer_cfg_t *peer_cfg
+@@ -109,7 +109,7 @@ static void charon_initiate(private_stroke_control_t *this, peer_cfg_t *peer_cfg
if (msg->output_verbosity < 0)
{
charon->controller->initiate(charon->controller, peer_cfg, child_cfg,
@@ -167,7 +160,7 @@ index 8d84b934e..b00d0e62d 100644
}
else
{
-@@ -116,7 +116,8 @@ static void charon_initiate(private_stroke_control_t *this, peer_cfg_t *peer_cfg
+@@ -117,7 +117,8 @@ static void charon_initiate(private_stroke_control_t *this, peer_cfg_t *peer_cfg
status_t status;
status = charon->controller->initiate(charon->controller,
@@ -178,23 +171,23 @@ index 8d84b934e..b00d0e62d 100644
switch (status)
{
diff --git a/src/libcharon/plugins/vici/vici_config.c b/src/libcharon/plugins/vici/vici_config.c
-index 2a4d58eab..0e9d24d11 100644
+index 0c061d4b2..2da616700 100644
--- a/src/libcharon/plugins/vici/vici_config.c
+++ b/src/libcharon/plugins/vici/vici_config.c
-@@ -2149,7 +2149,7 @@ static void run_start_action(private_vici_config_t *this, peer_cfg_t *peer_cfg,
- DBG1(DBG_CFG, "initiating '%s'", child_cfg->get_name(child_cfg));
- charon->controller->initiate(charon->controller,
+@@ -2215,7 +2215,7 @@ static void run_start_action(private_vici_config_t *this, peer_cfg_t *peer_cfg,
+ DBG1(DBG_CFG, "initiating '%s'", child_cfg->get_name(child_cfg));
+ charon->controller->initiate(charon->controller,
peer_cfg->get_ref(peer_cfg), child_cfg->get_ref(child_cfg),
- NULL, NULL, 0, FALSE);
+ NULL, NULL, NULL, NULL, 0, FALSE);
- break;
- case ACTION_ROUTE:
- DBG1(DBG_CFG, "installing '%s'", child_cfg->get_name(child_cfg));
+ }
+ }
+
diff --git a/src/libcharon/plugins/vici/vici_control.c b/src/libcharon/plugins/vici/vici_control.c
-index 4c09b578d..abd7b5d4b 100644
+index 7b8ff1215..8d996c044 100644
--- a/src/libcharon/plugins/vici/vici_control.c
+++ b/src/libcharon/plugins/vici/vici_control.c
-@@ -16,6 +16,28 @@
+@@ -15,6 +15,28 @@
* for more details.
*/
@@ -223,7 +216,7 @@ index 4c09b578d..abd7b5d4b 100644
#include "vici_control.h"
#include "vici_builder.h"
-@@ -174,9 +196,11 @@ static child_cfg_t* find_child_cfg(char *name, char *pname, peer_cfg_t **out)
+@@ -173,9 +195,11 @@ static child_cfg_t* find_child_cfg(char *name, char *pname, peer_cfg_t **out)
CALLBACK(initiate, vici_message_t*,
private_vici_control_t *this, char *name, u_int id, vici_message_t *request)
{
@@ -236,7 +229,7 @@ index 4c09b578d..abd7b5d4b 100644
int timeout;
bool limits;
controller_cb_t log_cb = NULL;
-@@ -190,6 +214,8 @@ CALLBACK(initiate, vici_message_t*,
+@@ -189,6 +213,8 @@ CALLBACK(initiate, vici_message_t*,
timeout = request->get_int(request, 0, "timeout");
limits = request->get_bool(request, FALSE, "init-limits");
log.level = request->get_int(request, 1, "loglevel");
@@ -245,7 +238,7 @@ index 4c09b578d..abd7b5d4b 100644
if (!child && !ike)
{
-@@ -200,31 +226,51 @@ CALLBACK(initiate, vici_message_t*,
+@@ -199,31 +225,51 @@ CALLBACK(initiate, vici_message_t*,
log_cb = (controller_cb_t)log_vici;
}
@@ -306,23 +299,23 @@ index 4c09b578d..abd7b5d4b 100644
CALLBACK(terminate, vici_message_t*,
diff --git a/src/libcharon/processing/jobs/start_action_job.c b/src/libcharon/processing/jobs/start_action_job.c
-index 3a0ed879f..e3399007b 100644
+index b966cd132..23ed1e01f 100644
--- a/src/libcharon/processing/jobs/start_action_job.c
+++ b/src/libcharon/processing/jobs/start_action_job.c
-@@ -61,7 +61,7 @@ METHOD(job_t, execute, job_requeue_t,
- charon->controller->initiate(charon->controller,
- peer_cfg->get_ref(peer_cfg),
- child_cfg->get_ref(child_cfg),
-- NULL, NULL, 0, FALSE);
-+ NULL, NULL, NULL, NULL, 0, FALSE);
- break;
- case ACTION_ROUTE:
- DBG1(DBG_JOB, "start action: route '%s'", name);
+@@ -84,7 +84,7 @@ METHOD(job_t, execute, job_requeue_t,
+ charon->controller->initiate(charon->controller,
+ peer_cfg->get_ref(peer_cfg),
+ child_cfg->get_ref(child_cfg),
+- NULL, NULL, 0, FALSE);
++ NULL, NULL, NULL, NULL, 0, FALSE);
+ }
+ }
+ children->destroy(children);
diff --git a/src/libcharon/sa/ike_sa_manager.c b/src/libcharon/sa/ike_sa_manager.c
-index f95ff19af..5ead905a8 100644
+index c8d439630..d9c32d8cc 100644
--- a/src/libcharon/sa/ike_sa_manager.c
+++ b/src/libcharon/sa/ike_sa_manager.c
-@@ -17,6 +17,28 @@
+@@ -16,6 +16,28 @@
* for more details.
*/
@@ -351,8 +344,8 @@ index f95ff19af..5ead905a8 100644
#include <string.h>
#include <inttypes.h>
-@@ -1423,7 +1445,8 @@ out:
- }
+@@ -1497,7 +1519,8 @@ typedef struct {
+ } config_entry_t;
METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
- private_ike_sa_manager_t *this, peer_cfg_t *peer_cfg)
@@ -361,9 +354,9 @@ index f95ff19af..5ead905a8 100644
{
enumerator_t *enumerator;
entry_t *entry;
-@@ -1432,7 +1455,17 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
- ike_cfg_t *current_ike;
+@@ -1508,7 +1531,17 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
u_int segment;
+ int i;
- DBG2(DBG_MGR, "checkout IKE_SA by config");
+ if (my_host && my_host->get_port(my_host) == 0)
@@ -380,7 +373,7 @@ index f95ff19af..5ead905a8 100644
if (!this->reuse_ikesa && peer_cfg->get_ike_version(peer_cfg) != IKEV1)
{ /* IKE_SA reuse disabled by config (not possible for IKEv1) */
-@@ -1455,6 +1488,15 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
+@@ -1566,6 +1599,15 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
continue;
}
@@ -396,22 +389,22 @@ index f95ff19af..5ead905a8 100644
current_peer = entry->ike_sa->get_peer_cfg(entry->ike_sa);
if (current_peer && current_peer->equals(current_peer, peer_cfg))
{
-@@ -1477,6 +1519,10 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
- if (!ike_sa)
- { /* no IKE_SA using such a config, hand out a new */
- ike_sa = checkout_new(this, peer_cfg->get_ike_version(peer_cfg), TRUE);
-+ if (my_host || other_host)
-+ {
-+ ike_sa->update_hosts(ike_sa, my_host, other_host, TRUE);
-+ }
+@@ -1592,6 +1634,10 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
+ {
+ ike_sa->set_peer_cfg(ike_sa, peer_cfg);
+ checkout_new(this, ike_sa);
++ if (my_host || other_host)
++ {
++ ike_sa->update_hosts(ike_sa, my_host, other_host, TRUE);
++ }
+ }
}
charon->bus->set_sa(charon->bus, ike_sa);
-
diff --git a/src/libcharon/sa/ike_sa_manager.h b/src/libcharon/sa/ike_sa_manager.h
-index efad2e4d6..c43edabbb 100644
+index 004cc2216..50f8246f8 100644
--- a/src/libcharon/sa/ike_sa_manager.h
+++ b/src/libcharon/sa/ike_sa_manager.h
-@@ -93,7 +93,8 @@ struct ike_sa_manager_t {
+@@ -123,7 +123,8 @@ struct ike_sa_manager_t {
ike_sa_t* (*checkout_by_message) (ike_sa_manager_t* this, message_t *message);
/**
@@ -421,26 +414,25 @@ index efad2e4d6..c43edabbb 100644
*
* To initiate, a CHILD_SA may be established within an existing IKE_SA.
* This call checks for an existing IKE_SA by comparing the configuration.
-@@ -103,10 +104,13 @@ struct ike_sa_manager_t {
- * the found IKE_SA is in the DELETING state.
+@@ -136,9 +137,12 @@ struct ike_sa_manager_t {
+ * @note The peer_config is always set on the returned IKE_SA.
*
* @param peer_cfg configuration used to find an existing IKE_SA
+ * @param my_host source host address for wildcard peer_cfg
+ * @param other_host remote host address for wildcard peer_cfg
* @return checked out/created IKE_SA
*/
- ike_sa_t* (*checkout_by_config) (ike_sa_manager_t* this,
-- peer_cfg_t *peer_cfg);
-+ peer_cfg_t *peer_cfg,
-+ host_t *my_host, host_t *other_host);
+- ike_sa_t *(*checkout_by_config)(ike_sa_manager_t* this, peer_cfg_t *peer_cfg);
++ ike_sa_t *(*checkout_by_config)(ike_sa_manager_t* this, peer_cfg_t *peer_cfg,
++ host_t *my_host, host_t *other_host);
/**
* Reset initiator SPI.
diff --git a/src/libcharon/sa/trap_manager.c b/src/libcharon/sa/trap_manager.c
-index 2bc531b38..7220ea597 100644
+index d8d8a421a..e7c906eb7 100644
--- a/src/libcharon/sa/trap_manager.c
+++ b/src/libcharon/sa/trap_manager.c
-@@ -432,7 +432,7 @@ METHOD(trap_manager_t, acquire, void,
+@@ -523,7 +523,7 @@ METHOD(trap_manager_t, acquire, void,
peer_cfg_t *peer;
child_cfg_t *child;
ike_sa_t *ike_sa;
@@ -449,12 +441,12 @@ index 2bc531b38..7220ea597 100644
bool wildcard, ignore = FALSE;
this->lock->read_lock(this->lock);
-@@ -508,36 +508,27 @@ METHOD(trap_manager_t, acquire, void,
+@@ -600,37 +600,27 @@ METHOD(trap_manager_t, acquire, void,
this->lock->unlock(this->lock);
if (wildcard)
- { /* the peer config would match IKE_SAs with other peers */
-- ike_sa = charon->ike_sa_manager->checkout_new(charon->ike_sa_manager,
+- ike_sa = charon->ike_sa_manager->create_new(charon->ike_sa_manager,
- peer->get_ike_version(peer), TRUE);
- if (ike_sa)
- {
@@ -470,17 +462,17 @@ index 2bc531b38..7220ea597 100644
+ uint8_t mask;
- port = ike_cfg->get_other_port(ike_cfg);
-- dst->to_subnet(dst, &host, &mask);
+- data->dst->to_subnet(data->dst, &host, &mask);
- host->set_port(host, port);
- ike_sa->set_other_host(ike_sa, host);
+ ike_cfg = peer->get_ike_cfg(peer);
- port = ike_cfg->get_my_port(ike_cfg);
-- src->to_subnet(src, &host, &mask);
+- data->src->to_subnet(data->src, &host, &mask);
- host->set_port(host, port);
- ike_sa->set_my_host(ike_sa, host);
+ port = ike_cfg->get_other_port(ike_cfg);
-+ dst->to_subnet(dst, &other_host, &mask);
++ data->dst->to_subnet(data->dst, &other_host, &mask);
+ other_host->set_port(other_host, port);
- charon->bus->set_sa(charon->bus, ike_sa);
@@ -491,23 +483,23 @@ index 2bc531b38..7220ea597 100644
- ike_sa = charon->ike_sa_manager->checkout_by_config(
- charon->ike_sa_manager, peer);
+ port = ike_cfg->get_my_port(ike_cfg);
-+ src->to_subnet(src, &my_host, &mask);
++ data->src->to_subnet(data->src, &my_host, &mask);
+ my_host->set_port(my_host, port);
}
+ ike_sa = charon->ike_sa_manager->checkout_by_config(
+ charon->ike_sa_manager, peer,
+ my_host, other_host);
+ peer->destroy(peer);
+ DESTROY_IF(my_host);
+ DESTROY_IF(other_host);
-+
+
if (ike_sa)
{
- if (ike_sa->get_peer_cfg(ike_sa) == NULL)
diff --git a/src/swanctl/commands/initiate.c b/src/swanctl/commands/initiate.c
-index 8ade8bf41..03b2cb0f4 100644
+index e0fffb907..dcaded59d 100644
--- a/src/swanctl/commands/initiate.c
+++ b/src/swanctl/commands/initiate.c
-@@ -13,6 +13,28 @@
+@@ -14,6 +14,28 @@
* for more details.
*/
@@ -536,7 +528,7 @@ index 8ade8bf41..03b2cb0f4 100644
#include "command.h"
#include <errno.h>
-@@ -37,7 +59,7 @@ static int initiate(vici_conn_t *conn)
+@@ -38,7 +60,7 @@ static int initiate(vici_conn_t *conn)
vici_req_t *req;
vici_res_t *res;
command_format_options_t format = COMMAND_FORMAT_NONE;
@@ -545,7 +537,7 @@ index 8ade8bf41..03b2cb0f4 100644
int ret = 0, timeout = 0, level = 1;
while (TRUE)
-@@ -64,6 +86,12 @@ static int initiate(vici_conn_t *conn)
+@@ -65,6 +87,12 @@ static int initiate(vici_conn_t *conn)
case 'l':
level = atoi(arg);
continue;
@@ -558,7 +550,7 @@ index 8ade8bf41..03b2cb0f4 100644
case EOF:
break;
default:
-@@ -87,6 +115,14 @@ static int initiate(vici_conn_t *conn)
+@@ -88,6 +116,14 @@ static int initiate(vici_conn_t *conn)
{
vici_add_key_valuef(req, "ike", "%s", ike);
}
@@ -573,7 +565,7 @@ index 8ade8bf41..03b2cb0f4 100644
if (timeout)
{
vici_add_key_valuef(req, "timeout", "%d", timeout * 1000);
-@@ -133,6 +169,8 @@ static void __attribute__ ((constructor))reg()
+@@ -134,6 +170,8 @@ static void __attribute__ ((constructor))reg()
{"help", 'h', 0, "show usage information"},
{"child", 'c', 1, "initiate a CHILD_SA configuration"},
{"ike", 'i', 1, "initiate an IKE_SA, or name of child's parent"},
@@ -583,5 +575,5 @@ index 8ade8bf41..03b2cb0f4 100644
{"raw", 'r', 0, "dump raw response message"},
{"pretty", 'P', 0, "dump raw response message in pretty print"},
--
-2.20.1
+2.38.1
diff --git a/packages/strongswan/patches/1002-vici-send-certificates-for-ike-sa-events.patch b/packages/strongswan/patches/0002-vici-send-certificates-for-ike-sa-events.patch
index 704cbc61..13e657e9 100644
--- a/packages/strongswan/patches/1002-vici-send-certificates-for-ike-sa-events.patch
+++ b/packages/strongswan/patches/0002-vici-send-certificates-for-ike-sa-events.patch
@@ -1,21 +1,21 @@
-From 62802d545bc6c9143d44511d25d2df435d3099aa Mon Sep 17 00:00:00 2001
+From 39d537b875e907c63a54d5de8ba6d2ea0ede4604 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
Date: Mon, 21 Sep 2015 13:42:05 +0300
-Subject: [PATCH 3/4] vici: send certificates for ike-sa events
+Subject: [PATCH 2/3] vici: send certificates for ike-sa events
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Timo Teräs <timo.teras@iki.fi>
---
- src/libcharon/plugins/vici/vici_query.c | 48 +++++++++++++++++++++----
- 1 file changed, 41 insertions(+), 7 deletions(-)
+ src/libcharon/plugins/vici/vici_query.c | 50 +++++++++++++++++++++----
+ 1 file changed, 42 insertions(+), 8 deletions(-)
diff --git a/src/libcharon/plugins/vici/vici_query.c b/src/libcharon/plugins/vici/vici_query.c
-index ad07ff12d..e3f6a0d26 100644
+index bacb7b101..19acc0789 100644
--- a/src/libcharon/plugins/vici/vici_query.c
+++ b/src/libcharon/plugins/vici/vici_query.c
-@@ -379,7 +379,7 @@ static void list_vips(private_vici_query_t *this, vici_builder_t *b,
+@@ -402,7 +402,7 @@ static void list_vips(private_vici_query_t *this, vici_builder_t *b,
* List details of an IKE_SA
*/
static void list_ike(private_vici_query_t *this, vici_builder_t *b,
@@ -24,7 +24,7 @@ index ad07ff12d..e3f6a0d26 100644
{
time_t t;
ike_sa_id_t *id;
-@@ -388,6 +388,8 @@ static void list_ike(private_vici_query_t *this, vici_builder_t *b,
+@@ -411,6 +411,8 @@ static void list_ike(private_vici_query_t *this, vici_builder_t *b,
uint32_t if_id;
uint16_t alg, ks;
host_t *host;
@@ -33,7 +33,7 @@ index ad07ff12d..e3f6a0d26 100644
b->add_kv(b, "uniqueid", "%u", ike_sa->get_unique_id(ike_sa));
b->add_kv(b, "version", "%u", ike_sa->get_version(ike_sa));
-@@ -397,11 +399,43 @@ static void list_ike(private_vici_query_t *this, vici_builder_t *b,
+@@ -420,11 +422,43 @@ static void list_ike(private_vici_query_t *this, vici_builder_t *b,
b->add_kv(b, "local-host", "%H", host);
b->add_kv(b, "local-port", "%d", host->get_port(host));
b->add_kv(b, "local-id", "%Y", ike_sa->get_my_id(ike_sa));
@@ -77,7 +77,7 @@ index ad07ff12d..e3f6a0d26 100644
eap = ike_sa->get_other_eap_id(ike_sa);
-@@ -531,7 +565,7 @@ CALLBACK(list_sas, vici_message_t*,
+@@ -556,7 +590,7 @@ CALLBACK(list_sas, vici_message_t*,
b = vici_builder_create();
b->begin_section(b, ike_sa->get_name(ike_sa));
@@ -86,7 +86,7 @@ index ad07ff12d..e3f6a0d26 100644
b->begin_section(b, "child-sas");
csas = ike_sa->create_child_sa_enumerator(ike_sa);
-@@ -1717,7 +1751,7 @@ METHOD(listener_t, ike_updown, bool,
+@@ -1774,7 +1808,7 @@ METHOD(listener_t, ike_updown, bool,
}
b->begin_section(b, ike_sa->get_name(ike_sa));
@@ -95,7 +95,7 @@ index ad07ff12d..e3f6a0d26 100644
b->end_section(b);
this->dispatcher->raise_event(this->dispatcher,
-@@ -1742,10 +1776,10 @@ METHOD(listener_t, ike_rekey, bool,
+@@ -1799,10 +1833,10 @@ METHOD(listener_t, ike_rekey, bool,
b = vici_builder_create();
b->begin_section(b, old->get_name(old));
b->begin_section(b, "old");
@@ -108,7 +108,16 @@ index ad07ff12d..e3f6a0d26 100644
b->end_section(b);
b->end_section(b);
-@@ -1776,7 +1810,7 @@ METHOD(listener_t, child_updown, bool,
+@@ -1833,7 +1867,7 @@ METHOD(listener_t, ike_update, bool,
+ b->add_kv(b, "remote-port", "%d", remote->get_port(remote));
+
+ b->begin_section(b, ike_sa->get_name(ike_sa));
+- list_ike(this, b, ike_sa, now);
++ list_ike(this, b, ike_sa, now, TRUE);
+ b->end_section(b);
+
+ this->dispatcher->raise_event(this->dispatcher,
+@@ -1863,7 +1897,7 @@ METHOD(listener_t, child_updown, bool,
}
b->begin_section(b, ike_sa->get_name(ike_sa));
@@ -117,7 +126,7 @@ index ad07ff12d..e3f6a0d26 100644
b->begin_section(b, "child-sas");
snprintf(buf, sizeof(buf), "%s-%u", child_sa->get_name(child_sa),
-@@ -1811,7 +1845,7 @@ METHOD(listener_t, child_rekey, bool,
+@@ -1898,7 +1932,7 @@ METHOD(listener_t, child_rekey, bool,
b = vici_builder_create();
b->begin_section(b, ike_sa->get_name(ike_sa));
@@ -127,5 +136,5 @@ index ad07ff12d..e3f6a0d26 100644
b->begin_section(b, old->get_name(old));
--
-2.20.1
+2.38.1
diff --git a/packages/strongswan/patches/1003-vici-add-support-for-individual-sa-state-changes.patch b/packages/strongswan/patches/0003-vici-add-support-for-individual-sa-state-changes.patch
index db4ce160..45aadc72 100644
--- a/packages/strongswan/patches/1003-vici-add-support-for-individual-sa-state-changes.patch
+++ b/packages/strongswan/patches/0003-vici-add-support-for-individual-sa-state-changes.patch
@@ -1,7 +1,7 @@
-From 85538df79427beec3556505f2f74eb2f328171df Mon Sep 17 00:00:00 2001
+From df6b501ed29b838efde0f1cb1c906ab9befc7b45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
Date: Mon, 21 Sep 2015 13:42:11 +0300
-Subject: [PATCH 4/4] vici: add support for individual sa state changes
+Subject: [PATCH 3/3] vici: add support for individual sa state changes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -14,13 +14,13 @@ Signed-off-by: Timo Teräs <timo.teras@iki.fi>
1 file changed, 105 insertions(+)
diff --git a/src/libcharon/plugins/vici/vici_query.c b/src/libcharon/plugins/vici/vici_query.c
-index e3f6a0d26..9968cdd3c 100644
+index 19acc0789..e008885f7 100644
--- a/src/libcharon/plugins/vici/vici_query.c
+++ b/src/libcharon/plugins/vici/vici_query.c
-@@ -1717,8 +1717,16 @@ static void manage_commands(private_vici_query_t *this, bool reg)
- this->dispatcher->manage_event(this->dispatcher, "list-cert", reg);
+@@ -1774,8 +1774,16 @@ static void manage_commands(private_vici_query_t *this, bool reg)
this->dispatcher->manage_event(this->dispatcher, "ike-updown", reg);
this->dispatcher->manage_event(this->dispatcher, "ike-rekey", reg);
+ this->dispatcher->manage_event(this->dispatcher, "ike-update", reg);
+ this->dispatcher->manage_event(this->dispatcher, "ike-state-established", reg);
+ this->dispatcher->manage_event(this->dispatcher, "ike-state-destroying", reg);
this->dispatcher->manage_event(this->dispatcher, "child-updown", reg);
@@ -34,7 +34,7 @@ index e3f6a0d26..9968cdd3c 100644
manage_command(this, "list-sas", list_sas, reg);
manage_command(this, "list-policies", list_policies, reg);
manage_command(this, "list-conns", list_conns, reg);
-@@ -1789,6 +1797,45 @@ METHOD(listener_t, ike_rekey, bool,
+@@ -1876,6 +1884,45 @@ METHOD(listener_t, ike_update, bool,
return TRUE;
}
@@ -80,7 +80,7 @@ index e3f6a0d26..9968cdd3c 100644
METHOD(listener_t, child_updown, bool,
private_vici_query_t *this, ike_sa_t *ike_sa, child_sa_t *child_sa, bool up)
{
-@@ -1868,6 +1915,62 @@ METHOD(listener_t, child_rekey, bool,
+@@ -1955,6 +2002,62 @@ METHOD(listener_t, child_rekey, bool,
return TRUE;
}
@@ -143,10 +143,10 @@ index e3f6a0d26..9968cdd3c 100644
METHOD(vici_query_t, destroy, void,
private_vici_query_t *this)
{
-@@ -1887,8 +1990,10 @@ vici_query_t *vici_query_create(vici_dispatcher_t *dispatcher)
- .listener = {
+@@ -1975,8 +2078,10 @@ vici_query_t *vici_query_create(vici_dispatcher_t *dispatcher)
.ike_updown = _ike_updown,
.ike_rekey = _ike_rekey,
+ .ike_update = _ike_update,
+ .ike_state_change = _ike_state_change,
.child_updown = _child_updown,
.child_rekey = _child_rekey,
@@ -155,5 +155,5 @@ index e3f6a0d26..9968cdd3c 100644
.destroy = _destroy,
},
--
-2.20.1
+2.38.1
diff --git a/packages/strongswan/patches/0004-VyOS-disable-options-enabled-by-Debian-that-are-unus.patch b/packages/strongswan/patches/0004-VyOS-disable-options-enabled-by-Debian-that-are-unus.patch
new file mode 100644
index 00000000..085d1303
--- /dev/null
+++ b/packages/strongswan/patches/0004-VyOS-disable-options-enabled-by-Debian-that-are-unus.patch
@@ -0,0 +1,115 @@
+From ee6c0b3ff6e3df5c7aef628621e19a813ff308ed Mon Sep 17 00:00:00 2001
+From: Christian Poessinger <christian@poessinger.com>
+Date: Tue, 27 Dec 2022 13:36:43 +0000
+Subject: [PATCH] VyOS: disable options enabled by Debian that are unused
+
+VyOS does not implement CLI options for all options exposed by Debian.
+
+The following options need to be disabled for the DMVPN patchset:
+ - mediation
+ - nm
+
+In addition we have no LED, LDAP and SQL configuration knows, thus we spare
+the plugins.
+---
+ debian/libcharon-extra-plugins.install | 3 ---
+ debian/libstrongswan-extra-plugins.install | 3 ---
+ debian/rules | 11 ++++++++++-
+ debian/strongswan-nm.install | 2 --
+ 4 files changed, 10 insertions(+), 9 deletions(-)
+
+diff --git a/debian/libcharon-extra-plugins.install b/debian/libcharon-extra-plugins.install
+index 94fbabd88..068708ecb 100644
+--- a/debian/libcharon-extra-plugins.install
++++ b/debian/libcharon-extra-plugins.install
+@@ -13,7 +13,6 @@ usr/lib/ipsec/plugins/libstrongswan-error-notify.so
+ usr/lib/ipsec/plugins/libstrongswan-forecast.so
+ usr/lib/ipsec/plugins/libstrongswan-ha.so
+ usr/lib/ipsec/plugins/libstrongswan-kernel-libipsec.so
+-usr/lib/ipsec/plugins/libstrongswan-led.so
+ usr/lib/ipsec/plugins/libstrongswan-lookip.so
+ #usr/lib/ipsec/plugins/libstrongswan-medsrv.so
+ #usr/lib/ipsec/plugins/libstrongswan-medcli.so
+@@ -36,7 +35,6 @@ usr/share/strongswan/templates/config/plugins/error-notify.conf
+ usr/share/strongswan/templates/config/plugins/forecast.conf
+ usr/share/strongswan/templates/config/plugins/ha.conf
+ usr/share/strongswan/templates/config/plugins/kernel-libipsec.conf
+-usr/share/strongswan/templates/config/plugins/led.conf
+ usr/share/strongswan/templates/config/plugins/lookip.conf
+ #usr/share/strongswan/templates/config/plugins/medsrv.conf
+ #usr/share/strongswan/templates/config/plugins/medcli.conf
+@@ -60,7 +58,6 @@ etc/strongswan.d/charon/error-notify.conf
+ etc/strongswan.d/charon/forecast.conf
+ etc/strongswan.d/charon/ha.conf
+ etc/strongswan.d/charon/kernel-libipsec.conf
+-etc/strongswan.d/charon/led.conf
+ etc/strongswan.d/charon/lookip.conf
+ #etc/strongswan.d/charon/medsrv.conf
+ #etc/strongswan.d/charon/medcli.conf
+diff --git a/debian/libstrongswan-extra-plugins.install b/debian/libstrongswan-extra-plugins.install
+index 2846e2155..00cd0a146 100644
+--- a/debian/libstrongswan-extra-plugins.install
++++ b/debian/libstrongswan-extra-plugins.install
+@@ -8,7 +8,6 @@ usr/lib/ipsec/plugins/libstrongswan-ctr.so
+ usr/lib/ipsec/plugins/libstrongswan-curl.so
+ usr/lib/ipsec/plugins/libstrongswan-curve25519.so
+ usr/lib/ipsec/plugins/libstrongswan-gcrypt.so
+-usr/lib/ipsec/plugins/libstrongswan-ldap.so
+ usr/lib/ipsec/plugins/libstrongswan-pkcs11.so
+ usr/lib/ipsec/plugins/libstrongswan-test-vectors.so
+ usr/lib/ipsec/plugins/libstrongswan-tpm.so
+@@ -20,7 +19,6 @@ usr/share/strongswan/templates/config/plugins/ctr.conf
+ usr/share/strongswan/templates/config/plugins/curl.conf
+ usr/share/strongswan/templates/config/plugins/curve25519.conf
+ usr/share/strongswan/templates/config/plugins/gcrypt.conf
+-usr/share/strongswan/templates/config/plugins/ldap.conf
+ usr/share/strongswan/templates/config/plugins/pkcs11.conf
+ usr/share/strongswan/templates/config/plugins/test-vectors.conf
+ usr/share/strongswan/templates/config/plugins/tpm.conf
+@@ -31,7 +29,6 @@ etc/strongswan.d/charon/ctr.conf
+ etc/strongswan.d/charon/curl.conf
+ etc/strongswan.d/charon/curve25519.conf
+ etc/strongswan.d/charon/gcrypt.conf
+-etc/strongswan.d/charon/ldap.conf
+ etc/strongswan.d/charon/pkcs11.conf
+ etc/strongswan.d/charon/test-vectors.conf
+ etc/strongswan.d/charon/tpm.conf
+diff --git a/debian/rules b/debian/rules
+index 2fed1f10f..fa0d21a0c 100755
+--- a/debian/rules
++++ b/debian/rules
+@@ -3,6 +3,15 @@ export DEB_LDFLAGS_MAINT_APPEND=-Wl,-O1
+ #export DEB_LDFLAGS_MAINT_APPEND=-Wl,--as-needed -Wl,-O1 -Wl,-z,defs
+ export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+
++CONFIGUREARGS_VYOS := --disable-warnings \
++ --disable-ldap \
++ --disable-led \
++ --disable-nm \
++ --disable-mediation \
++ --disable-mysql \
++ --disable-sqlite \
++ --disable-sql
++
+ CONFIGUREARGS := --libdir=/usr/lib --libexecdir=/usr/lib \
+ --enable-addrblock \
+ --enable-agent \
+@@ -88,7 +97,7 @@ ifeq ($(DEB_HOST_ARCH_OS),kfreebsd)
+ endif
+
+ override_dh_auto_configure:
+- dh_auto_configure -- $(CONFIGUREARGS)
++ dh_auto_configure -- $(CONFIGUREARGS) $(CONFIGUREARGS_VYOS)
+
+ override_dh_auto_clean:
+ dh_auto_clean
+diff --git a/debian/strongswan-nm.install b/debian/strongswan-nm.install
+index b0c05d94f..e69de29bb 100644
+--- a/debian/strongswan-nm.install
++++ b/debian/strongswan-nm.install
+@@ -1,2 +0,0 @@
+-usr/lib/ipsec/charon-nm
+-usr/share/dbus-1/system.d/nm-strongswan-service.conf
+--
+2.30.2
+
diff --git a/packages/strongswan/patches/1004-API-fixup-after-controller-changes.patch b/packages/strongswan/patches/1004-API-fixup-after-controller-changes.patch
deleted file mode 100644
index 4eecbec7..00000000
--- a/packages/strongswan/patches/1004-API-fixup-after-controller-changes.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 2ed5a1e0a45d8955c07a87bdc94e81039cfea1fc Mon Sep 17 00:00:00 2001
-From: Christian Poessinger <christian@poessinger.com>
-Date: Sat, 5 Jun 2021 07:45:39 +0000
-Subject: [PATCH] API fixup after controller changes
-
-This fixes the caller API of strongSwan 5.9.1 after applying the "charon: add
-optional source and remote overrides for initiate") patch.
-
-Signed-off-by: Christian Poessinger <christian@poessinger.com>
----
- src/charon-nm/nm/nm_service.c | 2 +-
- src/libcharon/processing/jobs/initiate_mediation_job.c | 3 ++-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/charon-nm/nm/nm_service.c b/src/charon-nm/nm/nm_service.c
-index 83fcaf898..868d7a356 100644
---- a/src/charon-nm/nm/nm_service.c
-+++ b/src/charon-nm/nm/nm_service.c
-@@ -864,7 +864,7 @@ static gboolean connect_(NMVpnServicePlugin *plugin, NMConnection *connection,
- * Prepare IKE_SA
- */
- ike_sa = charon->ike_sa_manager->checkout_by_config(charon->ike_sa_manager,
-- peer_cfg);
-+ peer_cfg, NULL, NULL);
- if (!ike_sa)
- {
- peer_cfg->destroy(peer_cfg);
-diff --git a/src/libcharon/processing/jobs/initiate_mediation_job.c b/src/libcharon/processing/jobs/initiate_mediation_job.c
-index 6a72499d3..3f12ff903 100644
---- a/src/libcharon/processing/jobs/initiate_mediation_job.c
-+++ b/src/libcharon/processing/jobs/initiate_mediation_job.c
-@@ -137,7 +137,8 @@ METHOD(job_t, initiate, job_requeue_t,
- mediation_cfg->get_ref(mediation_cfg);
-
- if (charon->controller->initiate(charon->controller, mediation_cfg, NULL,
-- (controller_cb_t)initiate_callback, this, 0, FALSE) != SUCCESS)
-+ NULL, NULL, (controller_cb_t)initiate_callback, this, 0,
-+ FALSE) != SUCCESS)
- {
- mediation_cfg->destroy(mediation_cfg);
- mediated_cfg->destroy(mediated_cfg);
---
-2.20.1
-