diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-09-07 17:52:32 +0200 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-11-12 16:05:35 +0100 |
commit | fda5bb5e51a60ad168be5ba86db6b1fe15f7a6c9 (patch) | |
tree | 9a0962c464b8b0c3e920bab2e36439b5c453da8c /openbsc/src/libmsc | |
parent | 0faacd6adfa5a0f95c4db27494ebd2795f93e59d (diff) |
IuCS: send RANAP CommonID
Add libiu function to send a CommonID message down a UE connection,
iu_tx_common_id(); add also a corresponding stub to libiudummy for linking with
tests.
Add libmsc function msc_tx_common_id() to call the above. Add this mostly to
clearly indicate in msc_ifaces.h that libmsc is calling out of the MSC; also
to do conn->via_iface checking.
Call msc_tx_common_id() after ciphering is established, in
_gsm48_rx_mm_serv_req_sec_cb()'s GSM_SECURITY_SUCCEEDED case.
Change-Id: I576ddd5bbabfc989149debd2f8a9743db6d26043
Diffstat (limited to 'openbsc/src/libmsc')
-rw-r--r-- | openbsc/src/libmsc/gsm_04_08.c | 1 | ||||
-rw-r--r-- | openbsc/src/libmsc/msc_ifaces.c | 19 |
2 files changed, 20 insertions, 0 deletions
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c index 25ee8cf89..9576e2964 100644 --- a/openbsc/src/libmsc/gsm_04_08.c +++ b/openbsc/src/libmsc/gsm_04_08.c @@ -972,6 +972,7 @@ static int _gsm48_rx_mm_serv_req_sec_cb( /* nothing to do. CIPHER MODE COMMAND is * implicit CM SERV ACK */ implit_attach(conn); + rc = msc_tx_common_id(conn); break; default: diff --git a/openbsc/src/libmsc/msc_ifaces.c b/openbsc/src/libmsc/msc_ifaces.c index bc8533b5a..04a3d3a8f 100644 --- a/openbsc/src/libmsc/msc_ifaces.c +++ b/openbsc/src/libmsc/msc_ifaces.c @@ -23,6 +23,10 @@ #include <openbsc/debug.h> #include <openbsc/gsm_data.h> #include <openbsc/msc_ifaces.h> +#include <openbsc/iu.h> +#include <openbsc/gsm_subscriber.h> + +#include "../../bscconfig.h" static int msc_tx(struct gsm_subscriber_connection *conn, struct msgb *msg) { @@ -81,3 +85,18 @@ int msc_gsm48_tx_mm_serv_rej(struct gsm_subscriber_connection *conn, return msc_tx_dtap(conn, msg); } + +int msc_tx_common_id(struct gsm_subscriber_connection *conn) +{ + /* Common ID is only sent over IuCS */ + if (conn->via_iface != IFACE_IU) + return 0; + +#ifdef BUILD_IU + return iu_tx_common_id(conn->iu.ue_ctx, conn->subscr->imsi); +#else + LOGP(DMM, LOGL_ERROR, + "Cannot send CommonID: IFACE_IU but IuCS support not built\n"); + return -ENOTSUP; +#endif +} |