android: Handle unreachable peers via alert

This commit is contained in:
Tobias Brunner
2012-10-16 14:16:17 +02:00
parent 1d6dc62727
commit 272ce5b580
@@ -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,
}, },