diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-08-04 11:26:54 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-08-04 11:37:47 +0200 |
commit | b900459e968336baa87c216505f51e9c9f55a124 (patch) | |
tree | a611a69bd1e0c083c487ce169dd6e897533e18a0 /openbsc/tests/gbproxy | |
parent | 16f30b53739386810783a5fa78b6af989f5dd330 (diff) |
gbproxy: The dump routines are only used by the test, move it there
Done with Jacob
Diffstat (limited to 'openbsc/tests/gbproxy')
-rw-r--r-- | openbsc/tests/gbproxy/gbproxy_test.c | 165 |
1 files changed, 129 insertions, 36 deletions
diff --git a/openbsc/tests/gbproxy/gbproxy_test.c b/openbsc/tests/gbproxy/gbproxy_test.c index c3680f567..6905fe200 100644 --- a/openbsc/tests/gbproxy/gbproxy_test.c +++ b/openbsc/tests/gbproxy/gbproxy_test.c @@ -13,6 +13,7 @@ #include <string.h> #include <getopt.h> #include <dlfcn.h> +#include <time.h> #include <sys/types.h> #include <sys/socket.h> @@ -38,6 +39,98 @@ struct gbproxy_config gbcfg = {0}; +static int dump_global(FILE *stream, int indent) +{ + unsigned int i; + const struct rate_ctr_group_desc *desc; + int rc; + + rc = fprintf(stream, "%*sGbproxy global:\n", indent, ""); + if (rc < 0) + return rc; + + desc = gbcfg.ctrg->desc; + + for (i = 0; i < desc->num_ctr; i++) { + struct rate_ctr *ctr = &gbcfg.ctrg->ctr[i]; + if (ctr->current) { + rc = fprintf(stream, "%*s %s: %llu\n", + indent, "", + desc->ctr_desc[i].description, + (long long)ctr->current); + + if (rc < 0) + return rc; + } + } + + return 0; +} + +static int dump_peers(FILE *stream, int indent) +{ + struct gbprox_peer *peer; + struct gprs_ra_id raid; + unsigned int i; + const struct rate_ctr_group_desc *desc; + int rc; + time_t now = time(NULL); + + rc = fprintf(stream, "%*sPeers:\n", indent, ""); + if (rc < 0) + return rc; + + llist_for_each_entry(peer, &gbcfg.bts_peers, list) { + struct gbprox_tlli_info *tlli_info; + struct gbprox_patch_state *state = &peer->patch_state; + gsm48_parse_ra(&raid, peer->ra); + + rc = fprintf(stream, "%*s NSEI %u, BVCI %u, %sblocked, " + "RAI %u-%u-%u-%u\n", + indent, "", + peer->nsei, peer->bvci, + peer->blocked ? "" : "not ", + raid.mcc, raid.mnc, raid.lac, raid.rac); + + if (rc < 0) + return rc; + + desc = peer->ctrg->desc; + + for (i = 0; i < desc->num_ctr; i++) { + struct rate_ctr *ctr = &peer->ctrg->ctr[i]; + if (ctr->current) { + rc = fprintf(stream, "%*s %s: %llu\n", + indent, "", + desc->ctr_desc[i].description, + (long long)ctr->current); + + if (rc < 0) + return rc; + } + } + + fprintf(stream, "%*s TLLI-Cache: %d\n", + indent, "", state->enabled_tllis_count); + llist_for_each_entry(tlli_info, &state->enabled_tllis, list) { + char mi_buf[200]; + time_t age = now - tlli_info->timestamp; + snprintf(mi_buf, sizeof(mi_buf), "(invalid)"); + gsm48_mi_to_string(mi_buf, sizeof(mi_buf), + tlli_info->mi_data, + tlli_info->mi_data_len); + rc = fprintf(stream, + "%*s TLLI %08x, IMSI %s, AGE %d\n", + indent, "", + tlli_info->tlli, mi_buf, (int)age); + if (rc < 0) + return rc; + } + } + + return 0; +} + /* Base Station Subsystem GPRS Protocol: GSM A-I/F DTAP - Attach Request */ static const unsigned char bssgp_attach_req[75] = { 0x01, 0xbb, 0xc5, 0x46, 0x79, 0x00, 0x00, 0x04, @@ -574,7 +667,7 @@ static void test_gbproxy() setup_ns(nsi, &bss_peer[0], 0x1001, 0x1000); setup_bssgp(nsi, &bss_peer[0], 0x1002); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); send_bssgp_reset_ack(nsi, &sgsn_peer, 0x1002); @@ -583,7 +676,7 @@ static void test_gbproxy() setup_ns(nsi, &bss_peer[1], 0x2001, 0x2000); setup_bssgp(nsi, &bss_peer[1], 0x2002); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); send_bssgp_reset_ack(nsi, &sgsn_peer, 0x2002); @@ -591,43 +684,43 @@ static void test_gbproxy() setup_ns(nsi, &bss_peer[2], 0x1001, 0x1000); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Move BSS 2 to former BSS 1 port ---\n\n"); setup_ns(nsi, &bss_peer[0], 0x2001, 0x2000); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Move BSS 1 to current BSS 2 port ---\n\n"); setup_ns(nsi, &bss_peer[0], 0x2001, 0x2000); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Move BSS 2 to new port ---\n\n"); setup_ns(nsi, &bss_peer[3], 0x2001, 0x2000); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Move BSS 2 to former BSS 1 port ---\n\n"); setup_ns(nsi, &bss_peer[2], 0x2001, 0x2000); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Move BSS 1 to original BSS 1 port ---\n\n"); setup_ns(nsi, &bss_peer[0], 0x1001, 0x1000); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Reset BSS 1 with a new BVCI ---\n\n"); setup_bssgp(nsi, &bss_peer[0], 0x1012); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); send_bssgp_reset_ack(nsi, &sgsn_peer, 0x1012); @@ -635,7 +728,7 @@ static void test_gbproxy() setup_bssgp(nsi, &bss_peer[0], 0x1002); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); send_bssgp_reset_ack(nsi, &sgsn_peer, 0x1002); @@ -643,7 +736,7 @@ static void test_gbproxy() setup_bssgp(nsi, &bss_peer[0], 0x1002); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); send_bssgp_reset_ack(nsi, &sgsn_peer, 0x1002); @@ -675,9 +768,9 @@ static void test_gbproxy() setup_bssgp(nsi, &bss_peer[2], 0x1002); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); - gbprox_dump_global(stdout, 0); + dump_global(stdout, 0); send_bssgp_reset_ack(nsi, &sgsn_peer, 0x1002); @@ -693,7 +786,7 @@ static void test_gbproxy() send_ns_unitdata(nsi, NULL, &sgsn_peer, 0x10ff, (uint8_t *)"", 0); - gbprox_dump_global(stdout, 0); + dump_global(stdout, 0); gbprox_reset(); gprs_ns_destroy(nsi); @@ -731,13 +824,13 @@ static void test_gbproxy_ident_changes() setup_bssgp(nsi, &bss_peer[0], bvci[0]); send_bssgp_reset_ack(nsi, &sgsn_peer, bvci[0]); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Setup BVCI 2 ---\n\n"); setup_bssgp(nsi, &bss_peer[0], bvci[1]); send_bssgp_reset_ack(nsi, &sgsn_peer, bvci[1]); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Send message from BSS 1 to SGSN and back, BVCI 1 ---\n\n"); @@ -758,13 +851,13 @@ static void test_gbproxy_ident_changes() setup_bssgp(nsi, &bss_peer[0], bvci[0]); send_bssgp_reset_ack(nsi, &sgsn_peer, bvci[0]); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Setup BVCI 3 ---\n\n"); setup_bssgp(nsi, &bss_peer[0], bvci[2]); send_bssgp_reset_ack(nsi, &sgsn_peer, bvci[2]); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Send message from BSS 1 to SGSN and back, BVCI 1 ---\n\n"); @@ -775,9 +868,9 @@ static void test_gbproxy_ident_changes() " (should fail) ---\n\n"); send_ns_unitdata(nsi, NULL, &bss_peer[0], bvci[1], (uint8_t *)"", 0); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); send_ns_unitdata(nsi, NULL, &sgsn_peer, bvci[1], (uint8_t *)"", 0); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Send message from BSS 1 to SGSN and back, BVCI 3 ---\n\n"); @@ -793,13 +886,13 @@ static void test_gbproxy_ident_changes() setup_bssgp(nsi, &bss_peer[0], bvci[0]); send_bssgp_reset_ack(nsi, &sgsn_peer, bvci[0]); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Setup BVCI 4 ---\n\n"); setup_bssgp(nsi, &bss_peer[0], bvci[3]); send_bssgp_reset_ack(nsi, &sgsn_peer, bvci[3]); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Send message from BSS 1 to SGSN and back, BVCI 1 ---\n\n"); @@ -810,9 +903,9 @@ static void test_gbproxy_ident_changes() " (should fail) ---\n\n"); send_ns_unitdata(nsi, NULL, &bss_peer[0], bvci[1], (uint8_t *)"", 0); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); send_ns_unitdata(nsi, NULL, &sgsn_peer, bvci[1], (uint8_t *)"", 0); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- Send message from BSS 1 to SGSN and back, BVCI 3 ---\n\n"); @@ -824,8 +917,8 @@ static void test_gbproxy_ident_changes() send_ns_unitdata(nsi, NULL, &bss_peer[0], bvci[3], (uint8_t *)"", 0); send_ns_unitdata(nsi, NULL, &sgsn_peer, bvci[3], (uint8_t *)"", 0); - gbprox_dump_global(stdout, 0); - gbprox_dump_peers(stdout, 0); + dump_global(stdout, 0); + dump_peers(stdout, 0); gbprox_reset(); gprs_ns_destroy(nsi); @@ -875,15 +968,15 @@ static void test_gbproxy_ra_patching() setup_ns(nsi, &bss_peer[0], 0x1001, 0x1000); setup_bssgp(nsi, &bss_peer[0], 0x1002); gprs_dump_nsi(nsi); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); send_bssgp_reset_ack(nsi, &sgsn_peer, 0x1002); send_bssgp_suspend(nsi, &bss_peer[0], &rai_bss); send_bssgp_suspend_ack(nsi, &sgsn_peer, &rai_sgsn); - gbprox_dump_global(stdout, 0); - gbprox_dump_peers(stdout, 0); + dump_global(stdout, 0); + dump_peers(stdout, 0); printf("--- Send message from BSS 1 to SGSN, BVCI 0x1002 ---\n\n"); @@ -914,7 +1007,7 @@ static void test_gbproxy_ra_patching() &bss_peer[0], 0x1002, bssgp_act_pdp_ctx_req, sizeof(bssgp_act_pdp_ctx_req)); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); /* Detach */ send_ns_unitdata(nsi, "DETACH REQ", &bss_peer[0], 0x1002, @@ -923,7 +1016,7 @@ static void test_gbproxy_ra_patching() send_ns_unitdata(nsi, "DETACH ACC", &sgsn_peer, 0x1002, bssgp_detach_acc, sizeof(bssgp_detach_acc)); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); printf("--- RA update ---\n\n"); @@ -938,7 +1031,7 @@ static void test_gbproxy_ra_patching() &bss_peer[0], 0x1002, bssgp_act_pdp_ctx_req, sizeof(bssgp_act_pdp_ctx_req)); - gbprox_dump_peers(stdout, 0); + dump_peers(stdout, 0); /* Detach */ send_ns_unitdata(nsi, "DETACH REQ", &bss_peer[0], 0x1002, @@ -948,8 +1041,8 @@ static void test_gbproxy_ra_patching() bssgp_detach_acc, sizeof(bssgp_detach_acc)); - gbprox_dump_global(stdout, 0); - gbprox_dump_peers(stdout, 0); + dump_global(stdout, 0); + dump_peers(stdout, 0); printf("--- Bad cases ---\n\n"); @@ -960,8 +1053,8 @@ static void test_gbproxy_ra_patching() printf("Invalid RAI, shouldn't patch\n"); send_bssgp_suspend_ack(nsi, &sgsn_peer, &rai_unknown); - gbprox_dump_global(stdout, 0); - gbprox_dump_peers(stdout, 0); + dump_global(stdout, 0); + dump_peers(stdout, 0); gbprox_reset(); gprs_ns_destroy(nsi); |