From 09db1a44bc56e81780954555acfbc1bf2fb7cc81 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 26 Mar 2012 16:21:42 +0200 Subject: nat: Add another test case for TP-SRR clearing and number rewrite --- openbsc/tests/bsc-nat/bsc_data.c | 10 ++++++++++ openbsc/tests/bsc-nat/bsc_nat_test.c | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/openbsc/tests/bsc-nat/bsc_data.c b/openbsc/tests/bsc-nat/bsc_data.c index 6a984f601..96dda7f7d 100644 --- a/openbsc/tests/bsc-nat/bsc_data.c +++ b/openbsc/tests/bsc-nat/bsc_data.c @@ -137,6 +137,16 @@ static const uint8_t smsc_rewrite_num_patched[] = { 0xbf, 0xeb, 0x20 }; +static const uint8_t smsc_rewrite_num_patched_tp_srr[] = { +0x00, 0x2f, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00, +0x01, 0x28, 0x01, 0x03, 0x25, 0x09, 0x01, 0x22, +0x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08, +0x00, 0x10, 0x50, 0x16, 0x01, 0x0c, 0x0d, 0x91, + 0x23, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5, +0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca, +0xbf, 0xeb, 0x20 +}; + /* * MGCP messages */ diff --git a/openbsc/tests/bsc-nat/bsc_nat_test.c b/openbsc/tests/bsc-nat/bsc_nat_test.c index c6187f9c5..f8ba57b8a 100644 --- a/openbsc/tests/bsc-nat/bsc_nat_test.c +++ b/openbsc/tests/bsc-nat/bsc_nat_test.c @@ -1078,15 +1078,15 @@ static void test_sms_smsc_rewrite() static void test_sms_number_rewrite(void) { - struct msgb *msg = msgb_alloc(4096, "SMSC rewrite"), *out; + struct msgb *msg, *out; struct bsc_nat_parsed *parsed; const char *imsi = "515039900406700"; struct bsc_nat *nat = bsc_nat_alloc(); /* a fake list */ - struct osmo_config_list num_entries; - struct osmo_config_entry num_entry; + struct osmo_config_list num_entries, clear_entries; + struct osmo_config_entry num_entry, clear_entry; INIT_LLIST_HEAD(&num_entries.entry); num_entry.mcc = "^515039"; @@ -1101,6 +1101,7 @@ static void test_sms_number_rewrite(void) /* * Check if the SMSC address is changed */ + msg = msgb_alloc(4096, "SMSC rewrite"); copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite)); parsed = bsc_nat_parse(msg); if (!parsed) { @@ -1117,6 +1118,34 @@ static void test_sms_number_rewrite(void) verify_msg(out, smsc_rewrite_num_patched, ARRAY_SIZE(smsc_rewrite_num_patched)); msgb_free(out); + + /* + * Now with TP-SRR rewriting enabled + */ + INIT_LLIST_HEAD(&clear_entries.entry); + clear_entry.mcc = "^515039"; + clear_entry.option = ""; + clear_entry.text = ""; + llist_add_tail(&clear_entry.list, &clear_entries.entry); + bsc_nat_num_rewr_entry_adapt(nat, &nat->sms_clear_tp_srr, &clear_entries); + + msg = msgb_alloc(4096, "SMSC rewrite"); + copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite)); + parsed = bsc_nat_parse(msg); + if (!parsed) { + printf("FAIL: Could not parse SMS\n"); + abort(); + } + + out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); + if (out == msg) { + printf("FAIL: This should have changed.\n"); + abort(); + } + + verify_msg(out, smsc_rewrite_num_patched_tp_srr, + ARRAY_SIZE(smsc_rewrite_num_patched_tp_srr)); + msgb_free(out); } int main(int argc, char **argv) -- cgit v1.2.3