diff options
-rw-r--r-- | openbsc/include/openbsc/gb_proxy.h | 56 | ||||
-rw-r--r-- | openbsc/src/gprs/gb_proxy.c | 108 | ||||
-rw-r--r-- | openbsc/src/gprs/gb_proxy_patch.c | 26 | ||||
-rw-r--r-- | openbsc/src/gprs/gb_proxy_peer.c | 2 | ||||
-rw-r--r-- | openbsc/src/gprs/gb_proxy_tlli.c | 398 | ||||
-rw-r--r-- | openbsc/src/gprs/gb_proxy_vty.c | 50 | ||||
-rw-r--r-- | openbsc/tests/gbproxy/gbproxy_test.c | 888 |
7 files changed, 764 insertions, 764 deletions
diff --git a/openbsc/include/openbsc/gb_proxy.h b/openbsc/include/openbsc/gb_proxy.h index 0494df0ed..1c06a9035 100644 --- a/openbsc/include/openbsc/gb_proxy.h +++ b/openbsc/include/openbsc/gb_proxy.h @@ -84,7 +84,7 @@ struct gbproxy_config { int acquire_imsi; int route_to_sgsn2; uint16_t nsip_sgsn2_nsei; - enum gbproxy_keep_mode keep_tlli_infos; + enum gbproxy_keep_mode keep_link_infos; /* IMSI checking/matching */ int check_imsi; @@ -135,7 +135,7 @@ struct gbproxy_tlli_state { uint32_t ptmsi; }; -struct gbproxy_tlli_info { +struct gbproxy_link_info { struct llist_head list; struct gbproxy_tlli_state tlli; @@ -177,52 +177,52 @@ int gbprox_reset_persistent_nsvcs(struct gprs_ns_inst *nsi); void gbprox_reset(struct gbproxy_config *cfg); /* TLLI info handling */ -void gbproxy_delete_tlli_infos(struct gbproxy_peer *peer); -struct gbproxy_tlli_info *gbproxy_update_tlli_state_ul( +void gbproxy_delete_link_infos(struct gbproxy_peer *peer); +struct gbproxy_link_info *gbproxy_update_link_state_ul( struct gbproxy_peer *peer, time_t now, struct gprs_gb_parse_context *parse_ctx); -struct gbproxy_tlli_info *gbproxy_update_tlli_state_dl( +struct gbproxy_link_info *gbproxy_update_link_state_dl( struct gbproxy_peer *peer, time_t now, struct gprs_gb_parse_context *parse_ctx); -void gbproxy_update_tlli_state_after( - struct gbproxy_peer *peer, struct gbproxy_tlli_info *tlli_info, +void gbproxy_update_link_state_after( + struct gbproxy_peer *peer, struct gbproxy_link_info *link_info, time_t now, struct gprs_gb_parse_context *parse_ctx); -int gbproxy_remove_stale_tlli_infos(struct gbproxy_peer *peer, time_t now); -void gbproxy_delete_tlli_info(struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info); -void gbproxy_tlli_info_discard_messages(struct gbproxy_tlli_info *tlli_info); - -void gbproxy_attach_tlli_info(struct gbproxy_peer *peer, time_t now, - struct gbproxy_tlli_info *tlli_info); -void gbproxy_update_tlli_info(struct gbproxy_tlli_info *tlli_info, +int gbproxy_remove_stale_link_infos(struct gbproxy_peer *peer, time_t now); +void gbproxy_delete_link_info(struct gbproxy_peer *peer, + struct gbproxy_link_info *link_info); +void gbproxy_link_info_discard_messages(struct gbproxy_link_info *link_info); + +void gbproxy_attach_link_info(struct gbproxy_peer *peer, time_t now, + struct gbproxy_link_info *link_info); +void gbproxy_update_link_info(struct gbproxy_link_info *link_info, const uint8_t *imsi, size_t imsi_len); -void gbproxy_detach_tlli_info(struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info); -struct gbproxy_tlli_info *gbproxy_tlli_info_alloc( struct gbproxy_peer *peer); +void gbproxy_detach_link_info(struct gbproxy_peer *peer, + struct gbproxy_link_info *link_info); +struct gbproxy_link_info *gbproxy_link_info_alloc( struct gbproxy_peer *peer); -struct gbproxy_tlli_info *gbproxy_tlli_info_by_tlli( +struct gbproxy_link_info *gbproxy_link_info_by_tlli( struct gbproxy_peer *peer, uint32_t tlli); -struct gbproxy_tlli_info *gbproxy_tlli_info_by_imsi( +struct gbproxy_link_info *gbproxy_link_info_by_imsi( struct gbproxy_peer *peer, const uint8_t *imsi, size_t imsi_len); -struct gbproxy_tlli_info *gbproxy_tlli_info_by_any_sgsn_tlli( +struct gbproxy_link_info *gbproxy_link_info_by_any_sgsn_tlli( struct gbproxy_peer *peer, uint32_t tlli); -struct gbproxy_tlli_info *gbproxy_tlli_info_by_sgsn_tlli( +struct gbproxy_link_info *gbproxy_link_info_by_sgsn_tlli( struct gbproxy_peer *peer, uint32_t tlli, uint32_t sgsn_nsei); -struct gbproxy_tlli_info *gbproxy_tlli_info_by_ptmsi( +struct gbproxy_link_info *gbproxy_link_info_by_ptmsi( struct gbproxy_peer *peer, uint32_t ptmsi); int gbproxy_imsi_matches( struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info); + struct gbproxy_link_info *link_info); uint32_t gbproxy_map_tlli( - uint32_t other_tlli, struct gbproxy_tlli_info *tlli_info, int to_bss); + uint32_t other_tlli, struct gbproxy_link_info *link_info, int to_bss); /* needed by gb_proxy_tlli.h */ uint32_t gbproxy_make_bss_ptmsi(struct gbproxy_peer *peer, uint32_t sgsn_ptmsi); uint32_t gbproxy_make_sgsn_tlli( - struct gbproxy_peer *peer, struct gbproxy_tlli_info *tlli_info, + struct gbproxy_peer *peer, struct gbproxy_link_info *link_info, uint32_t bss_tlli); int gbproxy_check_imsi( struct gbproxy_peer *peer, const uint8_t *imsi, size_t imsi_len); @@ -230,12 +230,12 @@ int gbproxy_check_imsi( /* Message patching */ void gbproxy_patch_bssgp( struct msgb *msg, uint8_t *bssgp, size_t bssgp_len, - struct gbproxy_peer *peer, struct gbproxy_tlli_info *tlli_info, + struct gbproxy_peer *peer, struct gbproxy_link_info *link_info, int *len_change, struct gprs_gb_parse_context *parse_ctx); int gbproxy_patch_llc( struct msgb *msg, uint8_t *llc, size_t llc_len, - struct gbproxy_peer *peer, struct gbproxy_tlli_info *tlli_info, + struct gbproxy_peer *peer, struct gbproxy_link_info *link_info, int *len_change, struct gprs_gb_parse_context *parse_ctx); int gbproxy_set_patch_filter( diff --git a/openbsc/src/gprs/gb_proxy.c b/openbsc/src/gprs/gb_proxy.c index b5566e3d2..130ab4ee1 100644 --- a/openbsc/src/gprs/gb_proxy.c +++ b/openbsc/src/gprs/gb_proxy.c @@ -234,7 +234,7 @@ uint32_t gbproxy_make_bss_ptmsi(struct gbproxy_peer *peer, bss_ptmsi = rand_r(&peer->cfg->bss_ptmsi_state); bss_ptmsi = bss_ptmsi | 0xC0000000; - if (gbproxy_tlli_info_by_ptmsi(peer, bss_ptmsi)) + if (gbproxy_link_info_by_ptmsi(peer, bss_ptmsi)) bss_ptmsi = GSM_RESERVED_TMSI; } while (bss_ptmsi == GSM_RESERVED_TMSI && max_retries--); } @@ -246,15 +246,15 @@ uint32_t gbproxy_make_bss_ptmsi(struct gbproxy_peer *peer, } uint32_t gbproxy_make_sgsn_tlli(struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info, + struct gbproxy_link_info *link_info, uint32_t bss_tlli) { uint32_t sgsn_tlli; int max_retries = 23; if (!peer->cfg->patch_ptmsi) { sgsn_tlli = bss_tlli; - } else if (tlli_info->sgsn_tlli.ptmsi != GSM_RESERVED_TMSI) { - sgsn_tlli = gprs_tmsi2tlli(tlli_info->sgsn_tlli.ptmsi, + } else if (link_info->sgsn_tlli.ptmsi != GSM_RESERVED_TMSI) { + sgsn_tlli = gprs_tmsi2tlli(link_info->sgsn_tlli.ptmsi, TLLI_FOREIGN); } else { do { @@ -262,7 +262,7 @@ uint32_t gbproxy_make_sgsn_tlli(struct gbproxy_peer *peer, sgsn_tlli = rand_r(&peer->cfg->sgsn_tlli_state); sgsn_tlli = (sgsn_tlli & 0x7fffffff) | 0x78000000; - if (gbproxy_tlli_info_by_any_sgsn_tlli(peer, sgsn_tlli)) + if (gbproxy_link_info_by_any_sgsn_tlli(peer, sgsn_tlli)) sgsn_tlli = 0; } while (!sgsn_tlli && max_retries--); } @@ -274,33 +274,33 @@ uint32_t gbproxy_make_sgsn_tlli(struct gbproxy_peer *peer, } /* Returns != 0 iff IMSI acquisition was in progress */ -static int gbproxy_restart_imsi_acquisition(struct gbproxy_tlli_info* tlli_info) +static int gbproxy_restart_imsi_acquisition(struct gbproxy_link_info* link_info) { int in_progress = 0; - if (!tlli_info) + if (!link_info) return 0; - if (tlli_info->imsi_acq_pending) { + if (link_info->imsi_acq_pending) { in_progress = 1; - tlli_info->imsi_acq_retries += 1; + link_info->imsi_acq_retries += 1; } - gbproxy_tlli_info_discard_messages(tlli_info); - tlli_info->imsi_acq_pending = 0; + gbproxy_link_info_discard_messages(link_info); + link_info->imsi_acq_pending = 0; return in_progress; } -static void gbproxy_reset_imsi_acquisition(struct gbproxy_tlli_info* tlli_info) +static void gbproxy_reset_imsi_acquisition(struct gbproxy_link_info* link_info) { - gbproxy_restart_imsi_acquisition(tlli_info); - tlli_info->imsi_acq_retries = 0; + gbproxy_restart_imsi_acquisition(link_info); + link_info->imsi_acq_retries = 0; } static void gbproxy_flush_stored_messages(struct gbproxy_peer *peer, struct msgb *msg, time_t now, - struct gbproxy_tlli_info* tlli_info, + struct gbproxy_link_info* link_info, struct gprs_gb_parse_context *parse_ctx) { int rc; @@ -314,7 +314,7 @@ static void gbproxy_flush_stored_messages(struct gbproxy_peer *peer, msgb_nsei(msg)); /* Patch and flush stored messages towards the SGSN */ - while ((stored_msg = msgb_dequeue(&tlli_info->stored_msgs))) { + while ((stored_msg = msgb_dequeue(&link_info->stored_msgs))) { struct gprs_gb_parse_context tmp_parse_ctx = {0}; tmp_parse_ctx.to_bss = 0; tmp_parse_ctx.peer_nsei = msgb_nsei(stored_msg); @@ -325,14 +325,14 @@ static void gbproxy_flush_stored_messages(struct gbproxy_peer *peer, &tmp_parse_ctx); gbproxy_patch_bssgp(msg, msgb_bssgph(stored_msg), msgb_bssgp_len(stored_msg), - peer, tlli_info, &len_change, + peer, link_info, &len_change, &tmp_parse_ctx); - gbproxy_update_tlli_state_after(peer, tlli_info, now, + gbproxy_update_link_state_after(peer, link_info, now, &tmp_parse_ctx); rc = gbprox_relay2sgsn(peer->cfg, stored_msg, - msgb_bvci(msg), tlli_info->sgsn_nsei); + msgb_bvci(msg), link_info->sgsn_nsei); if (rc < 0) LOGP(DLLC, LOGL_ERROR, @@ -346,7 +346,7 @@ static void gbproxy_flush_stored_messages(struct gbproxy_peer *peer, } static void gbproxy_acquire_imsi(struct gbproxy_peer *peer, - struct gbproxy_tlli_info* tlli_info, + struct gbproxy_link_info* link_info, uint16_t bvci) { struct msgb *idreq_msg; @@ -362,14 +362,14 @@ static void gbproxy_acquire_imsi(struct gbproxy_peer *peer, * be an issue when P-TMSI patching is _not_ enabled and the SGSN * doesn't reset V(UT) after a detach. */ gprs_push_llc_ui(idreq_msg, 0, GPRS_SAPI_GMM, - (tlli_info->imsi_acq_retries + 256) % 512); - gprs_push_bssgp_dl_unitdata(idreq_msg, tlli_info->tlli.current); + (link_info->imsi_acq_retries + 256) % 512); + gprs_push_bssgp_dl_unitdata(idreq_msg, link_info->tlli.current); gbprox_relay2peer(idreq_msg, peer, bvci); msgb_free(idreq_msg); } static void gbproxy_tx_detach_acc(struct gbproxy_peer *peer, - struct gbproxy_tlli_info* tlli_info, + struct gbproxy_link_info* link_info, uint16_t bvci) { struct msgb *detacc_msg; @@ -378,8 +378,8 @@ static void gbproxy_tx_detach_acc(struct gbproxy_peer *peer, detacc_msg = gsm48_msgb_alloc(); gprs_put_mo_detach_acc(detacc_msg); gprs_push_llc_ui(detacc_msg, 0, GPRS_SAPI_GMM, - (tlli_info->imsi_acq_retries + 256) % 512); - gprs_push_bssgp_dl_unitdata(detacc_msg, tlli_info->tlli.current); + (link_info->imsi_acq_retries + 256) % 512); + gprs_push_bssgp_dl_unitdata(detacc_msg, link_info->tlli.current); gbprox_relay2peer(detacc_msg, peer, bvci); msgb_free(detacc_msg); } @@ -388,15 +388,15 @@ static void gbproxy_tx_detach_acc(struct gbproxy_peer *peer, static int gbproxy_imsi_acquisition(struct gbproxy_peer *peer, struct msgb *msg, time_t now, - struct gbproxy_tlli_info* tlli_info, + struct gbproxy_link_info* link_info, struct gprs_gb_parse_context *parse_ctx) { struct msgb *stored_msg; - if (!tlli_info) + if (!link_info) return 1; - if (!tlli_info->imsi_acq_pending && tlli_info->imsi_len > 0) + if (!link_info->imsi_acq_pending && link_info->imsi_len > 0) return 1; if (parse_ctx->g48_hdr) @@ -404,7 +404,7 @@ static int gbproxy_imsi_acquisition(struct gbproxy_peer *peer, { case GSM48_MT_GMM_RA_UPD_REQ: case GSM48_MT_GMM_ATTACH_REQ: - if (gbproxy_restart_imsi_acquisition(tlli_info)) { + if (gbproxy_restart_imsi_acquisition(link_info)) { LOGP(DLLC, LOGL_INFO, "NSEI=%d(BSS) IMSI acquisition was in progress " "when receiving an %s.\n", @@ -413,7 +413,7 @@ static int gbproxy_imsi_acquisition(struct gbproxy_peer *peer, break; case GSM48_MT_GMM_DETACH_REQ: /* Nothing has been sent to the SGSN yet */ - if (tlli_info->imsi_acq_pending) { + if (link_info->imsi_acq_pending) { LOGP(DLLC, LOGL_INFO, "NSEI=%d(BSS) IMSI acquisition was in progress " "when receiving a DETACH_REQ.\n", @@ -424,26 +424,26 @@ static int gbproxy_imsi_acquisition(struct gbproxy_peer *peer, "NSEI=%d(BSS) IMSI not yet acquired, " "faking a DETACH_ACC.\n", msgb_nsei(msg)); - gbproxy_tx_detach_acc(peer, tlli_info, msgb_bvci(msg)); + gbproxy_tx_detach_acc(peer, link_info, msgb_bvci(msg)); parse_ctx->invalidate_tlli = 1; } - gbproxy_reset_imsi_acquisition(tlli_info); - gbproxy_update_tlli_state_after(peer, tlli_info, now, + gbproxy_reset_imsi_acquisition(link_info); + gbproxy_update_link_state_after(peer, link_info, now, parse_ctx); return 0; } - if (tlli_info->imsi_acq_pending && tlli_info->imsi_len > 0) { + if (link_info->imsi_acq_pending && link_info->imsi_len > 0) { int is_ident_resp = parse_ctx->g48_hdr && parse_ctx->g48_hdr->proto_discr == GSM48_PDISC_MM_GPRS && parse_ctx->g48_hdr->msg_type == GSM48_MT_GMM_ID_RESP; /* The IMSI is now available */ - gbproxy_flush_stored_messages(peer, msg, now, tlli_info, + gbproxy_flush_stored_messages(peer, msg, now, link_info, parse_ctx); - gbproxy_reset_imsi_acquisition(tlli_info); + gbproxy_reset_imsi_acquisition(link_info); /* This message is most probably the response to the ident * request sent by gbproxy_acquire_imsi(). Don't forward it to @@ -461,22 +461,22 @@ static int gbproxy_imsi_acquisition(struct gbproxy_peer *peer, parse_ctx->llc_msg_name ? parse_ctx->llc_msg_name : "BSSGP"); stored_msg = gprs_msgb_copy(msg, "process_bssgp_ul"); - msgb_enqueue(&tlli_info->stored_msgs, stored_msg); + msgb_enqueue(&link_info->stored_msgs, stored_msg); - if (!tlli_info->imsi_acq_pending) { + if (!link_info->imsi_acq_pending) { LOGP(DLLC, LOGL_INFO, "NSEI=%d(BSS) IMSI is required but not available, " "initiating identification procedure (%s)\n", msgb_nsei(msg), parse_ctx->llc_msg_name ? parse_ctx->llc_msg_name : "BSSGP"); - gbproxy_acquire_imsi(peer, tlli_info, msgb_bvci(msg)); + gbproxy_acquire_imsi(peer, link_info, msgb_bvci(msg)); /* There is no explicit retransmission handling, the * implementation relies on the MS doing proper retransmissions * of the triggering message instead */ - tlli_info->imsi_acq_pending = 1; + link_info->imsi_acq_pending = 1; } return 0; @@ -518,7 +518,7 @@ static int gbprox_process_bssgp_ul(struct gbproxy_config *cfg, int rc; int len_change = 0; time_t now; - struct gbproxy_tlli_info *tlli_info = NULL; + struct gbproxy_link_info *link_info = NULL; uint32_t sgsn_nsei = cfg->nsip_sgsn_nsei; if (!cfg->core_mcc && !cfg->core_mnc && !cfg->core_apn && @@ -556,7 +556,7 @@ static int gbprox_process_bssgp_ul(struct gbproxy_config *cfg, gprs_gb_log_parse_context(&parse_ctx, "BSSGP"); - tlli_info = gbproxy_update_tlli_state_ul(peer, now, &parse_ctx); + link_info = gbproxy_update_link_state_ul(peer, now, &parse_ctx); if (parse_ctx.g48_hdr) { switch (parse_ctx.g48_hdr->msg_type) { @@ -569,28 +569,28 @@ static int gbprox_process_bssgp_ul(struct gbproxy_config *cfg, } } - if (tlli_info && cfg->route_to_sgsn2) { - if (cfg->acquire_imsi && tlli_info->imsi_len == 0) + if (link_info && cfg->route_to_sgsn2) { + if (cfg->acquire_imsi && link_info->imsi_len == 0) sgsn_nsei = 0xffff; - else if (gbproxy_imsi_matches(peer, tlli_info)) + else if (gbproxy_imsi_matches(peer, link_info)) sgsn_nsei = cfg->nsip_sgsn2_nsei; } - if (tlli_info) - tlli_info->sgsn_nsei = sgsn_nsei; + if (link_info) + link_info->sgsn_nsei = sgsn_nsei; /* Handle IMSI acquisition */ if (cfg->acquire_imsi) { - rc = gbproxy_imsi_acquisition(peer, msg, now, tlli_info, + rc = gbproxy_imsi_acquisition(peer, msg, now, link_info, &parse_ctx); if (rc <= 0) return rc; } gbproxy_patch_bssgp(msg, msgb_bssgph(msg), msgb_bssgp_len(msg), - peer, tlli_info, &len_change, &parse_ctx); + peer, link_info, &len_change, &parse_ctx); - gbproxy_update_tlli_state_after(peer, tlli_info, now, &parse_ctx); + gbproxy_update_link_state_after(peer, link_info, now, &parse_ctx); if (sgsn_nsei != cfg->nsip_sgsn_nsei) { /* Send message directly to the selected SGSN */ @@ -611,7 +611,7 @@ static void gbprox_process_bssgp_dl(struct gbproxy_config *cfg, int rc; int len_change = 0; time_t now; - struct gbproxy_tlli_info *tlli_info = NULL; + struct gbproxy_link_info *link_info = NULL; if (!cfg->core_mcc && !cfg->core_mnc && !cfg->core_apn && !cfg->acquire_imsi && !cfg->patch_ptmsi && !cfg->route_to_sgsn2) @@ -655,12 +655,12 @@ static void gbprox_process_bssgp_dl(struct gbproxy_config *cfg, gprs_gb_log_parse_context(&parse_ctx, "BSSGP"); - tlli_info = gbproxy_update_tlli_state_dl(peer, now, &parse_ctx); + link_info = gbproxy_update_link_state_dl(peer, now, &parse_ctx); gbproxy_patch_bssgp(msg, msgb_bssgph(msg), msgb_bssgp_len(msg), - peer, tlli_info, &len_change, &parse_ctx); + peer, link_info, &len_change, &parse_ctx); - gbproxy_update_tlli_state_after(peer, tlli_info, now, &parse_ctx); + gbproxy_update_link_state_after(peer, link_info, now, &parse_ctx); return; } diff --git a/openbsc/src/gprs/gb_proxy_patch.c b/openbsc/src/gprs/gb_proxy_patch.c index 93b85880c..cf6eb8887 100644 --- a/openbsc/src/gprs/gb_proxy_patch.c +++ b/openbsc/src/gprs/gb_proxy_patch.c @@ -192,20 +192,20 @@ static int gbproxy_patch_ptmsi(uint8_t *ptmsi_enc, int gbproxy_patch_llc(struct msgb *msg, uint8_t *llc, size_t llc_len, struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info, int *len_change, + struct gbproxy_link_info *link_info, int *len_change, struct gprs_gb_parse_context *parse_ctx) { struct gprs_llc_hdr_parsed *ghp = &parse_ctx->llc_hdr_parsed; int have_patched = 0; int fcs; - if (parse_ctx->ptmsi_enc && tlli_info && + if (parse_ctx->ptmsi_enc && link_info && !parse_ctx->old_raid_is_foreign && peer->cfg->patch_ptmsi) { uint32_t ptmsi; if (parse_ctx->to_bss) - ptmsi = tlli_info->tlli.ptmsi; + ptmsi = link_info->tlli.ptmsi; else - ptmsi = tlli_info->sgsn_tlli.ptmsi; + ptmsi = link_info->sgsn_tlli.ptmsi; if (ptmsi != GSM_RESERVED_TMSI) { if (gbproxy_patch_ptmsi(parse_ctx->ptmsi_enc, peer, @@ -216,12 +216,12 @@ int gbproxy_patch_llc(struct msgb *msg, uint8_t *llc, size_t llc_len, } } - if (parse_ctx->new_ptmsi_enc && tlli_info && peer->cfg->patch_ptmsi) { + if (parse_ctx->new_ptmsi_enc && link_info && peer->cfg->patch_ptmsi) { uint32_t ptmsi; if (parse_ctx->to_bss) - ptmsi = tlli_info->tlli.ptmsi; + ptmsi = link_info->tlli.ptmsi; else - ptmsi = tlli_info->sgsn_tlli.ptmsi; + ptmsi = link_info->sgsn_tlli.ptmsi; OSMO_ASSERT(ptmsi); if (gbproxy_patch_ptmsi(parse_ctx->new_ptmsi_enc, peer, @@ -245,7 +245,7 @@ int gbproxy_patch_llc(struct msgb *msg, uint8_t *llc, size_t llc_len, if (parse_ctx->apn_ie && peer->cfg->core_apn && !parse_ctx->to_bss && - gbproxy_imsi_matches(peer, tlli_info) && peer->cfg->core_apn) { + gbproxy_imsi_matches(peer, link_info) && peer->cfg->core_apn) { size_t new_len; gbproxy_patch_apn_ie(msg, parse_ctx->apn_ie, parse_ctx->apn_ie_len, @@ -275,7 +275,7 @@ int gbproxy_patch_llc(struct msgb *msg, uint8_t *llc, size_t llc_len, /* patch BSSGP message to use core_mcc/mnc on the SGSN side */ void gbproxy_patch_bssgp(struct msgb *msg, uint8_t *bssgp, size_t bssgp_len, struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info, int *len_change, + struct gbproxy_link_info *link_info, int *len_change, struct gprs_gb_parse_context *parse_ctx) { const char *err_info = NULL; @@ -296,7 +296,7 @@ void gbproxy_patch_bssgp(struct msgb *msg, uint8_t *bssgp, size_t bssgp_len, goto patch_error; } - if (!tlli_info && parse_ctx->tlli_enc && parse_ctx->to_bss) { + if (!link_info && parse_ctx->tlli_enc && parse_ctx->to_bss) { /* Happens with unknown (not cached) TLLI coming from * the SGSN */ /* TODO: What shall be done with the message in this case? */ @@ -305,12 +305,12 @@ void gbproxy_patch_bssgp(struct msgb *msg, uint8_t *bssgp, size_t bssgp_len, goto patch_error; } - if (!tlli_info) + if (!link_info) return; if (parse_ctx->tlli_enc && peer->cfg->patch_ptmsi) { uint32_t tlli = gbproxy_map_tlli(parse_ctx->tlli, - tlli_info, parse_ctx->to_bss); + link_info, parse_ctx->to_bss); if (tlli) { gbproxy_patch_tlli(parse_ctx->tlli_enc, peer, tlli, @@ -329,7 +329,7 @@ void gbproxy_patch_bssgp(struct msgb *msg, uint8_t *bssgp, size_t bssgp_len, size_t llc_len = parse_ctx->llc_len; int llc_len_change = 0; - gbproxy_patch_llc(msg, llc, llc_len, peer, tlli_info, + gbproxy_patch_llc(msg, llc, llc_len, peer, link_info, &llc_len_change, parse_ctx); /* Note that the APN might have been resized here, but no * pointer int the parse_ctx will refer to an adress after the diff --git a/openbsc/src/gprs/gb_proxy_peer.c b/openbsc/src/gprs/gb_proxy_peer.c index 335b46f16..8f9066567 100644 --- a/openbsc/src/gprs/gb_proxy_peer.c +++ b/openbsc/src/gprs/gb_proxy_peer.c @@ -172,7 +172,7 @@ void gbproxy_peer_free(struct gbproxy_peer *peer) { llist_del(&peer->list); - gbproxy_delete_tlli_infos(peer); + gbproxy_delete_link_infos(peer); rate_ctr_group_free(peer->ctrg); peer->ctrg = NULL; diff --git a/openbsc/src/gprs/gb_proxy_tlli.c b/openbsc/src/gprs/gb_proxy_tlli.c index 70f2bfb62..14ce7d86b 100644 --- a/openbsc/src/gprs/gb_proxy_tlli.c +++ b/openbsc/src/gprs/gb_proxy_tlli.c @@ -32,140 +32,140 @@ #include <osmocom/core/rate_ctr.h> #include <osmocom/core/talloc.h> -struct gbproxy_tlli_info *gbproxy_tlli_info_by_tlli(struct gbproxy_peer *peer, +struct gbproxy_link_info *gbproxy_link_info_by_tlli(struct gbproxy_peer *peer, uint32_t tlli) { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; struct gbproxy_patch_state *state = &peer->patch_state; - llist_for_each_entry(tlli_info, &state->enabled_tllis, list) - if (tlli_info->tlli.current == tlli || - tlli_info->tlli.assigned == tlli) - return tlli_info; + llist_for_each_entry(link_info, &state->enabled_tllis, list) + if (link_info->tlli.current == tlli || + link_info->tlli.assigned == tlli) + return link_info; return NULL; } -struct gbproxy_tlli_info *gbproxy_tlli_info_by_ptmsi( +struct gbproxy_link_info *gbproxy_link_info_by_ptmsi( struct gbproxy_peer *peer, uint32_t ptmsi) { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; struct gbproxy_patch_state *state = &peer->patch_state; - llist_for_each_entry(tlli_info, &state->enabled_tllis, list) - if (tlli_info->tlli.ptmsi == ptmsi) - return tlli_info; + llist_for_each_entry(link_info, &state->enabled_tllis, list) + if (link_info->tlli.ptmsi == ptmsi) + return link_info; return NULL; } -struct gbproxy_tlli_info *gbproxy_tlli_info_by_any_sgsn_tlli( +struct gbproxy_link_info *gbproxy_link_info_by_any_sgsn_tlli( struct gbproxy_peer *peer, uint32_t tlli) { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; struct gbproxy_patch_state *state = &peer->patch_state; /* Don't care about the NSEI */ - llist_for_each_entry(tlli_info, &state->enabled_tllis, list) - if (tlli_info->sgsn_tlli.current == tlli || - tlli_info->sgsn_tlli.assigned == tlli) - return tlli_info; + llist_for_each_entry(link_info, &state->enabled_tllis, list) + if (link_info->sgsn_tlli.current == tlli || + link_info->sgsn_tlli.assigned == tlli) + return link_info; return NULL; } -struct gbproxy_tlli_info *gbproxy_tlli_info_by_sgsn_tlli( +struct gbproxy_link_info *gbproxy_link_info_by_sgsn_tlli( struct gbproxy_peer *peer, uint32_t tlli, uint32_t sgsn_nsei) { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; struct gbproxy_patch_state *state = &peer->patch_state; - llist_for_each_entry(tlli_info, &state->enabled_tllis, list) - if ((tlli_info->sgsn_tlli.current == tlli || - tlli_info->sgsn_tlli.assigned == tlli) && - tlli_info->sgsn_nsei == sgsn_nsei) - return tlli_info; + llist_for_each_entry(link_info, &state->enabled_tllis, list) + if ((link_info->sgsn_tlli.current == tlli || + link_info->sgsn_tlli.assigned == tlli) && + link_info->sgsn_nsei == sgsn_nsei) + return link_info; return NULL; } -struct gbproxy_tlli_info *gbproxy_tlli_info_by_imsi( +struct gbproxy_link_info *gbproxy_link_info_by_imsi( struct gbproxy_peer *peer, const uint8_t *imsi, size_t imsi_len) { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; struct gbproxy_patch_state *state = &peer->patch_state; if (!gprs_is_mi_imsi(imsi, imsi_len)) return NULL; - llist_for_each_entry(tlli_info, &state->enabled_tllis, list) { - if (tlli_info->imsi_len != imsi_len) + llist_for_each_entry(link_info, &state->enabled_tllis, list) { + if (link_info->imsi_len != imsi_len) continue; - if (memcmp(tlli_info->imsi, imsi, imsi_len) != 0) + if (memcmp(link_info->imsi, imsi, imsi_len) != 0) continue; - return tlli_info; + return link_info; } return NULL; } -void gbproxy_tlli_info_discard_messages(struct gbproxy_tlli_info *tlli_info) +void gbproxy_link_info_discard_messages(struct gbproxy_link_info *link_info) { struct msgb *msg, *nxt; - llist_for_each_entry_safe(msg, nxt, &tlli_info->stored_msgs, list) { + llist_for_each_entry_safe(msg, nxt, &link_info->stored_msgs, list) { llist_del(&msg->list); msgb_free(msg); } } -void gbproxy_delete_tlli_info(struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info) +void gbproxy_delete_link_info(struct gbproxy_peer *peer, + struct gbproxy_link_info *link_info) { struct gbproxy_patch_state *state = &peer->patch_state; - gbproxy_tlli_info_discard_messages(tlli_info); + gbproxy_link_info_discard_messages(link_info); - llist_del(&tlli_info->list); - talloc_free(tlli_info); + llist_del(&link_info->list); + talloc_free(link_info); state->enabled_tllis_count -= 1; peer->ctrg->ctr[GBPROX_PEER_CTR_TLLI_CACHE_SIZE].current = state->enabled_tllis_count; } -void gbproxy_delete_tlli_infos(struct gbproxy_peer *peer) +void gbproxy_delete_link_infos(struct gbproxy_peer *peer) { - struct gbproxy_tlli_info *tlli_info, *nxt; + struct gbproxy_link_info *link_info, *nxt; struct gbproxy_patch_state *state = &peer->patch_state; - llist_for_each_entry_safe(tlli_info, nxt, &state->enabled_tllis, list) - gbproxy_delete_tlli_info(peer, tlli_info); + llist_for_each_entry_safe(link_info, nxt, &state->enabled_tllis, list) + gbproxy_delete_link_info(peer, link_info); OSMO_ASSERT(state->enabled_tllis_count == 0); OSMO_ASSERT(llist_empty(&state->enabled_tllis)); } -void gbproxy_attach_tlli_info(struct gbproxy_peer *peer, time_t now, - struct gbproxy_tlli_info *tlli_info) +void gbproxy_attach_link_info(struct gbproxy_peer *peer, time_t now, + struct gbproxy_link_info *link_info) { struct gbproxy_patch_state *state = &peer->patch_state; - tlli_info->timestamp = now; - llist_add(&tlli_info->list, &state->enabled_tllis); + link_info->timestamp = now; + llist_add(&link_info->list, &state->enabled_tllis); state->enabled_tllis_count += 1; peer->ctrg->ctr[GBPROX_PEER_CTR_TLLI_CACHE_SIZE].current = state->enabled_tllis_count; } -int gbproxy_remove_stale_tlli_infos(struct gbproxy_peer *peer, time_t now) +int gbproxy_remove_stale_link_infos(struct gbproxy_peer *peer, time_t now) { struct gbproxy_patch_state *state = &peer->patch_state; int exceeded_max_len = 0; @@ -179,27 +179,27 @@ int gbproxy_remove_stale_tlli_infos(struct gbproxy_peer *peer, time_t now) check_for_age = peer->cfg->tlli_max_age > 0; for (; exceeded_max_len > 0; exceeded_max_len--) { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; OSMO_ASSERT(!llist_empty(&state->enabled_tllis)); - tlli_info = llist_entry(state->enabled_tllis.prev, - struct gbproxy_tlli_info, + link_info = llist_entry(state->enabled_tllis.prev, + struct gbproxy_link_info, list); LOGP(DGPRS, LOGL_INFO, "Removing TLLI %08x from list " "(stale, length %d, max_len exceeded)\n", - tlli_info->tlli.current, state->enabled_tllis_count); + link_info->tlli.current, state->enabled_tllis_count); - gbproxy_delete_tlli_info(peer, tlli_info); + gbproxy_delete_link_info(peer, link_info); deleted_count += 1; } while (check_for_age && !llist_empty(&state->enabled_tllis)) { time_t age; - struct gbproxy_tlli_info *tlli_info; - tlli_info = llist_entry(state->enabled_tllis.prev, - struct gbproxy_tlli_info, + struct gbproxy_link_info *link_info; + link_info = llist_entry(state->enabled_tllis.prev, + struct gbproxy_link_info, list); - age = now - tlli_info->timestamp; + age = now - link_info->timestamp; /* age < 0 only happens after system time jumps, discard entry */ if (age <= peer->cfg->tlli_max_age && age >= 0) { check_for_age = 0; @@ -209,35 +209,35 @@ int gbproxy_remove_stale_tlli_infos(struct gbproxy_peer *peer, time_t now) LOGP(DGPRS, LOGL_INFO, "Removing TLLI %08x from list " "(stale, age %d, max_age exceeded)\n", - tlli_info->tlli.current, (int)age); + link_info->tlli.current, (int)age); - gbproxy_delete_tlli_info(peer, tlli_info); + gbproxy_delete_link_info(peer, link_info); deleted_count += 1; } return deleted_count; } -struct gbproxy_tlli_info *gbproxy_tlli_info_alloc( struct gbproxy_peer *peer) +struct gbproxy_link_info *gbproxy_link_info_alloc( struct gbproxy_peer *peer) { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; - tlli_info = talloc_zero(peer, struct gbproxy_tlli_info); - tlli_info->tlli.ptmsi = GSM_RESERVED_TMSI; - tlli_info->sgsn_tlli.ptmsi = GSM_RESERVED_TMSI; + link_info = talloc_zero(peer, struct gbproxy_link_info); + link_info->tlli.ptmsi = GSM_RESERVED_TMSI; + link_info->sgsn_tlli.ptmsi = GSM_RESERVED_TMSI; - INIT_LLIST_HEAD(&tlli_info->stored_msgs); + INIT_LLIST_HEAD(&link_info->stored_msgs); - return tlli_info; + return link_info; } -void gbproxy_detach_tlli_info( +void gbproxy_detach_link_info( struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info) + struct gbproxy_link_info *link_info) { struct gbproxy_patch_state *state = &peer->patch_state; - llist_del(&tlli_info->list); + llist_del(&link_info->list); OSMO_ASSERT(state->enabled_tllis_count > 0); state->enabled_tllis_count -= 1; @@ -245,17 +245,17 @@ void gbproxy_detach_tlli_info( state->enabled_tllis_count; } -void gbproxy_update_tlli_info(struct gbproxy_tlli_info *tlli_info, +void gbproxy_update_link_info(struct gbproxy_link_info *link_info, const uint8_t *imsi, size_t imsi_len) { if (!gprs_is_mi_imsi(imsi, imsi_len)) return; - tlli_info->imsi_len = imsi_len; - tlli_info->imsi = - talloc_realloc_size(tlli_info, tlli_info->imsi, imsi_len); - OSMO_ASSERT(tlli_info->imsi != NULL); - memcpy(tlli_info->imsi, imsi, imsi_len); + link_info->imsi_len = imsi_len; + link_info->imsi = + talloc_realloc_size(link_info, link_info->imsi, imsi_len); + OSMO_ASSERT(link_info->imsi != NULL); + memcpy(link_info->imsi, imsi, imsi_len); } void gbproxy_reassign_tlli(struct gbproxy_tlli_state *tlli_state, @@ -275,16 +275,16 @@ void gbproxy_reassign_tlli(struct gbproxy_tlli_state *tlli_state, } uint32_t gbproxy_map_tlli(uint32_t other_tlli, - struct gbproxy_tlli_info *tlli_info, int to_bss) + struct gbproxy_link_info *link_info, int to_bss) { uint32_t tlli = 0; struct gbproxy_tlli_state *src, *dst; if (to_bss) { - src = &tlli_info->sgsn_tlli; - dst = &tlli_info->tlli; + src = &link_info->sgsn_tlli; + dst = &link_info->tlli; } else { - src = &tlli_info->tlli; - dst = &tlli_info->sgsn_tlli; + src = &link_info->tlli; + dst = &link_info->sgsn_tlli; } if (src->current == other_tlli) tlli = dst->current; @@ -326,78 +326,78 @@ static void gbproxy_validate_tlli(struct gbproxy_tlli_state *tlli_state, tlli_state->assigned = 0; } -static void gbproxy_touch_tlli_info(struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info, +static void gbproxy_touch_link_info(struct gbproxy_peer *peer, + struct gbproxy_link_info *link_info, time_t now) { - gbproxy_detach_tlli_info(peer, tlli_info); - gbproxy_attach_tlli_info(peer, now, tlli_info); + gbproxy_detach_link_info(peer, link_info); + gbproxy_attach_link_info(peer, now, link_info); } -static void gbproxy_unregister_tlli_info(struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info) +static void gbproxy_unregister_link_info(struct gbproxy_peer *peer, + struct gbproxy_link_info *link_info) { - if (!tlli_info) + if (!link_info) return; - if (tlli_info->tlli.ptmsi == GSM_RESERVED_TMSI && !tlli_info->imsi_len) { + if (link_info->tlli.ptmsi == GSM_RESERVED_TMSI && !link_info->imsi_len) { LOGP(DGPRS, LOGL_INFO, "Removing TLLI %08x from list (P-TMSI or IMSI are not set)\n", - tlli_info->tlli.current); - gbproxy_delete_tlli_info(peer, tlli_info); + link_info->tlli.current); + gbproxy_delete_link_info(peer, link_info); return; } - tlli_info->tlli.current = 0; - tlli_info->tlli.assigned = 0; - tlli_info->sgsn_tlli.current = 0; - tlli_info->sgsn_tlli.assigned = 0; + link_info->tlli.current = 0; + link_info->tlli.assigned = 0; + link_info->sgsn_tlli.current = 0; + link_info->sgsn_tlli.assigned = 0; - tlli_info->is_deregistered = 1; + link_info->is_deregistered = 1; return; } int gbproxy_imsi_matches(struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info) + struct gbproxy_link_info *link_info) { if (!peer->cfg->check_imsi) return 1; - return tlli_info != NULL && tlli_info->imsi_matches; + return link_info != NULL && link_info->imsi_matches; } void gbproxy_assign_imsi(struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info, + struct gbproxy_link_info *link_info, struct gprs_gb_parse_context *parse_ctx) { int imsi_matches; - struct gbproxy_tlli_info *other_tlli_info; + struct gbproxy_link_info *other_link_info; /* Make sure that there is a second entry with the same IMSI */ - other_tlli_info = gbproxy_tlli_info_by_imsi( + other_link_info = gbproxy_link_info_by_imsi( peer, parse_ctx->imsi, parse_ctx->imsi_len); - if (other_tlli_info && other_tlli_info != tlli_info) { + if (other_link_info && other_link_info != link_info) { char mi_buf[200]; mi_buf[0] = '\0'; gsm48_mi_to_string(mi_buf, sizeof(mi_buf), parse_ctx->imsi, parse_ctx->imsi_len); LOGP(DGPRS, LOGL_INFO, "Removing TLLI %08x from list (IMSI %s re-used)\n", - other_tlli_info->tlli.current, mi_buf); - gbproxy_delete_tlli_info(peer, other_tlli_info); + other_link_info->tlli.current, mi_buf); + gbproxy_delete_link_info(peer, other_link_info); } /* Update the IMSI field */ - gbproxy_update_tlli_info(tlli_info, + gbproxy_update_link_info(link_info, parse_ctx->imsi, parse_ctx->imsi_len); /* Check, whether the IMSI matches */ imsi_matches = gbproxy_check_imsi(peer, parse_ctx->imsi, parse_ctx->imsi_len); if (imsi_matches >= 0) - tlli_info->imsi_matches = imsi_matches; + link_info->imsi_matches = imsi_matches; } static int gbproxy_tlli_match(const struct gbproxy_tlli_state *a, @@ -415,43 +415,43 @@ static int gbproxy_tlli_match(const struct gbproxy_tlli_state *a, return 0; } -static void gbproxy_remove_matching_tlli_infos( - struct gbproxy_peer *peer, struct gbproxy_tlli_info *tlli_info) +static void gbproxy_remove_matching_link_infos( + struct gbproxy_peer *peer, struct gbproxy_link_info *link_info) { - struct gbproxy_tlli_info *info, *nxt; + struct gbproxy_link_info *info, *nxt; struct gbproxy_patch_state *state = &peer->patch_state; /* Make sure that there is no second entry with the same P-TMSI or TLLI */ llist_for_each_entry_safe(info, nxt, &state->enabled_tllis, list) { - if (info == tlli_info) + if (info == link_info) continue; - if (!gbproxy_tlli_match(&tlli_info->tlli, &info->tlli) && - (tlli_info->sgsn_nsei != info->sgsn_nsei || - !gbproxy_tlli_match(&tlli_info->sgsn_tlli, &info->sgsn_tlli))) + if (!gbproxy_tlli_match(&link_info->tlli, &info->tlli) && + (link_info->sgsn_nsei != info->sgsn_nsei || + !gbproxy_tlli_match(&link_info->sgsn_tlli, &info->sgsn_tlli))) continue; LOGP(DGPRS, LOGL_INFO, "Removing TLLI %08x from list (P-TMSI/TLLI re-used)\n", info->tlli.current); - gbproxy_delete_tlli_info(peer, info); + gbproxy_delete_link_info(peer, info); } } -struct gbproxy_tlli_info *gbproxy_get_tlli_info_ul( +struct gbproxy_link_info *gbproxy_get_link_info_ul( struct gbproxy_peer *peer, struct gprs_gb_parse_context *parse_ctx) { - struct gbproxy_tlli_info *tlli_info = NULL; + struct gbproxy_link_info *link_info = NULL; if (parse_ctx->tlli_enc) - tlli_info = gbproxy_tlli_info_by_tlli(peer, parse_ctx->tlli); + link_info = gbproxy_link_info_by_tlli(peer, parse_ctx->tlli); - if (!tlli_info && parse_ctx->imsi) - tlli_info = gbproxy_tlli_info_by_imsi( + if (!link_info && parse_ctx->imsi) + link_info = gbproxy_link_info_by_imsi( peer, parse_ctx->imsi, parse_ctx->imsi_len); - if (!tlli_info && parse_ctx->ptmsi_enc && !parse_ctx->old_raid_is_foreign) { + if (!link_info && parse_ctx->ptmsi_enc && !parse_ctx->old_raid_is_foreign) { uint32_t bss_ptmsi; if (!gprs_parse_mi_tmsi(parse_ctx->ptmsi_enc, GSM48_TMSI_LEN, &bss_ptmsi)) @@ -459,78 +459,78 @@ struct gbproxy_tlli_info *gbproxy_get_tlli_info_ul( "Failed to parse P-TMSI (TLLI is %08x)\n", parse_ctx->tlli); else - tlli_info = gbproxy_tlli_info_by_ptmsi(peer, bss_ptmsi); + link_info = gbproxy_link_info_by_ptmsi(peer, bss_ptmsi); } - if (tlli_info) - tlli_info->is_deregistered = 0; + if (link_info) + link_info->is_deregistered = 0; - return tlli_info; + return link_info; } -struct gbproxy_tlli_info *gbproxy_update_tlli_state_ul( +struct gbproxy_link_info *gbproxy_update_link_state_ul( struct gbproxy_peer *peer, time_t now, struct gprs_gb_parse_context *parse_ctx) { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; - tlli_info = gbproxy_get_tlli_info_ul(peer, parse_ctx); + link_info = gbproxy_get_link_info_ul(peer, parse_ctx); if (parse_ctx->tlli_enc && parse_ctx->llc) { uint32_t sgsn_tlli; - if (!tlli_info) { + if (!link_info) { LOGP(DGPRS, LOGL_INFO, "Adding TLLI %08x to list\n", parse_ctx->tlli); - tlli_info = gbproxy_tlli_info_alloc(peer); - gbproxy_attach_tlli_info(peer, now, tlli_info); + link_info = gbproxy_link_info_alloc(peer); + gbproxy_attach_link_info(peer, now, link_info); /* Setup TLLIs */ - sgsn_tlli = gbproxy_make_sgsn_tlli(peer, tlli_info, + sgsn_tlli = gbproxy_make_sgsn_tlli(peer, link_info, parse_ctx->tlli); - tlli_info->sgsn_tlli.current = sgsn_tlli; - tlli_info->tlli.current = parse_ctx->tlli;; - } else if (!tlli_info->tlli.current) { + link_info->sgsn_tlli.current = sgsn_tlli; + link_info->tlli.current = parse_ctx->tlli;; + } else if (!link_info->tlli.current) { /* New TLLI (info found by IMSI or P-TMSI) */ - tlli_info->tlli.current = parse_ctx->tlli; - tlli_info->sgsn_tlli.current = - gbproxy_make_sgsn_tlli(peer, tlli_info, + link_info->tlli.current = parse_ctx->tlli; + link_info->sgsn_tlli.current = + gbproxy_make_sgsn_tlli(peer, link_info, parse_ctx->tlli); - gbproxy_touch_tlli_info(peer, tlli_info, now); + gbproxy_touch_link_info(peer, link_info, now); } else { - sgsn_tlli = gbproxy_map_tlli(parse_ctx->tlli, tlli_info, 0); + sgsn_tlli = gbproxy_map_tlli(parse_ctx->tlli, link_info, 0); if (!sgsn_tlli) - sgsn_tlli = gbproxy_make_sgsn_tlli(peer, tlli_info, + sgsn_tlli = gbproxy_make_sgsn_tlli(peer, link_info, parse_ctx->tlli); - gbproxy_validate_tlli(&tlli_info->tlli, + gbproxy_validate_tlli(&link_info->tlli, parse_ctx->tlli, 0); - gbproxy_validate_tlli(&tlli_info->sgsn_tlli, + gbproxy_validate_tlli(&link_info->sgsn_tlli, sgsn_tlli, 0); - gbproxy_touch_tlli_info(peer, tlli_info, now); + gbproxy_touch_link_info(peer, link_info, now); } - } else if (tlli_info) { - gbproxy_touch_tlli_info(peer, tlli_info, now); + } else if (link_info) { + gbproxy_touch_link_info(peer, link_info, now); } - if (parse_ctx->imsi && tlli_info && tlli_info->imsi_len == 0) - gbproxy_assign_imsi(peer, tlli_info, parse_ctx); + if (parse_ctx->imsi && link_info && link_info->imsi_len == 0) + gbproxy_assign_imsi(peer, link_info, parse_ctx); - return tlli_info; + return link_info; } -struct gbproxy_tlli_info *gbproxy_update_tlli_state_dl( +struct gbproxy_link_info *gbproxy_update_link_state_dl( struct gbproxy_peer *peer, time_t now, struct gprs_gb_parse_context *parse_ctx) { - struct gbproxy_tlli_info *tlli_info = NULL; + struct gbproxy_link_info *link_info = NULL; if (parse_ctx->tlli_enc) - tlli_info = gbproxy_tlli_info_by_sgsn_tlli( + link_info = gbproxy_link_info_by_sgsn_tlli( peer, parse_ctx->tlli, parse_ctx->peer_nsei); - if (parse_ctx->tlli_enc && parse_ctx->new_ptmsi_enc && tlli_info) { + if (parse_ctx->tlli_enc && parse_ctx->new_ptmsi_enc && link_info) { /* A new P-TMSI has been signalled in the message, * register new TLLI */ uint32_t new_sgsn_ptmsi; @@ -540,7 +540,7 @@ struct gbproxy_tlli_info *gbproxy_update_tlli_state_dl( LOGP(DGPRS, LOGL_ERROR, "Failed to parse new TLLI/PTMSI (current is %08x)\n", parse_ctx->tlli); - return tlli_info; + return link_info; } new_bss_ptmsi = gbproxy_make_bss_ptmsi(peer, new_sgsn_ptmsi); @@ -548,12 +548,12 @@ struct gbproxy_tlli_info *gbproxy_update_tlli_state_dl( "Got new PTMSI %08x from SGSN, using %08x for BSS\n", new_sgsn_ptmsi, new_bss_ptmsi); /* Setup PTMSIs */ - tlli_info->sgsn_tlli.ptmsi = new_sgsn_ptmsi; - tlli_info->tlli.ptmsi = new_bss_ptmsi; - } else if (parse_ctx->tlli_enc && parse_ctx->new_ptmsi_enc && !tlli_info && + link_info->sgsn_tlli.ptmsi = new_sgsn_ptmsi; + link_info->tlli.ptmsi = new_bss_ptmsi; + } else if (parse_ctx->tlli_enc && parse_ctx->new_ptmsi_enc && !link_info && !peer->cfg->patch_ptmsi) { /* A new P-TMSI has been signalled in the message with an unknown - * TLLI, create a new tlli_info */ + * TLLI, create a new link_info */ /* TODO: Add a test case for this branch */ uint32_t new_ptmsi; if (!gprs_parse_mi_tmsi(parse_ctx->new_ptmsi_enc, GSM48_TMSI_LEN, @@ -561,35 +561,35 @@ struct gbproxy_tlli_info *gbproxy_update_tlli_state_dl( LOGP(DGPRS, LOGL_ERROR, "Failed to parse new PTMSI (TLLI is %08x)\n", parse_ctx->tlli); - return tlli_info; + return link_info; } LOGP(DGPRS, LOGL_INFO, "Adding TLLI %08x to list (SGSN, new P-TMSI is %08x)\n", parse_ctx->tlli, new_ptmsi); - tlli_info = gbproxy_tlli_info_alloc(peer); - tlli_info->sgsn_tlli.current = parse_ctx->tlli;; - tlli_info->tlli.current = parse_ctx->tlli;; - tlli_info->sgsn_tlli.ptmsi = new_ptmsi; - tlli_info->tlli.ptmsi = new_ptmsi; - gbproxy_attach_tlli_info(peer, now, tlli_info); - } else if (parse_ctx->tlli_enc && parse_ctx->llc && !tlli_info && + link_info = gbproxy_link_info_alloc(peer); + link_info->sgsn_tlli.current = parse_ctx->tlli;; + link_info->tlli.current = parse_ctx->tlli;; + link_info->sgsn_tlli.ptmsi = new_ptmsi; + link_info->tlli.ptmsi = new_ptmsi; + gbproxy_attach_link_info(peer, now, link_info); + } else if (parse_ctx->tlli_enc && parse_ctx->llc && !link_info && !peer->cfg->patch_ptmsi) { - /* Unknown SGSN TLLI, create a new tlli_info */ + /* Unknown SGSN TLLI, create a new link_info */ uint32_t new_ptmsi; - tlli_info = gbproxy_tlli_info_alloc(peer); + link_info = gbproxy_link_info_alloc(peer); LOGP(DGPRS, LOGL_INFO, "Adding TLLI %08x to list (SGSN)\n", parse_ctx->tlli); - gbproxy_attach_tlli_info(peer, now, tlli_info); + gbproxy_attach_link_info(peer, now, link_info); /* Setup TLLIs */ - tlli_info->sgsn_tlli.current = parse_ctx->tlli; - tlli_info->tlli.current = parse_ctx->tlli; + link_info->sgsn_tlli.current = parse_ctx->tlli; + link_info->tlli.current = parse_ctx->tlli; if (!parse_ctx->new_ptmsi_enc) - return tlli_info; + return link_info; /* A new P-TMSI has been signalled in the message */ if (!gprs_parse_mi_tmsi(parse_ctx->new_ptmsi_enc, @@ -597,57 +597,57 @@ struct gbproxy_tlli_info *gbproxy_update_tlli_state_dl( LOGP(DGPRS, LOGL_ERROR, "Failed to parse new PTMSI (TLLI is %08x)\n", parse_ctx->tlli); - return tlli_info; + return link_info; } LOGP(DGPRS, LOGL_INFO, "Assigning new P-TMSI %08x\n", new_ptmsi); /* Setup P-TMSIs */ - tlli_info->sgsn_tlli.ptmsi = new_ptmsi; - tlli_info->tlli.ptmsi = new_ptmsi; - } else if (parse_ctx->tlli_enc && parse_ctx->llc && tlli_info) { + link_info->sgsn_tlli.ptmsi = new_ptmsi; + link_info->tlli.ptmsi = new_ptmsi; + } else if (parse_ctx->tlli_enc && parse_ctx->llc && link_info) { uint32_t bss_tlli = gbproxy_map_tlli(parse_ctx->tlli, - tlli_info, 1); - gbproxy_validate_tlli(&tlli_info->sgsn_tlli, parse_ctx->tlli, 1); - gbproxy_validate_tlli(&tlli_info->tlli, bss_tlli, 1); - gbproxy_touch_tlli_info(peer, tlli_info, now); - } else if (tlli_info) { - gbproxy_touch_tlli_info(peer, tlli_info, now); + link_info, 1); + gbproxy_validate_tlli(&link_info->sgsn_tlli, parse_ctx->tlli, 1); + gbproxy_validate_tlli(&link_info->tlli, bss_tlli, 1); + gbproxy_touch_link_info(peer, link_info, now); + } else if (link_info) { + gbproxy_touch_link_info(peer, link_info, now); } - if (parse_ctx->imsi && tlli_info && tlli_info->imsi_len == 0) - gbproxy_assign_imsi(peer, tlli_info, parse_ctx); + if (parse_ctx->imsi && link_info && link_info->imsi_len == 0) + gbproxy_assign_imsi(peer, link_info, parse_ctx); - return tlli_info; + return link_info; } -void gbproxy_update_tlli_state_after( +void gbproxy_update_link_state_after( struct gbproxy_peer *peer, - struct gbproxy_tlli_info *tlli_info, + struct gbproxy_link_info *link_info, time_t now, struct gprs_gb_parse_context *parse_ctx) { - if (parse_ctx->invalidate_tlli && tlli_info) { + if (parse_ctx->invalidate_tlli && link_info) { int keep_info = - peer->cfg->keep_tlli_infos == GBPROX_KEEP_ALWAYS || - (peer->cfg->keep_tlli_infos == GBPROX_KEEP_REATTACH && + peer->cfg->keep_link_infos == GBPROX_KEEP_ALWAYS || + (peer->cfg->keep_link_infos == GBPROX_KEEP_REATTACH && parse_ctx->await_reattach) || - (peer->cfg->keep_tlli_infos == GBPROX_KEEP_IDENTIFIED && - tlli_info->imsi_len > 0); + (peer->cfg->keep_link_infos == GBPROX_KEEP_IDENTIFIED && + link_info->imsi_len > 0); if (keep_info) { LOGP(DGPRS, LOGL_INFO, "Unregistering TLLI %08x\n", - tlli_info->tlli.current); - gbproxy_unregister_tlli_info(peer, tlli_info); + link_info->tlli.current); + gbproxy_unregister_link_info(peer, link_info); } else { LOGP(DGPRS, LOGL_INFO, "Removing TLLI %08x from list\n", - tlli_info->tlli.current); - gbproxy_delete_tlli_info(peer, tlli_info); + link_info->tlli.current); + gbproxy_delete_link_info(peer, link_info); } } else if (parse_ctx->to_bss && parse_ctx->tlli_enc && - parse_ctx->new_ptmsi_enc && tlli_info) { + parse_ctx->new_ptmsi_enc && link_info) { /* A new PTMSI has been signaled in the message, * register new TLLI */ - uint32_t new_sgsn_ptmsi = tlli_info->sgsn_tlli.ptmsi; - uint32_t new_bss_ptmsi = tlli_info->tlli.ptmsi; + uint32_t new_sgsn_ptmsi = link_info->sgsn_tlli.ptmsi; + uint32_t new_bss_ptmsi = link_info->tlli.ptmsi; uint32_t new_sgsn_tlli; uint32_t new_bss_tlli = 0; @@ -658,14 +658,14 @@ void gbproxy_update_tlli_state_after( "Assigning new TLLI %08x to SGSN, %08x to BSS\n", new_sgsn_tlli, new_bss_tlli); - gbproxy_reassign_tlli(&tlli_info->sgsn_tlli, + gbproxy_reassign_tlli(&link_info->sgsn_tlli, peer, new_sgsn_tlli); - gbproxy_reassign_tlli(&tlli_info->tlli, + gbproxy_reassign_tlli(&link_info->tlli, peer, new_bss_tlli); - gbproxy_remove_matching_tlli_infos(peer, tlli_info); + gbproxy_remove_matching_link_infos(peer, link_info); } - gbproxy_remove_stale_tlli_infos(peer, now); + gbproxy_remove_stale_link_infos(peer, now); } diff --git a/openbsc/src/gprs/gb_proxy_vty.c b/openbsc/src/gprs/gb_proxy_vty.c index 72469da21..313cd9b3d 100644 --- a/openbsc/src/gprs/gb_proxy_vty.c +++ b/openbsc/src/gprs/gb_proxy_vty.c @@ -115,7 +115,7 @@ static int config_write_gbproxy(struct vty *vty) vty_out(vty, " tlli-list max-length %d%s", g_cfg->tlli_max_len, VTY_NEWLINE); vty_out(vty, " tlli-list keep-mode %s%s", - get_value_string(keep_modes, g_cfg->keep_tlli_infos), + get_value_string(keep_modes, g_cfg->keep_link_infos), VTY_NEWLINE); @@ -421,7 +421,7 @@ DEFUN(cfg_gbproxy_tlli_list_keep_mode, { int val = get_string_value(keep_modes, argv[0]); OSMO_ASSERT(val >= GBPROX_KEEP_NEVER && val <= GBPROX_KEEP_ALWAYS); - g_cfg->keep_tlli_infos = val; + g_cfg->keep_link_infos = val; return CMD_SUCCESS; } @@ -453,37 +453,37 @@ DEFUN(show_gbproxy_tllis, show_gbproxy_tllis_cmd, "show gbproxy tllis", time_t now = time(NULL); llist_for_each_entry(peer, &g_cfg->bts_peers, list) { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; struct gbproxy_patch_state *state = &peer->patch_state; gbprox_vty_print_peer(vty, peer); - llist_for_each_entry(tlli_info, &state->enabled_tllis, list) { - time_t age = now - tlli_info->timestamp; + llist_for_each_entry(link_info, &state->enabled_tllis, list) { + time_t age = now - link_info->timestamp; int stored_msgs = 0; struct llist_head *iter; - llist_for_each(iter, &tlli_info->stored_msgs) + llist_for_each(iter, &link_info->stored_msgs) stored_msgs++; - if (tlli_info->imsi > 0) { + if (link_info->imsi > 0) { snprintf(mi_buf, sizeof(mi_buf), "(invalid)"); gsm48_mi_to_string(mi_buf, sizeof(mi_buf), - tlli_info->imsi, - tlli_info->imsi_len); + link_info->imsi, + link_info->imsi_len); } else { snprintf(mi_buf, sizeof(mi_buf), "(none)"); } vty_out(vty, " TLLI %08x, IMSI %s, AGE %d", - tlli_info->tlli.current, mi_buf, (int)age); + link_info->tlli.current, mi_buf, (int)age); if (stored_msgs) vty_out(vty, ", STORED %d", stored_msgs); if (g_cfg->route_to_sgsn2) vty_out(vty, ", SGSN NSEI %d", - tlli_info->sgsn_nsei); + link_info->sgsn_nsei); - if (tlli_info->is_deregistered) + if (link_info->is_deregistered) vty_out(vty, ", DE-REGISTERED"); vty_out(vty, "%s", VTY_NEWLINE); @@ -598,7 +598,7 @@ DEFUN(delete_gb_tlli_by_id, delete_gb_tlli_by_id_cmd, uint32_t ident = 0; const char *imsi = NULL; struct gbproxy_peer *peer = 0; - struct gbproxy_tlli_info *tlli_info, *nxt; + struct gbproxy_link_info *link_info, *nxt; struct gbproxy_patch_state *state; char mi_buf[200]; int found = 0; @@ -620,30 +620,30 @@ DEFUN(delete_gb_tlli_by_id, delete_gb_tlli_by_id_cmd, state = &peer->patch_state; - llist_for_each_entry_safe(tlli_info, nxt, &state->enabled_tllis, list) { + llist_for_each_entry_safe(link_info, nxt, &state->enabled_tllis, list) { switch (match) { case MATCH_TLLI: - if (tlli_info->tlli.current != ident) + if (link_info->tlli.current != ident) continue; break; case MATCH_SGSN: - if (tlli_info->sgsn_nsei != ident) + if (link_info->sgsn_nsei != ident) continue; break; case MATCH_IMSI: mi_buf[0] = '\0'; gsm48_mi_to_string(mi_buf, sizeof(mi_buf), - tlli_info->imsi, - tlli_info->imsi_len); + link_info->imsi, + link_info->imsi_len); if (strcmp(mi_buf, imsi) != 0) continue; break; } - vty_out(vty, "Deleting TLLI %08x%s", tlli_info->tlli.current, + vty_out(vty, "Deleting TLLI %08x%s", link_info->tlli.current, VTY_NEWLINE); - gbproxy_delete_tlli_info(peer, tlli_info); + gbproxy_delete_link_info(peer, link_info); found += 1; } @@ -664,7 +664,7 @@ DEFUN(delete_gb_tlli, delete_gb_tlli_cmd, const uint16_t nsei = atoi(argv[0]); enum {MATCH_STALE = 's', MATCH_DEREGISTERED = 'd'} match; struct gbproxy_peer *peer = 0; - struct gbproxy_tlli_info *tlli_info, *nxt; + struct gbproxy_link_info *link_info, *nxt; struct gbproxy_patch_state *state; int found = 0; @@ -680,17 +680,17 @@ DEFUN(delete_gb_tlli, delete_gb_tlli_cmd, state = &peer->patch_state; if (match == MATCH_STALE) { - found = gbproxy_remove_stale_tlli_infos(peer, time(NULL)); + found = gbproxy_remove_stale_link_infos(peer, time(NULL)); if (found) vty_out(vty, "Deleted %d stale TLLI%s%s", found, found == 1 ? "" : "s", VTY_NEWLINE); } else { - llist_for_each_entry_safe(tlli_info, nxt, + llist_for_each_entry_safe(link_info, nxt, &state->enabled_tllis, list) { - if (!tlli_info->is_deregistered) + if (!link_info->is_deregistered) continue; - gbproxy_delete_tlli_info(peer, tlli_info); + gbproxy_delete_link_info(peer, link_info); found += 1; } } diff --git a/openbsc/tests/gbproxy/gbproxy_test.c b/openbsc/tests/gbproxy/gbproxy_test.c index e32930065..36200f432 100644 --- a/openbsc/tests/gbproxy/gbproxy_test.c +++ b/openbsc/tests/gbproxy/gbproxy_test.c @@ -87,7 +87,7 @@ static int dump_peers(FILE *stream, int indent, time_t now, return rc; llist_for_each_entry(peer, &cfg->bts_peers, list) { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; struct gbproxy_patch_state *state = &peer->patch_state; gsm48_parse_ra(&raid, peer->ra); @@ -118,32 +118,32 @@ static int dump_peers(FILE *stream, int indent, time_t now, fprintf(stream, "%*s TLLI-Cache: %d\n", indent, "", state->enabled_tllis_count); - llist_for_each_entry(tlli_info, &state->enabled_tllis, list) { + llist_for_each_entry(link_info, &state->enabled_tllis, list) { char mi_buf[200]; - time_t age = now ? now - tlli_info->timestamp : 0; + time_t age = now ? now - link_info->timestamp : 0; int stored_msgs = 0; struct llist_head *iter; - llist_for_each(iter, &tlli_info->stored_msgs) + llist_for_each(iter, &link_info->stored_msgs) stored_msgs++; - if (tlli_info->imsi_len > 0) { + if (link_info->imsi_len > 0) { snprintf(mi_buf, sizeof(mi_buf), "(invalid)"); gsm48_mi_to_string(mi_buf, sizeof(mi_buf), - tlli_info->imsi, - tlli_info->imsi_len); + link_info->imsi, + link_info->imsi_len); } else { snprintf(mi_buf, sizeof(mi_buf), "(none)"); } fprintf(stream, "%*s TLLI %08x", - indent, "", tlli_info->tlli.current); - if (tlli_info->tlli.assigned) - fprintf(stream, "/%08x", tlli_info->tlli.assigned); - if (tlli_info->sgsn_tlli.current) { + indent, "", link_info->tlli.current); + if (link_info->tlli.assigned) + fprintf(stream, "/%08x", link_info->tlli.assigned); + if (link_info->sgsn_tlli.current) { fprintf(stream, " -> %08x", - tlli_info->sgsn_tlli.current); - if (tlli_info->sgsn_tlli.assigned) + link_info->sgsn_tlli.current); + if (link_info->sgsn_tlli.assigned) fprintf(stream, "/%08x", - tlli_info->sgsn_tlli.assigned); + link_info->sgsn_tlli.assigned); } fprintf(stream, ", IMSI %s, AGE %d", mi_buf, (int)age); @@ -151,17 +151,17 @@ static int dump_peers(FILE *stream, int indent, time_t now, if (stored_msgs) fprintf(stream, ", STORED %d", stored_msgs); - if (cfg->check_imsi && tlli_info->imsi_matches) + if (cfg->check_imsi && link_info->imsi_matches) fprintf(stream, ", IMSI matches"); - if (tlli_info->imsi_acq_pending) + if (link_info->imsi_acq_pending) fprintf(stream, ", IMSI acquisition in progress"); if (cfg->route_to_sgsn2) fprintf(stream, ", SGSN NSEI %d", - tlli_info->sgsn_nsei); + link_info->sgsn_nsei); - if (tlli_info->is_deregistered) + if (link_info->is_deregistered) fprintf(stream, ", DE-REGISTERED"); rc = fprintf(stream, "\n"); @@ -1386,7 +1386,7 @@ static void test_gbproxy_ra_patching() const uint32_t foreign_tlli = 0xbbc54679; const uint32_t foreign_tlli2 = 0xbb00beef; const uint8_t imsi[] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18}; - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; struct gbproxy_peer *peer; OSMO_ASSERT(local_tlli == gprs_tmsi2tlli(ptmsi, TLLI_LOCAL)); @@ -1479,16 +1479,16 @@ static void test_gbproxy_ra_patching() OSMO_ASSERT(gbproxy_peer_by_lac(&gbcfg, convert_ra(&rai_sgsn)) != NULL); OSMO_ASSERT(gbproxy_peer_by_lac(&gbcfg, convert_ra(&rai_unknown)) == NULL); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_tlli); - OSMO_ASSERT(tlli_info->tlli.current != local_tlli); - OSMO_ASSERT(!tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.current != local_tlli); - OSMO_ASSERT(!tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_tlli); + OSMO_ASSERT(link_info->tlli.current != local_tlli); + OSMO_ASSERT(!link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.current != local_tlli); + OSMO_ASSERT(!link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002, local_tlli, &rai_bss, cell_id, @@ -1497,16 +1497,16 @@ static void test_gbproxy_ra_patching() OSMO_ASSERT(6 == peer->ctrg->ctr[GBPROX_PEER_CTR_RAID_PATCHED_BSS].current); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_tlli); - OSMO_ASSERT(tlli_info->tlli.current != local_tlli); - OSMO_ASSERT(tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.current != local_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_tlli); + OSMO_ASSERT(link_info->tlli.current != local_tlli); + OSMO_ASSERT(link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.current != local_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); /* Replace APN (1) */ send_llc_ul_ui(nsi, "ACT PDP CTX REQ (REPLACE APN)", &bss_peer[0], 0x1002, @@ -1516,16 +1516,16 @@ static void test_gbproxy_ra_patching() OSMO_ASSERT(7 == peer->ctrg->ctr[GBPROX_PEER_CTR_RAID_PATCHED_BSS].current); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_tlli); - OSMO_ASSERT(tlli_info->tlli.current != local_tlli); - OSMO_ASSERT(tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.current != local_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_tlli); + OSMO_ASSERT(link_info->tlli.current != local_tlli); + OSMO_ASSERT(link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.current != local_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); send_llc_dl_ui(nsi, "GMM INFO", &sgsn_peer, 0x1002, local_tlli, 1, imsi, sizeof(imsi), @@ -1534,12 +1534,12 @@ static void test_gbproxy_ra_patching() OSMO_ASSERT(2 == peer->ctrg->ctr[GBPROX_PEER_CTR_RAID_PATCHED_SGSN].current); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == 0); - OSMO_ASSERT(tlli_info->tlli.current == local_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == 0); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == local_tlli); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == 0); + OSMO_ASSERT(link_info->tlli.current == local_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == 0); + OSMO_ASSERT(link_info->sgsn_tlli.current == local_tlli); /* Replace APN (2) */ send_llc_ul_ui(nsi, "ACT PDP CTX REQ (REPLACE APN)", &bss_peer[0], 0x1002, @@ -1664,7 +1664,7 @@ static void test_gbproxy_ptmsi_assignment() const uint8_t imsi1[] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18}; const uint8_t imsi2[] = {0x11, 0x12, 0x99, 0x99, 0x99, 0x16, 0x17, 0x18}; - struct gbproxy_tlli_info *tlli_info, *tlli_info2; + struct gbproxy_link_info *link_info, *link_info2; struct gbproxy_peer *peer; unsigned bss_nu = 0; unsigned sgsn_nu = 0; @@ -1734,15 +1734,15 @@ static void test_gbproxy_ptmsi_assignment() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_tlli(peer, foreign_tlli1); - tlli_info2 = gbproxy_tlli_info_by_tlli(peer, local_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info == tlli_info2); - OSMO_ASSERT(tlli_info->tlli.assigned == local_tlli); - OSMO_ASSERT(tlli_info->tlli.current == foreign_tlli1); - OSMO_ASSERT(!tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->tlli.ptmsi == ptmsi); + link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli1); + link_info2 = gbproxy_link_info_by_tlli(peer, local_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info == link_info2); + OSMO_ASSERT(link_info->tlli.assigned == local_tlli); + OSMO_ASSERT(link_info->tlli.current == foreign_tlli1); + OSMO_ASSERT(!link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->tlli.ptmsi == ptmsi); send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002, local_tlli, &rai_bss, cell_id, @@ -1751,13 +1751,13 @@ static void test_gbproxy_ptmsi_assignment() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_tlli(peer, local_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_tlli); - OSMO_ASSERT(tlli_info->tlli.current == foreign_tlli1); - OSMO_ASSERT(tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->tlli.ptmsi == ptmsi); + link_info = gbproxy_link_info_by_tlli(peer, local_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_tlli); + OSMO_ASSERT(link_info->tlli.current == foreign_tlli1); + OSMO_ASSERT(link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->tlli.ptmsi == ptmsi); send_llc_dl_ui(nsi, "GMM INFO", &sgsn_peer, 0x1002, @@ -1767,16 +1767,16 @@ static void test_gbproxy_ptmsi_assignment() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.ptmsi == ptmsi); - OSMO_ASSERT(!gbproxy_tlli_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2))); + link_info = gbproxy_link_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.ptmsi == ptmsi); + OSMO_ASSERT(!gbproxy_link_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2))); - tlli_info2 = gbproxy_tlli_info_by_tlli(peer, local_tlli); - OSMO_ASSERT(tlli_info == tlli_info2); - OSMO_ASSERT(tlli_info->tlli.assigned == 0); - OSMO_ASSERT(tlli_info->tlli.current == local_tlli); - OSMO_ASSERT(tlli_info->tlli.ptmsi == ptmsi); + link_info2 = gbproxy_link_info_by_tlli(peer, local_tlli); + OSMO_ASSERT(link_info == link_info2); + OSMO_ASSERT(link_info->tlli.assigned == 0); + OSMO_ASSERT(link_info->tlli.current == local_tlli); + OSMO_ASSERT(link_info->tlli.ptmsi == ptmsi); printf("--- Establish second LLC connection with the same P-TMSI ---\n\n"); @@ -1808,15 +1808,15 @@ static void test_gbproxy_ptmsi_assignment() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_tlli(peer, foreign_tlli2); - tlli_info2 = gbproxy_tlli_info_by_tlli(peer, local_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info == tlli_info2); - OSMO_ASSERT(tlli_info->tlli.assigned == local_tlli); - OSMO_ASSERT(tlli_info->tlli.current == foreign_tlli2); - OSMO_ASSERT(!tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->tlli.ptmsi == ptmsi); + link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli2); + link_info2 = gbproxy_link_info_by_tlli(peer, local_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info == link_info2); + OSMO_ASSERT(link_info->tlli.assigned == local_tlli); + OSMO_ASSERT(link_info->tlli.current == foreign_tlli2); + OSMO_ASSERT(!link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->tlli.ptmsi == ptmsi); send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002, local_tlli, &rai_bss, cell_id, @@ -1825,13 +1825,13 @@ static void test_gbproxy_ptmsi_assignment() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_tlli(peer, local_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_tlli); - OSMO_ASSERT(tlli_info->tlli.current == foreign_tlli2); - OSMO_ASSERT(tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->tlli.ptmsi == ptmsi); + link_info = gbproxy_link_info_by_tlli(peer, local_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_tlli); + OSMO_ASSERT(link_info->tlli.current == foreign_tlli2); + OSMO_ASSERT(link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->tlli.ptmsi == ptmsi); send_llc_dl_ui(nsi, "GMM INFO", &sgsn_peer, 0x1002, local_tlli, 1, imsi2, sizeof(imsi2), @@ -1840,16 +1840,16 @@ static void test_gbproxy_ptmsi_assignment() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.ptmsi == ptmsi); - OSMO_ASSERT(!gbproxy_tlli_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1))); + link_info = gbproxy_link_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.ptmsi == ptmsi); + OSMO_ASSERT(!gbproxy_link_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1))); - tlli_info2 = gbproxy_tlli_info_by_tlli(peer, local_tlli); - OSMO_ASSERT(tlli_info == tlli_info2); - OSMO_ASSERT(tlli_info->tlli.assigned == 0); - OSMO_ASSERT(tlli_info->tlli.current == local_tlli); - OSMO_ASSERT(tlli_info->tlli.ptmsi == ptmsi); + link_info2 = gbproxy_link_info_by_tlli(peer, local_tlli); + OSMO_ASSERT(link_info == link_info2); + OSMO_ASSERT(link_info->tlli.assigned == 0); + OSMO_ASSERT(link_info->tlli.current == local_tlli); + OSMO_ASSERT(link_info->tlli.ptmsi == ptmsi); dump_global(stdout, 0); @@ -1892,7 +1892,7 @@ static void test_gbproxy_ptmsi_patching() const uint8_t imsi[] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18}; - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; struct gbproxy_peer *peer; unsigned bss_nu = 0; unsigned sgsn_nu = 0; @@ -1967,18 +1967,18 @@ static void test_gbproxy_ptmsi_patching() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, random_sgsn_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.current == foreign_bss_tlli); - OSMO_ASSERT(!tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->tlli.ptmsi == bss_ptmsi); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == random_sgsn_tlli); - OSMO_ASSERT(!tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.ptmsi == sgsn_ptmsi); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, random_sgsn_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli); + OSMO_ASSERT(link_info->tlli.current == foreign_bss_tlli); + OSMO_ASSERT(!link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->tlli.ptmsi == bss_ptmsi); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.current == random_sgsn_tlli); + OSMO_ASSERT(!link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.ptmsi == sgsn_ptmsi); send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002, local_bss_tlli, &rai_bss, cell_id, @@ -1987,16 +1987,16 @@ static void test_gbproxy_ptmsi_patching() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.current == foreign_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == random_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli); + OSMO_ASSERT(link_info->tlli.current == foreign_bss_tlli); + OSMO_ASSERT(link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.current == random_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); send_llc_dl_ui(nsi, "GMM INFO", &sgsn_peer, 0x1002, local_sgsn_tlli, 1, imsi, sizeof(imsi), @@ -2005,12 +2005,12 @@ static void test_gbproxy_ptmsi_patching() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == local_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.assigned == 0); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == 0); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == local_bss_tlli); + OSMO_ASSERT(link_info->tlli.assigned == 0); + OSMO_ASSERT(link_info->sgsn_tlli.current == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == 0); send_llc_ul_ui(nsi, "ACT PDP CTX REQ (REPLACE APN)", &bss_peer[0], 0x1002, local_bss_tlli, &rai_bss, cell_id, @@ -2053,19 +2053,19 @@ static void test_gbproxy_ptmsi_patching() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN_NSEI) != NULL); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli2); - OSMO_ASSERT(tlli_info->tlli.current == local_bss_tlli); - OSMO_ASSERT(!tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->tlli.ptmsi == bss_ptmsi2); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli2); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == local_sgsn_tlli); - OSMO_ASSERT(!tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.ptmsi == sgsn_ptmsi2); + OSMO_ASSERT(gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN_NSEI) != NULL); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli2); + OSMO_ASSERT(link_info->tlli.current == local_bss_tlli); + OSMO_ASSERT(!link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->tlli.ptmsi == bss_ptmsi2); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli2); + OSMO_ASSERT(link_info->sgsn_tlli.current == local_sgsn_tlli); + OSMO_ASSERT(!link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.ptmsi == sgsn_ptmsi2); send_llc_ul_ui(nsi, "RA UPD REQ (P-TMSI 3)", &bss_peer[0], 0x1002, local_bss_tlli2, &rai_bss, 0x7080, @@ -2079,33 +2079,33 @@ static void test_gbproxy_ptmsi_patching() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN_NSEI) == NULL); - OSMO_ASSERT(gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli3, SGSN_NSEI) != NULL); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli3); - OSMO_ASSERT(tlli_info->tlli.current == local_bss_tlli); - OSMO_ASSERT(!tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->tlli.ptmsi == bss_ptmsi3); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli3); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == local_sgsn_tlli); - OSMO_ASSERT(!tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.ptmsi == sgsn_ptmsi3); + OSMO_ASSERT(gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN_NSEI) == NULL); + OSMO_ASSERT(gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli3, SGSN_NSEI) != NULL); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli3); + OSMO_ASSERT(link_info->tlli.current == local_bss_tlli); + OSMO_ASSERT(!link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->tlli.ptmsi == bss_ptmsi3); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli3); + OSMO_ASSERT(link_info->sgsn_tlli.current == local_sgsn_tlli); + OSMO_ASSERT(!link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.ptmsi == sgsn_ptmsi3); send_llc_ul_ui(nsi, "RA UPD COMPLETE", &bss_peer[0], 0x1002, local_bss_tlli3, &rai_bss, 0x7080, GPRS_SAPI_GMM, bss_nu++, dtap_ra_upd_complete, sizeof(dtap_ra_upd_complete)); - tlli_info = gbproxy_tlli_info_by_tlli(peer, local_bss_tlli3); + link_info = gbproxy_link_info_by_tlli(peer, local_bss_tlli3); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); send_llc_dl_ui(nsi, "GMM INFO", &sgsn_peer, 0x1002, local_sgsn_tlli3, 1, imsi, sizeof(imsi), @@ -2114,12 +2114,12 @@ static void test_gbproxy_ptmsi_patching() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli3, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == local_bss_tlli3); - OSMO_ASSERT(tlli_info->tlli.assigned == 0); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == local_sgsn_tlli3); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == 0); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli3, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == local_bss_tlli3); + OSMO_ASSERT(link_info->tlli.assigned == 0); + OSMO_ASSERT(link_info->sgsn_tlli.current == local_sgsn_tlli3); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == 0); /* Other messages */ send_bssgp_llc_discarded(nsi, &bss_peer[0], 0x1002, @@ -2211,7 +2211,7 @@ static void test_gbproxy_imsi_acquisition() const uint32_t other_bss_tlli = 0x8000beef; const uint8_t imsi[] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18}; - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; struct gbproxy_peer *peer; unsigned bss_nu = 0; unsigned sgsn_nu = 0; @@ -2289,18 +2289,18 @@ static void test_gbproxy_imsi_acquisition() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, random_sgsn_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.current == foreign_bss_tlli); - OSMO_ASSERT(!tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->tlli.ptmsi == bss_ptmsi); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == random_sgsn_tlli); - OSMO_ASSERT(!tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.ptmsi == sgsn_ptmsi); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, random_sgsn_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli); + OSMO_ASSERT(link_info->tlli.current == foreign_bss_tlli); + OSMO_ASSERT(!link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->tlli.ptmsi == bss_ptmsi); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.current == random_sgsn_tlli); + OSMO_ASSERT(!link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.ptmsi == sgsn_ptmsi); send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002, local_bss_tlli, &rai_bss, cell_id, @@ -2309,16 +2309,16 @@ static void test_gbproxy_imsi_acquisition() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.current == foreign_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == random_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli); + OSMO_ASSERT(link_info->tlli.current == foreign_bss_tlli); + OSMO_ASSERT(link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.current == random_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); send_llc_dl_ui(nsi, "GMM INFO", &sgsn_peer, 0x1002, local_sgsn_tlli, 1, imsi, sizeof(imsi), @@ -2327,12 +2327,12 @@ static void test_gbproxy_imsi_acquisition() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == local_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.assigned == 0); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == 0); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == local_bss_tlli); + OSMO_ASSERT(link_info->tlli.assigned == 0); + OSMO_ASSERT(link_info->sgsn_tlli.current == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == 0); /* Non-DTAP */ send_bssgp_ul_unitdata(nsi, "XID (UL)", &bss_peer[0], 0x1002, @@ -2532,8 +2532,8 @@ static void test_gbproxy_secondary_sgsn() const uint8_t imsi1[] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18}; const uint8_t imsi2[] = {0x11, 0x12, 0x99, 0x99, 0x99, 0x16, 0x17, 0x18}; const uint8_t imsi3[] = {0x11, 0x12, 0x99, 0x99, 0x99, 0x26, 0x27, 0x28}; - struct gbproxy_tlli_info *tlli_info; - struct gbproxy_tlli_info *other_info; + struct gbproxy_link_info *link_info; + struct gbproxy_link_info *other_info; struct gbproxy_peer *peer; unsigned bss_nu = 0; unsigned sgsn_nu = 0; @@ -2636,19 +2636,19 @@ static void test_gbproxy_secondary_sgsn() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN2_NSEI)); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, random_sgsn_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.current == foreign_bss_tlli); - OSMO_ASSERT(!tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->tlli.ptmsi == bss_ptmsi); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == random_sgsn_tlli); - OSMO_ASSERT(!tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.ptmsi == sgsn_ptmsi); + OSMO_ASSERT(!gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN2_NSEI)); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, random_sgsn_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli); + OSMO_ASSERT(link_info->tlli.current == foreign_bss_tlli); + OSMO_ASSERT(!link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->tlli.ptmsi == bss_ptmsi); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.current == random_sgsn_tlli); + OSMO_ASSERT(!link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.ptmsi == sgsn_ptmsi); send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002, local_bss_tlli, &rai_bss, cell_id, @@ -2657,17 +2657,17 @@ static void test_gbproxy_secondary_sgsn() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN2_NSEI)); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.current == foreign_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == random_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); + OSMO_ASSERT(!gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN2_NSEI)); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli); + OSMO_ASSERT(link_info->tlli.current == foreign_bss_tlli); + OSMO_ASSERT(link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.current == random_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); send_llc_dl_ui(nsi, "GMM INFO", &sgsn_peer[0], 0x1002, local_sgsn_tlli, 1, imsi1, sizeof(imsi1), @@ -2676,13 +2676,13 @@ static void test_gbproxy_secondary_sgsn() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN2_NSEI)); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == local_bss_tlli); - OSMO_ASSERT(tlli_info->tlli.assigned == 0); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == 0); + OSMO_ASSERT(!gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN2_NSEI)); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == local_bss_tlli); + OSMO_ASSERT(link_info->tlli.assigned == 0); + OSMO_ASSERT(link_info->sgsn_tlli.current == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == 0); /* Non-DTAP */ send_bssgp_ul_unitdata(nsi, "XID (UL)", &bss_peer[0], 0x1002, @@ -2761,19 +2761,19 @@ static void test_gbproxy_secondary_sgsn() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_sgsn_tlli(peer, random_sgsn_tlli2, SGSN_NSEI)); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, random_sgsn_tlli2, SGSN2_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli2); - OSMO_ASSERT(tlli_info->tlli.current == foreign_bss_tlli2); - OSMO_ASSERT(!tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->tlli.ptmsi == bss_ptmsi2); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli2); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == random_sgsn_tlli2); - OSMO_ASSERT(!tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.ptmsi == sgsn_ptmsi2); + OSMO_ASSERT(!gbproxy_link_info_by_sgsn_tlli(peer, random_sgsn_tlli2, SGSN_NSEI)); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, random_sgsn_tlli2, SGSN2_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli2); + OSMO_ASSERT(link_info->tlli.current == foreign_bss_tlli2); + OSMO_ASSERT(!link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->tlli.ptmsi == bss_ptmsi2); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli2); + OSMO_ASSERT(link_info->sgsn_tlli.current == random_sgsn_tlli2); + OSMO_ASSERT(!link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.ptmsi == sgsn_ptmsi2); send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002, local_bss_tlli2, &rai_bss, cell_id, @@ -2782,17 +2782,17 @@ static void test_gbproxy_secondary_sgsn() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN_NSEI)); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN2_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli2); - OSMO_ASSERT(tlli_info->tlli.current == foreign_bss_tlli2); - OSMO_ASSERT(tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli2); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == random_sgsn_tlli2); - OSMO_ASSERT(tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); + OSMO_ASSERT(!gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN_NSEI)); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN2_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli2); + OSMO_ASSERT(link_info->tlli.current == foreign_bss_tlli2); + OSMO_ASSERT(link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli2); + OSMO_ASSERT(link_info->sgsn_tlli.current == random_sgsn_tlli2); + OSMO_ASSERT(link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); send_llc_dl_ui(nsi, "GMM INFO", &sgsn_peer[1], 0x1002, local_sgsn_tlli2, 1, imsi2, sizeof(imsi2), @@ -2801,13 +2801,13 @@ static void test_gbproxy_secondary_sgsn() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN_NSEI)); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN2_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == local_bss_tlli2); - OSMO_ASSERT(tlli_info->tlli.assigned == 0); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == local_sgsn_tlli2); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == 0); + OSMO_ASSERT(!gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN_NSEI)); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli2, SGSN2_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == local_bss_tlli2); + OSMO_ASSERT(link_info->tlli.assigned == 0); + OSMO_ASSERT(link_info->sgsn_tlli.current == local_sgsn_tlli2); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == 0); /* Non-DTAP */ send_bssgp_ul_unitdata(nsi, "XID (UL)", &bss_peer[0], 0x1002, @@ -2886,19 +2886,19 @@ static void test_gbproxy_secondary_sgsn() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_sgsn_tlli(peer, random_sgsn_tlli3, SGSN_NSEI)); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, random_sgsn_tlli3, SGSN2_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli3); - OSMO_ASSERT(tlli_info->tlli.current == foreign_bss_tlli3); - OSMO_ASSERT(!tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->tlli.ptmsi == bss_ptmsi3); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == random_sgsn_tlli3); - OSMO_ASSERT(!tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.ptmsi == sgsn_ptmsi); + OSMO_ASSERT(!gbproxy_link_info_by_sgsn_tlli(peer, random_sgsn_tlli3, SGSN_NSEI)); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, random_sgsn_tlli3, SGSN2_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli3); + OSMO_ASSERT(link_info->tlli.current == foreign_bss_tlli3); + OSMO_ASSERT(!link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->tlli.ptmsi == bss_ptmsi3); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.current == random_sgsn_tlli3); + OSMO_ASSERT(!link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.ptmsi == sgsn_ptmsi); send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002, local_bss_tlli3, &rai_bss, cell_id, @@ -2907,19 +2907,19 @@ static void test_gbproxy_secondary_sgsn() dump_peers(stdout, 0, 0, &gbcfg); - other_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); + other_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); OSMO_ASSERT(other_info); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN2_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info != other_info); - OSMO_ASSERT(tlli_info->tlli.assigned == local_bss_tlli3); - OSMO_ASSERT(tlli_info->tlli.current == foreign_bss_tlli3); - OSMO_ASSERT(tlli_info->tlli.bss_validated); - OSMO_ASSERT(!tlli_info->tlli.net_validated); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == random_sgsn_tlli3); - OSMO_ASSERT(tlli_info->sgsn_tlli.bss_validated); - OSMO_ASSERT(!tlli_info->sgsn_tlli.net_validated); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN2_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info != other_info); + OSMO_ASSERT(link_info->tlli.assigned == local_bss_tlli3); + OSMO_ASSERT(link_info->tlli.current == foreign_bss_tlli3); + OSMO_ASSERT(link_info->tlli.bss_validated); + OSMO_ASSERT(!link_info->tlli.net_validated); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.current == random_sgsn_tlli3); + OSMO_ASSERT(link_info->sgsn_tlli.bss_validated); + OSMO_ASSERT(!link_info->sgsn_tlli.net_validated); send_llc_dl_ui(nsi, "GMM INFO", &sgsn_peer[1], 0x1002, local_sgsn_tlli, 1, imsi3, sizeof(imsi3), @@ -2928,15 +2928,15 @@ static void test_gbproxy_secondary_sgsn() dump_peers(stdout, 0, 0, &gbcfg); - other_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); + other_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN_NSEI); OSMO_ASSERT(other_info); - tlli_info = gbproxy_tlli_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN2_NSEI); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info != other_info); - OSMO_ASSERT(tlli_info->tlli.current == local_bss_tlli3); - OSMO_ASSERT(tlli_info->tlli.assigned == 0); - OSMO_ASSERT(tlli_info->sgsn_tlli.current == local_sgsn_tlli); - OSMO_ASSERT(tlli_info->sgsn_tlli.assigned == 0); + link_info = gbproxy_link_info_by_sgsn_tlli(peer, local_sgsn_tlli, SGSN2_NSEI); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info != other_info); + OSMO_ASSERT(link_info->tlli.current == local_bss_tlli3); + OSMO_ASSERT(link_info->tlli.assigned == 0); + OSMO_ASSERT(link_info->sgsn_tlli.current == local_sgsn_tlli); + OSMO_ASSERT(link_info->sgsn_tlli.assigned == 0); printf("--- Shutdown GPRS connection (SGSN 1) ---\n\n"); @@ -3009,7 +3009,7 @@ static void test_gbproxy_keep_info() const uint32_t foreign_tlli = 0xafe2b700; const uint8_t imsi[] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18}; - struct gbproxy_tlli_info *tlli_info, *tlli_info2; + struct gbproxy_link_info *link_info, *link_info2; struct gbproxy_peer *peer; unsigned bss_nu = 0; unsigned sgsn_nu = 0; @@ -3029,7 +3029,7 @@ static void test_gbproxy_keep_info() gbcfg.core_apn_size = 0; gbcfg.route_to_sgsn2 = 0; gbcfg.nsip_sgsn2_nsei = 0xffff; - gbcfg.keep_tlli_infos = GBPROX_KEEP_ALWAYS; + gbcfg.keep_link_infos = GBPROX_KEEP_ALWAYS; configure_sgsn_peer(&sgsn_peer); configure_bss_peers(bss_peer, ARRAY_SIZE(bss_peer)); @@ -3062,11 +3062,11 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_tlli(peer, foreign_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->imsi_len == 0); - OSMO_ASSERT(!tlli_info->is_deregistered); - OSMO_ASSERT(tlli_info->imsi_acq_pending); + link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->imsi_len == 0); + OSMO_ASSERT(!link_info->is_deregistered); + OSMO_ASSERT(link_info->imsi_acq_pending); send_llc_ul_ui(nsi, "IDENT RESPONSE", &bss_peer[0], 0x1002, foreign_tlli, &rai_bss, cell_id, @@ -3075,10 +3075,10 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_tlli(peer, foreign_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->imsi_len > 0); - OSMO_ASSERT(!tlli_info->imsi_acq_pending); + link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->imsi_len > 0); + OSMO_ASSERT(!link_info->imsi_acq_pending); send_llc_dl_ui(nsi, "IDENT REQUEST", &sgsn_peer, 0x1002, foreign_tlli, 0, NULL, 0, @@ -3094,10 +3094,10 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_tlli(peer, foreign_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->imsi_len > 0); - OSMO_ASSERT(gbproxy_tlli_info_by_imsi(peer, imsi, sizeof(imsi))); + link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->imsi_len > 0); + OSMO_ASSERT(gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi))); send_llc_dl_ui(nsi, "ATTACH ACCEPT", &sgsn_peer, 0x1002, foreign_tlli, 1, imsi, sizeof(imsi), @@ -3120,8 +3120,8 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_tlli(peer, local_tlli); - OSMO_ASSERT(tlli_info); + link_info = gbproxy_link_info_by_tlli(peer, local_tlli); + OSMO_ASSERT(link_info); /* Detach (MO) */ send_llc_ul_ui(nsi, "DETACH REQ", &bss_peer[0], 0x1002, @@ -3129,8 +3129,8 @@ static void test_gbproxy_keep_info() GPRS_SAPI_GMM, bss_nu++, dtap_detach_req, sizeof(dtap_detach_req)); - tlli_info = gbproxy_tlli_info_by_tlli(peer, local_tlli); - OSMO_ASSERT(tlli_info); + link_info = gbproxy_link_info_by_tlli(peer, local_tlli); + OSMO_ASSERT(link_info); dump_peers(stdout, 0, 0, &gbcfg); @@ -3141,10 +3141,10 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_tlli(peer, local_tlli)); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi, sizeof(imsi)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->is_deregistered); + OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, local_tlli)); + link_info = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->is_deregistered); /* Re-Attach */ send_llc_ul_ui(nsi, "ATTACH REQUEST", &bss_peer[0], 0x1002, @@ -3154,13 +3154,13 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info2 = gbproxy_tlli_info_by_imsi(peer, imsi, sizeof(imsi)); - tlli_info = gbproxy_tlli_info_by_tlli(peer, foreign_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info == tlli_info2); - OSMO_ASSERT(tlli_info->imsi_len != 0); - OSMO_ASSERT(!tlli_info->is_deregistered); - OSMO_ASSERT(!tlli_info->imsi_acq_pending); + link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi)); + link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info == link_info2); + OSMO_ASSERT(link_info->imsi_len != 0); + OSMO_ASSERT(!link_info->is_deregistered); + OSMO_ASSERT(!link_info->imsi_acq_pending); send_llc_dl_ui(nsi, "ATTACH ACCEPT", &sgsn_peer, 0x1002, foreign_tlli, 1, imsi, sizeof(imsi), @@ -3184,8 +3184,8 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_tlli(peer, local_tlli); - OSMO_ASSERT(tlli_info); + link_info = gbproxy_link_info_by_tlli(peer, local_tlli); + OSMO_ASSERT(link_info); send_llc_ul_ui(nsi, "DETACH ACC", &sgsn_peer, 0x1002, local_tlli, &rai_bss, cell_id, @@ -3194,10 +3194,10 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_tlli(peer, local_tlli)); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi, sizeof(imsi)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->is_deregistered); + OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, local_tlli)); + link_info = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->is_deregistered); /* Re-Attach */ send_llc_ul_ui(nsi, "ATTACH REQUEST", &bss_peer[0], 0x1002, @@ -3207,13 +3207,13 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info2 = gbproxy_tlli_info_by_imsi(peer, imsi, sizeof(imsi)); - tlli_info = gbproxy_tlli_info_by_tlli(peer, foreign_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info == tlli_info2); - OSMO_ASSERT(tlli_info->imsi_len != 0); - OSMO_ASSERT(!tlli_info->is_deregistered); - OSMO_ASSERT(!tlli_info->imsi_acq_pending); + link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi)); + link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info == link_info2); + OSMO_ASSERT(link_info->imsi_len != 0); + OSMO_ASSERT(!link_info->is_deregistered); + OSMO_ASSERT(!link_info->imsi_acq_pending); send_llc_dl_ui(nsi, "ATTACH ACCEPT", &sgsn_peer, 0x1002, foreign_tlli, 1, imsi, sizeof(imsi), @@ -3237,8 +3237,8 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_tlli(peer, local_tlli); - OSMO_ASSERT(tlli_info); + link_info = gbproxy_link_info_by_tlli(peer, local_tlli); + OSMO_ASSERT(link_info); send_llc_ul_ui(nsi, "DETACH ACC", &sgsn_peer, 0x1002, local_tlli, &rai_bss, cell_id, @@ -3247,10 +3247,10 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_tlli(peer, local_tlli)); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi, sizeof(imsi)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->is_deregistered); + OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, local_tlli)); + link_info = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->is_deregistered); /* Re-Attach */ send_llc_ul_ui(nsi, "ATTACH REQUEST", &bss_peer[0], 0x1002, @@ -3260,13 +3260,13 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info2 = gbproxy_tlli_info_by_imsi(peer, imsi, sizeof(imsi)); - tlli_info = gbproxy_tlli_info_by_tlli(peer, foreign_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info == tlli_info2); - OSMO_ASSERT(tlli_info->imsi_len != 0); - OSMO_ASSERT(!tlli_info->is_deregistered); - OSMO_ASSERT(!tlli_info->imsi_acq_pending); + link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi)); + link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info == link_info2); + OSMO_ASSERT(link_info->imsi_len != 0); + OSMO_ASSERT(!link_info->is_deregistered); + OSMO_ASSERT(!link_info->imsi_acq_pending); send_llc_dl_ui(nsi, "ATTACH ACCEPT", &sgsn_peer, 0x1002, foreign_tlli, 1, imsi, sizeof(imsi), @@ -3295,10 +3295,10 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_tlli(peer, local_tlli)); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi, sizeof(imsi)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->is_deregistered); + OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, local_tlli)); + link_info = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->is_deregistered); /* Bad case: Re-Attach with wrong (initial) P-TMSI */ send_llc_ul_ui(nsi, "ATTACH REQUEST", &bss_peer[0], 0x1002, @@ -3308,13 +3308,13 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info2 = gbproxy_tlli_info_by_imsi(peer, imsi, sizeof(imsi)); - tlli_info = gbproxy_tlli_info_by_tlli(peer, foreign_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info != tlli_info2); - OSMO_ASSERT(tlli_info->imsi_len == 0); - OSMO_ASSERT(!tlli_info->is_deregistered); - OSMO_ASSERT(tlli_info->imsi_acq_pending); + link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi)); + link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info != link_info2); + OSMO_ASSERT(link_info->imsi_len == 0); + OSMO_ASSERT(!link_info->is_deregistered); + OSMO_ASSERT(link_info->imsi_acq_pending); /* This wouldn't happen in reality, since the Attach Request hadn't * been forwarded to the SGSN. @@ -3327,13 +3327,13 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info2 = gbproxy_tlli_info_by_imsi(peer, imsi, sizeof(imsi)); - tlli_info = gbproxy_tlli_info_by_tlli(peer, foreign_tlli); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info == tlli_info2); - OSMO_ASSERT(tlli_info->imsi_len >= 0); - OSMO_ASSERT(!tlli_info->is_deregistered); - OSMO_ASSERT(tlli_info->imsi_acq_pending); + link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi)); + link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info == link_info2); + OSMO_ASSERT(link_info->imsi_len >= 0); + OSMO_ASSERT(!link_info->is_deregistered); + OSMO_ASSERT(link_info->imsi_acq_pending); send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002, local_tlli, &rai_bss, cell_id, @@ -3350,8 +3350,8 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - tlli_info = gbproxy_tlli_info_by_tlli(peer, local_tlli); - OSMO_ASSERT(tlli_info); + link_info = gbproxy_link_info_by_tlli(peer, local_tlli); + OSMO_ASSERT(link_info); send_llc_ul_ui(nsi, "DETACH ACC", &sgsn_peer, 0x1002, local_tlli, &rai_bss, cell_id, @@ -3360,10 +3360,10 @@ static void test_gbproxy_keep_info() dump_peers(stdout, 0, 0, &gbcfg); - OSMO_ASSERT(!gbproxy_tlli_info_by_tlli(peer, local_tlli)); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi, sizeof(imsi)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->is_deregistered); + OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, local_tlli)); + link_info = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->is_deregistered); dump_global(stdout, 0); @@ -3607,11 +3607,11 @@ static void test_tlv_shift_functions() } } -struct gbproxy_tlli_info *register_tlli( +struct gbproxy_link_info *register_tlli( struct gbproxy_peer *peer, uint32_t tlli, const uint8_t *imsi, size_t imsi_len, time_t now) { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; int imsi_matches = -1; int tlli_already_known = 0; @@ -3622,40 +3622,40 @@ struct gbproxy_tlli_info *register_tlli( return NULL; } - tlli_info = gbproxy_tlli_info_by_tlli(peer, tlli); + link_info = gbproxy_link_info_by_tlli(peer, tlli); - if (!tlli_info) { - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi, imsi_len); + if (!link_info) { + link_info = gbproxy_link_info_by_imsi(peer, imsi, imsi_len); - if (tlli_info) { + if (link_info) { /* TLLI has changed somehow, adjust it */ LOGP(DGPRS, LOGL_INFO, "The TLLI has changed from %08x to %08x\n", - tlli_info->tlli.current, tlli); - tlli_info->tlli.current = tlli; + link_info->tlli.current, tlli); + link_info->tlli.current = tlli; } } - if (!tlli_info) { - tlli_info = gbproxy_tlli_info_alloc(peer); - tlli_info->tlli.current = tlli; + if (!link_info) { + link_info = gbproxy_link_info_alloc(peer); + link_info->tlli.current = tlli; } else { - gbproxy_detach_tlli_info(peer, tlli_info); + gbproxy_detach_link_info(peer, link_info); tlli_already_known = 1; } - OSMO_ASSERT(tlli_info != NULL); + OSMO_ASSERT(link_info != NULL); if (!tlli_already_known) LOGP(DGPRS, LOGL_INFO, "Adding TLLI %08x to list\n", tlli); - gbproxy_attach_tlli_info(peer, now, tlli_info); - gbproxy_update_tlli_info(tlli_info, imsi, imsi_len); + gbproxy_attach_link_info(peer, now, link_info); + gbproxy_update_link_info(link_info, imsi, imsi_len); if (imsi_matches >= 0) - tlli_info->imsi_matches = imsi_matches; + link_info->imsi_matches = imsi_matches; - return tlli_info; + return link_info; } static void test_gbproxy_tlli_expire(void) @@ -3683,7 +3683,7 @@ static void test_gbproxy_tlli_expire(void) } { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; printf("Test TLLI replacement:\n"); @@ -3693,28 +3693,28 @@ static void test_gbproxy_tlli_expire(void) OSMO_ASSERT(peer->patch_state.enabled_tllis_count == 0); printf(" Add TLLI 1, IMSI 1\n"); - tlli_info = register_tlli(peer, tlli1, + link_info = register_tlli(peer, tlli1, imsi1, ARRAY_SIZE(imsi1), now); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == tlli1); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == tlli1); OSMO_ASSERT(peer->patch_state.enabled_tllis_count == 1); /* replace the old entry */ printf(" Add TLLI 2, IMSI 1 (should replace TLLI 1)\n"); - tlli_info = register_tlli(peer, tlli2, + link_info = register_tlli(peer, tlli2, imsi1, ARRAY_SIZE(imsi1), now); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == tlli2); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == tlli2); OSMO_ASSERT(peer->patch_state.enabled_tllis_count == 1); dump_peers(stdout, 2, now, &cfg); /* verify that 5678 has survived */ - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == tlli2); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); - OSMO_ASSERT(!tlli_info); + link_info = gbproxy_link_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == tlli2); + link_info = gbproxy_link_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); + OSMO_ASSERT(!link_info); printf("\n"); @@ -3722,7 +3722,7 @@ static void test_gbproxy_tlli_expire(void) } { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; printf("Test IMSI replacement:\n"); @@ -3732,28 +3732,28 @@ static void test_gbproxy_tlli_expire(void) OSMO_ASSERT(peer->patch_state.enabled_tllis_count == 0); printf(" Add TLLI 1, IMSI 1\n"); - tlli_info = register_tlli(peer, tlli1, + link_info = register_tlli(peer, tlli1, imsi1, ARRAY_SIZE(imsi1), now); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == tlli1); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == tlli1); OSMO_ASSERT(peer->patch_state.enabled_tllis_count == 1); /* try to replace the old entry */ printf(" Add TLLI 1, IMSI 2 (should replace IMSI 1)\n"); - tlli_info = register_tlli(peer, tlli1, + link_info = register_tlli(peer, tlli1, imsi2, ARRAY_SIZE(imsi2), now); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == tlli1); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == tlli1); OSMO_ASSERT(peer->patch_state.enabled_tllis_count == 1); dump_peers(stdout, 2, now, &cfg); /* verify that 5678 has survived */ - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); - OSMO_ASSERT(!tlli_info); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == tlli1); + link_info = gbproxy_link_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); + OSMO_ASSERT(!link_info); + link_info = gbproxy_link_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == tlli1); printf("\n"); @@ -3761,7 +3761,7 @@ static void test_gbproxy_tlli_expire(void) } { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; int num_removed; printf("Test TLLI expiry, max_len == 1:\n"); @@ -3780,18 +3780,18 @@ static void test_gbproxy_tlli_expire(void) register_tlli(peer, tlli2, imsi2, ARRAY_SIZE(imsi2), now); OSMO_ASSERT(peer->patch_state.enabled_tllis_count == 2); - num_removed = gbproxy_remove_stale_tlli_infos(peer, time(NULL) + 2); + num_removed = gbproxy_remove_stale_link_infos(peer, time(NULL) + 2); OSMO_ASSERT(num_removed == 1); OSMO_ASSERT(peer->patch_state.enabled_tllis_count == 1); dump_peers(stdout, 2, now, &cfg); /* verify that 5678 has survived */ - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); - OSMO_ASSERT(!tlli_info); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == tlli2); + link_info = gbproxy_link_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); + OSMO_ASSERT(!link_info); + link_info = gbproxy_link_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == tlli2); printf("\n"); @@ -3799,7 +3799,7 @@ static void test_gbproxy_tlli_expire(void) } { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; int num_removed; printf("Test TLLI expiry, max_age == 1:\n"); @@ -3818,18 +3818,18 @@ static void test_gbproxy_tlli_expire(void) now + 1); OSMO_ASSERT(peer->patch_state.enabled_tllis_count == 2); - num_removed = gbproxy_remove_stale_tlli_infos(peer, now + 2); + num_removed = gbproxy_remove_stale_link_infos(peer, now + 2); OSMO_ASSERT(num_removed == 1); OSMO_ASSERT(peer->patch_state.enabled_tllis_count == 1); dump_peers(stdout, 2, now + 2, &cfg); /* verify that 5678 has survived */ - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); - OSMO_ASSERT(!tlli_info); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == tlli2); + link_info = gbproxy_link_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); + OSMO_ASSERT(!link_info); + link_info = gbproxy_link_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == tlli2); printf("\n"); @@ -3837,7 +3837,7 @@ static void test_gbproxy_tlli_expire(void) } { - struct gbproxy_tlli_info *tlli_info; + struct gbproxy_link_info *link_info; int num_removed; printf("Test TLLI expiry, max_len == 2, max_age == 1:\n"); @@ -3864,20 +3864,20 @@ static void test_gbproxy_tlli_expire(void) dump_peers(stdout, 2, now + 2, &cfg); printf(" Remove stale TLLIs\n"); - num_removed = gbproxy_remove_stale_tlli_infos(peer, now + 3); + num_removed = gbproxy_remove_stale_link_infos(peer, now + 3); OSMO_ASSERT(num_removed == 2); OSMO_ASSERT(peer->patch_state.enabled_tllis_count == 1); dump_peers(stdout, 2, now + 2, &cfg); /* verify that tlli3 has survived */ - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); - OSMO_ASSERT(!tlli_info); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); - OSMO_ASSERT(!tlli_info); - tlli_info = gbproxy_tlli_info_by_imsi(peer, imsi3, ARRAY_SIZE(imsi3)); - OSMO_ASSERT(tlli_info); - OSMO_ASSERT(tlli_info->tlli.current == tlli3); + link_info = gbproxy_link_info_by_imsi(peer, imsi1, ARRAY_SIZE(imsi1)); + OSMO_ASSERT(!link_info); + link_info = gbproxy_link_info_by_imsi(peer, imsi2, ARRAY_SIZE(imsi2)); + OSMO_ASSERT(!link_info); + link_info = gbproxy_link_info_by_imsi(peer, imsi3, ARRAY_SIZE(imsi3)); + OSMO_ASSERT(link_info); + OSMO_ASSERT(link_info->tlli.current == tlli3); printf("\n"); |