aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/nat
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2011-02-10 11:46:51 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2011-02-18 23:44:49 +0100
commit91fa850791c86d9645529fe4069c2f9b79e65f34 (patch)
tree80ea8287899ff98e9ef090504097dea3bcf93c2a /openbsc/src/nat
parent4446b3bf3439678beab10b067919e121a6499835 (diff)
nat: If the number starts with 00 turn it into a international number
Switch the type to international and skip the '00' of the phone number. This should fix some issues with gateway MSCs.
Diffstat (limited to 'openbsc/src/nat')
-rw-r--r--openbsc/src/nat/bsc_nat_utils.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/openbsc/src/nat/bsc_nat_utils.c b/openbsc/src/nat/bsc_nat_utils.c
index b43d67a83..7b75fa56d 100644
--- a/openbsc/src/nat/bsc_nat_utils.c
+++ b/openbsc/src/nat/bsc_nat_utils.c
@@ -848,7 +848,12 @@ struct msgb *bsc_nat_rewrite_setup(struct bsc_nat *nat, struct msgb *msg, struct
memcpy(outptr, &hdr48->data[0], sec_len);
/* create the new number */
- strncpy(called.number, new_number, sizeof(called.number));
+ if (strncmp(new_number, "00", 2) == 0) {
+ called.type = 1;
+ strncpy(called.number, new_number + 2, sizeof(called.number));
+ } else {
+ strncpy(called.number, new_number, sizeof(called.number));
+ }
gsm48_encode_called(out, &called);
/* copy thre rest */