diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c b/openbsc/src/osmo-bsc_nat/bsc_nat.c
index 116c612..3ec43b1 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c
@@ -1073,10 +1073,10 @@
 			con->msc_con = bsc->nat->msc_con;
 			con_msc = con->msc_con;
 			con->con_type = con_type;
-			con->imsi_checked = filter;
+			con->filter_state.imsi_checked = filter;
 			bsc_nat_extract_lac(bsc, con, parsed, msg);
 			if (imsi)
-				con->imsi = talloc_steal(con, imsi);
+				con->filter_state.imsi = talloc_steal(con, imsi);
 			imsi = NULL;
 			con_bsc = con->bsc;
 			handle_con_stats(con);
@@ -1094,8 +1094,9 @@
 					filter = bsc_nat_filter_dt(bsc, msg,
 							con, parsed, &cause);
 					if (filter < 0) {
-						if (con->imsi)
-							bsc_nat_inform_reject(bsc, con->imsi);
+						if (con->filter_state.imsi)
+							bsc_nat_inform_reject(bsc,
+								con->filter_state.imsi);
 						bsc_stat_reject(filter, bsc, 1);
 						bsc_send_con_release(bsc, con, &cause);
 						con = NULL;
@@ -1111,7 +1112,8 @@
 					 * replace the msg and the parsed structure becomes
 					 * invalid.
 					 */
-					msg = bsc_nat_rewrite_msg(bsc->nat, msg, parsed, con->imsi);
+					msg = bsc_nat_rewrite_msg(bsc->nat, msg, parsed,
+									con->filter_state.imsi);
 					talloc_free(parsed);
 					parsed = NULL;
 				} else if (con->con_local == NAT_CON_END_USSD) {
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_filter.c b/openbsc/src/osmo-bsc_nat/bsc_nat_filter.c
index 11d370c..af0f7a1 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat_filter.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat_filter.c
@@ -90,7 +90,7 @@
 	cause->cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED;
 	cause->lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED;
 
-	if (con->imsi_checked)
+	if (con->filter_state.imsi_checked)
 		return 0;
 
 	/* only care about DTAP messages */
@@ -101,5 +101,5 @@
 	if (!hdr48)
 		return -1;
 
-	return bsc_msg_filter_data(hdr48, len, bsc, con, cause);
+	return bsc_msg_filter_data(hdr48, len, bsc, &con->filter_state, cause);
 }
diff --git a/openbsc/src/osmo-bsc_nat/bsc_ussd.c b/openbsc/src/osmo-bsc_nat/bsc_ussd.c
index 968456b..2241896 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_ussd.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_ussd.c
@@ -351,7 +351,7 @@
 	state->invoke_id = req->invoke_id;
 	memcpy(&state->src_ref, &con->remote_ref, sizeof(con->remote_ref));
 	memcpy(&state->dst_ref, &con->real_ref, sizeof(con->real_ref));
-	memcpy(state->imsi, con->imsi, strlen(con->imsi));
+	memcpy(state->imsi, con->filter_state.imsi, strlen(con->filter_state.imsi));
 
 	/* add additional tag/values */
 	lac = htons(con->lac);
@@ -385,7 +385,7 @@
 	if (con->con_type != NAT_CON_TYPE_SSA)
 		return 0;
 
-	if (!con->imsi)
+	if (!con->filter_state.imsi)
 		return 0;
 
 	/* We have not verified the IMSI yet */
@@ -400,7 +400,7 @@
 	if (parsed->bssap != BSSAP_MSG_DTAP)
 		return 0;
 
-	if (strlen(con->imsi) >= GSM_IMSI_LENGTH)
+	if (strlen(con->filter_state.imsi) >= GSM_IMSI_LENGTH)
 		return 0;
 
 	hdr48 = bsc_unpack_dtap(parsed, msg, &len);
@@ -421,7 +421,7 @@
 		if (!lst)
 			return 0;
 
-		if (bsc_msg_acc_lst_check_allow(lst, con->imsi) != 0)
+		if (bsc_msg_acc_lst_check_allow(lst, con->filter_state.imsi) != 0)
 			return 0;
 
 		/* now decode the message and see if we really want to handle it */
@@ -436,14 +436,15 @@
 			return 0;
 
 		/* found a USSD query for our subscriber */
-		LOGP(DNAT, LOGL_NOTICE, "Found USSD query for %s\n", con->imsi);
+		LOGP(DNAT, LOGL_NOTICE, "Found USSD query for %s\n",
+			con->filter_state.imsi);
 		con->ussd_ti[ti] = 1;
 		if (forward_ussd(con, &req, msg) != 0)
 			return 0;
 		return 1;
 	} else if (msg_type == GSM0480_MTYPE_FACILITY && con->ussd_ti[ti]) {
 		LOGP(DNAT, LOGL_NOTICE, "Forwarding message part of TI: %d %s\n",
-		     ti, con->imsi);
+		     ti, con->filter_state.imsi);
 		if (forward_ussd_simple(con, msg) != 0)
 			return 0;
 		return 1;
