diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-09-03 14:35:33 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-09-03 15:04:43 +0200 |
commit | 1b9902c1280b3b1092b726695142a09a1edcb154 (patch) | |
tree | 531c3101b4a3009da5c494fad58f3d1f15f6f1c1 /openbsc/src/osmo-bsc_nat/bsc_nat.c | |
parent | ff98b3cffa9badc7d2cc5b2e8fed3460ccb017c6 (diff) |
nat: Remember the original dest local reference in the parsed struct
In case of the RLSD coming from the MSC we are patching the address
in-situ but for local calls set con = NULL. We then answered the RLSD
with the wrong reference and the MSC kept on trying.
Diffstat (limited to 'openbsc/src/osmo-bsc_nat/bsc_nat.c')
-rw-r--r-- | openbsc/src/osmo-bsc_nat/bsc_nat.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c b/openbsc/src/osmo-bsc_nat/bsc_nat.c index a1fc035e6..d9fc0ca48 100644 --- a/openbsc/src/osmo-bsc_nat/bsc_nat.c +++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c @@ -706,7 +706,8 @@ static int forward_sccp_to_bts(struct bsc_msc_connection *msc_con, struct msgb * if (!con && parsed->sccp_type == SCCP_MSG_TYPE_RLSD) { LOGP(DNAT, LOGL_NOTICE, "Sending fake RLC on RLSD message to network.\n"); /* Exchange src/dest for the reply */ - nat_send_rlc(msc_con, parsed->dest_local_ref, parsed->src_local_ref); + nat_send_rlc(msc_con, &parsed->original_dest_ref, + parsed->src_local_ref); } else if (!con) LOGP(DNAT, LOGL_ERROR, "Unknown connection for msg type: 0x%x from the MSC.\n", parsed->sccp_type); } |