From 91d2f8a7048bfed3519026bb2f821bbe417c0eec Mon Sep 17 00:00:00 2001 From: Jacob Erlbeck Date: Fri, 19 Sep 2014 15:07:27 +0200 Subject: gbproxy: Use the term 'link' instead of 'tlli' Currently in many places where 'tlli' (Temporary Logical Link Identifier) within identifiers is used, the logical link itself is meant instead. For instance, the tlli_info contain information about an LLC logical link including up to four individual TLLI. To avoid confusion between these concepts, this patch replaces all 'tlli_info' by 'link_info' and a few 'tlli' by 'link'. Sponsored-by: On-Waves ehf --- openbsc/include/openbsc/gb_proxy.h | 56 +-- openbsc/src/gprs/gb_proxy.c | 108 ++--- openbsc/src/gprs/gb_proxy_patch.c | 26 +- openbsc/src/gprs/gb_proxy_peer.c | 2 +- openbsc/src/gprs/gb_proxy_tlli.c | 398 ++++++++-------- openbsc/src/gprs/gb_proxy_vty.c | 50 +- openbsc/tests/gbproxy/gbproxy_test.c | 888 +++++++++++++++++------------------ 7 files changed, 764 insertions(+), 764 deletions(-) (limited to 'openbsc') 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 #include -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"); -- cgit v1.2.3