mirror of
https://github.com/strongswan/strongswan.git
synced 2025-10-05 00:00:45 -04:00
Parse IKEv1 Cisco Load Balancing notify (can't act on it yet).
This commit is contained in:
parent
3a9d5cbc14
commit
eff331f799
@ -111,7 +111,9 @@ ENUM_NEXT(notify_type_names, INITIAL_CONTACT_IKEV1, INITIAL_CONTACT_IKEV1, IPSEC
|
||||
ENUM_NEXT(notify_type_names, DPD_R_U_THERE, DPD_R_U_THERE_ACK, INITIAL_CONTACT_IKEV1,
|
||||
"DPD_R_U_THERE",
|
||||
"DPD_R_U_THERE_ACK");
|
||||
ENUM_NEXT(notify_type_names, USE_BEET_MODE, USE_BEET_MODE, DPD_R_U_THERE_ACK,
|
||||
ENUM_NEXT(notify_type_names, UNITY_LOAD_BALANCE, UNITY_LOAD_BALANCE, DPD_R_U_THERE_ACK,
|
||||
"UNITY_LOAD_BALANCE");
|
||||
ENUM_NEXT(notify_type_names, USE_BEET_MODE, USE_BEET_MODE, UNITY_LOAD_BALANCE,
|
||||
"USE_BEET_MODE");
|
||||
ENUM_NEXT(notify_type_names, ME_MEDIATION, ME_RESPONSE, USE_BEET_MODE,
|
||||
"ME_MEDIATION",
|
||||
@ -210,7 +212,9 @@ ENUM_NEXT(notify_type_short_names, INITIAL_CONTACT_IKEV1, INITIAL_CONTACT_IKEV1,
|
||||
ENUM_NEXT(notify_type_short_names, DPD_R_U_THERE, DPD_R_U_THERE_ACK, INITIAL_CONTACT_IKEV1,
|
||||
"DPD",
|
||||
"DPD_ACK");
|
||||
ENUM_NEXT(notify_type_short_names, USE_BEET_MODE, USE_BEET_MODE, DPD_R_U_THERE_ACK,
|
||||
ENUM_NEXT(notify_type_short_names, UNITY_LOAD_BALANCE, UNITY_LOAD_BALANCE, DPD_R_U_THERE_ACK,
|
||||
"UNITY_LB");
|
||||
ENUM_NEXT(notify_type_short_names, USE_BEET_MODE, USE_BEET_MODE, UNITY_LOAD_BALANCE,
|
||||
"BEET_MODE");
|
||||
ENUM_NEXT(notify_type_short_names, ME_MEDIATION, ME_RESPONSE, USE_BEET_MODE,
|
||||
"ME_MED",
|
||||
|
@ -143,6 +143,8 @@ enum notify_type_t {
|
||||
/* IKEv1 DPD */
|
||||
DPD_R_U_THERE = 36136,
|
||||
DPD_R_U_THERE_ACK = 36137,
|
||||
/* IKEv1 Cisco High Availability */
|
||||
UNITY_LOAD_BALANCE = 40501,
|
||||
/* BEET mode, not even a draft yet. private use */
|
||||
USE_BEET_MODE = 40961,
|
||||
/* IKE-ME, private use */
|
||||
|
@ -81,10 +81,27 @@ METHOD(task_t, process_r, status_t,
|
||||
this->ike_sa->set_condition(this->ike_sa,
|
||||
COND_INIT_CONTACT_SEEN, TRUE);
|
||||
}
|
||||
else if (type == UNITY_LOAD_BALANCE)
|
||||
{
|
||||
host_t *redirect;
|
||||
chunk_t data;
|
||||
|
||||
data = notify->get_notification_data(notify);
|
||||
redirect = host_create_from_chunk(AF_INET, data, 0);
|
||||
if (redirect)
|
||||
{
|
||||
DBG1(DBG_IKE, "received %N notify. redirected to %H",
|
||||
notify_type_names, type, redirect);
|
||||
}
|
||||
else
|
||||
{
|
||||
DBG1(DBG_IKE, "received %N notify, invalid address");
|
||||
}
|
||||
}
|
||||
else if (type < 16384)
|
||||
{
|
||||
DBG1(DBG_IKE, "received %N error notify",
|
||||
notify_type_names, notify->get_notify_type(notify));
|
||||
notify_type_names, type);
|
||||
if (this->ike_sa->get_state(this->ike_sa) == IKE_CONNECTING)
|
||||
{ /* only critical during main mode */
|
||||
status = FAILED;
|
||||
@ -94,7 +111,7 @@ METHOD(task_t, process_r, status_t,
|
||||
else
|
||||
{
|
||||
DBG1(DBG_IKE, "received %N notify",
|
||||
notify_type_names, notify->get_notify_type(notify));
|
||||
notify_type_names, type);
|
||||
}
|
||||
continue;
|
||||
case DELETE_V1:
|
||||
|
Loading…
x
Reference in New Issue
Block a user