android: Handle unreachable peers via alert
This commit is contained in:
@@ -357,7 +357,6 @@ METHOD(listener_t, child_updown, bool,
|
|||||||
{
|
{
|
||||||
/* disable the hooks registered to catch initiation failures */
|
/* disable the hooks registered to catch initiation failures */
|
||||||
this->public.listener.ike_updown = NULL;
|
this->public.listener.ike_updown = NULL;
|
||||||
this->public.listener.ike_state_change = NULL;
|
|
||||||
if (!setup_tun_device(this, ike_sa, child_sa))
|
if (!setup_tun_device(this, ike_sa, child_sa))
|
||||||
{
|
{
|
||||||
DBG1(DBG_DMN, "failed to setup TUN device");
|
DBG1(DBG_DMN, "failed to setup TUN device");
|
||||||
@@ -398,19 +397,6 @@ METHOD(listener_t, ike_updown, bool,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(listener_t, ike_state_change, bool,
|
|
||||||
private_android_service_t *this, ike_sa_t *ike_sa, ike_sa_state_t state)
|
|
||||||
{
|
|
||||||
/* this call back is only registered during initiation */
|
|
||||||
if (this->ike_sa == ike_sa && state == IKE_DESTROYING)
|
|
||||||
{
|
|
||||||
charonservice->update_status(charonservice,
|
|
||||||
CHARONSERVICE_UNREACHABLE_ERROR);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
METHOD(listener_t, alert, bool,
|
METHOD(listener_t, alert, bool,
|
||||||
private_android_service_t *this, ike_sa_t *ike_sa, alert_t alert,
|
private_android_service_t *this, ike_sa_t *ike_sa, alert_t alert,
|
||||||
va_list args)
|
va_list args)
|
||||||
@@ -427,6 +413,10 @@ METHOD(listener_t, alert, bool,
|
|||||||
charonservice->update_status(charonservice,
|
charonservice->update_status(charonservice,
|
||||||
CHARONSERVICE_PEER_AUTH_ERROR);
|
CHARONSERVICE_PEER_AUTH_ERROR);
|
||||||
break;
|
break;
|
||||||
|
case ALERT_PEER_INIT_UNREACHABLE:
|
||||||
|
charonservice->update_status(charonservice,
|
||||||
|
CHARONSERVICE_UNREACHABLE_ERROR);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -450,9 +440,8 @@ METHOD(listener_t, ike_reestablish, bool,
|
|||||||
if (this->ike_sa == old)
|
if (this->ike_sa == old)
|
||||||
{
|
{
|
||||||
this->ike_sa = new;
|
this->ike_sa = new;
|
||||||
/* re-register hooks to detect initiation failures */
|
/* re-register hook to detect initiation failures */
|
||||||
this->public.listener.ike_updown = _ike_updown;
|
this->public.listener.ike_updown = _ike_updown;
|
||||||
this->public.listener.ike_state_change = _ike_state_change;
|
|
||||||
/* the TUN device will be closed when the new CHILD_SA is established */
|
/* the TUN device will be closed when the new CHILD_SA is established */
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -612,7 +601,6 @@ android_service_t *android_service_create(android_creds_t *creds, char *type,
|
|||||||
.ike_rekey = _ike_rekey,
|
.ike_rekey = _ike_rekey,
|
||||||
.ike_reestablish = _ike_reestablish,
|
.ike_reestablish = _ike_reestablish,
|
||||||
.ike_updown = _ike_updown,
|
.ike_updown = _ike_updown,
|
||||||
.ike_state_change = _ike_state_change,
|
|
||||||
.child_updown = _child_updown,
|
.child_updown = _child_updown,
|
||||||
.alert = _alert,
|
.alert = _alert,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user