vlr_sgs: start lu expiration timer on sgs eps detach

When the subscriber is detached from SGs services (but not from 2g
services). Then the subscriber essentially becomes a regular 2g
subscriber, which means thet the lu expiration timer needs to be
started.

Change-Id: If95c63706dc1c5a537f7cd1b6481252427cbf234
Related: OS#3614
diff --git a/src/libvlr/vlr_sgs.c b/src/libvlr/vlr_sgs.c
index 538c9f2..06737db 100644
--- a/src/libvlr/vlr_sgs.c
+++ b/src/libvlr/vlr_sgs.c
@@ -101,6 +101,11 @@
 	vsub->cgi.lai = *new_lai;
 	vsub->cs.lac = vsub->sgs.lai.lac;
 
+	/* Subscribers that are created by the SGs location update will not
+	 * expire automatically, however a 2G LU or an implicit IMSI detach
+	 * from EPS services may change this. */
+	vsub->expire_lu = VLR_SUBSCRIBER_NO_EXPIRATION;
+
 	return 0;
 }
 
@@ -197,6 +202,15 @@
 	}
 
 	osmo_fsm_inst_dispatch(vsub->sgs_fsm, evt, NULL);
+
+	/* See also 3GPP TS 29.118, 5.4.3 Procedures in the VLR. Detaching from
+	 * EPS services essentially means that the subscriber leaves the 4G RAN
+	 * but continues to live on 2G, this basically turns the subscriber into
+	 * a normal 2G subscriber and we need to make sure that the lu-
+	 * expiration timer is running. */
+	if (vsub->expire_lu == VLR_SUBSCRIBER_NO_EXPIRATION)
+		vlr_subscr_enable_expire_lu(vsub);
+
 	vlr_subscr_put(vsub);
 }