aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2013-04-17 11:55:24 +0200
committerMartin Willi <martin@revosec.ch>2013-05-06 14:56:50 +0200
commite93f386dbb1f53e42aa2b92214c421e3fa39a4e4 (patch)
tree8cf944f5af3ad158e3d4a999200f4c9583f72d50 /src
parent00080d2b8b4901c85d16cb410223fce5330b2027 (diff)
downloadstrongswan-e93f386dbb1f53e42aa2b92214c421e3fa39a4e4.tar.bz2
strongswan-e93f386dbb1f53e42aa2b92214c421e3fa39a4e4.tar.xz
Raise an ALERT_PROPOSAL_MISMATCH_CHILD also when receiving NO_PROPOSAL_CHOSEN
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/sa/ikev2/tasks/child_create.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libcharon/sa/ikev2/tasks/child_create.c b/src/libcharon/sa/ikev2/tasks/child_create.c
index 32c0e8c4a..5a2c05d99 100644
--- a/src/libcharon/sa/ikev2/tasks/child_create.c
+++ b/src/libcharon/sa/ikev2/tasks/child_create.c
@@ -1147,6 +1147,25 @@ METHOD(task_t, build_r, status_t,
return SUCCESS;
}
+/**
+ * Raise alerts for received notify errors
+ */
+static void raise_alerts(private_child_create_t *this, notify_type_t type)
+{
+ linked_list_t *list;
+
+ switch (type)
+ {
+ case NO_PROPOSAL_CHOSEN:
+ list = this->config->get_proposals(this->config, FALSE);
+ charon->bus->alert(charon->bus, ALERT_PROPOSAL_MISMATCH_CHILD, list);
+ list->destroy_offset(list, offsetof(proposal_t, destroy));
+ break;
+ default:
+ break;
+ }
+}
+
METHOD(task_t, process_i, status_t,
private_child_create_t *this, message_t *message)
{
@@ -1195,6 +1214,7 @@ METHOD(task_t, process_i, status_t,
DBG1(DBG_IKE, "received %N notify, no CHILD_SA built",
notify_type_names, type);
enumerator->destroy(enumerator);
+ raise_alerts(this, type);
handle_child_sa_failure(this, message);
/* an error in CHILD_SA creation is not critical */
return SUCCESS;