From fb5d541503e44f2ca727661040d2fce9392ee96f Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 14 Jul 2014 15:08:24 +0200 Subject: android: Set CHILD_STATE_DOWN whenever the CHILD_SA goes down No matter what triggers it. We also don't close the TUN device, but we might handle that differently in the future to allow reestablishing the IKE_SA if host names have to be re-resolved via DNS. --- .../android/jni/libandroidbridge/backend/android_service.c | 6 ------ 1 file changed, 6 deletions(-) (limited to 'src/frontends/android/jni/libandroidbridge/backend/android_service.c') diff --git a/src/frontends/android/jni/libandroidbridge/backend/android_service.c b/src/frontends/android/jni/libandroidbridge/backend/android_service.c index db9bebcc5..c893f62fe 100644 --- a/src/frontends/android/jni/libandroidbridge/backend/android_service.c +++ b/src/frontends/android/jni/libandroidbridge/backend/android_service.c @@ -381,14 +381,8 @@ METHOD(listener_t, child_updown, bool, } else { - if (ike_sa->has_condition(ike_sa, COND_REAUTHENTICATING)) - { /* we ignore this during reauthentication */ - return TRUE; - } - close_tun_device(this); charonservice->update_status(charonservice, CHARONSERVICE_CHILD_STATE_DOWN); - return FALSE; } } return TRUE; -- cgit v1.2.3 From 08d545e29aa57277c520df0d02f99b6591db0a35 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 14 Jul 2014 15:10:49 +0200 Subject: android: Set CHILD_STATE_DOWN when the IKE_SA gets reestablished --- .../android/jni/libandroidbridge/backend/android_service.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/frontends/android/jni/libandroidbridge/backend/android_service.c') diff --git a/src/frontends/android/jni/libandroidbridge/backend/android_service.c b/src/frontends/android/jni/libandroidbridge/backend/android_service.c index c893f62fe..d73dc4582 100644 --- a/src/frontends/android/jni/libandroidbridge/backend/android_service.c +++ b/src/frontends/android/jni/libandroidbridge/backend/android_service.c @@ -392,7 +392,8 @@ METHOD(listener_t, ike_updown, bool, private_android_service_t *this, ike_sa_t *ike_sa, bool up) { /* this callback is only registered during initiation, so if the IKE_SA - * goes down we assume an authentication error */ + * goes down we assume some kind of authentication error, more specific + * errors are catched in the alert() handler */ if (this->ike_sa == ike_sa && !up) { charonservice->update_status(charonservice, @@ -452,6 +453,11 @@ METHOD(listener_t, ike_reestablish, bool, this->ike_sa = new; /* re-register hook to detect initiation failures */ this->public.listener.ike_updown = _ike_updown; + /* if the IKE_SA got deleted by the responder we get the child_down() + * event on the old IKE_SA after this hook has been called, so they + * get ignored and thus we trigger the event here */ + charonservice->update_status(charonservice, + CHARONSERVICE_CHILD_STATE_DOWN); /* the TUN device will be closed when the new CHILD_SA is established */ } return TRUE; -- cgit v1.2.3