bsc: Move gsm48_tx_mm_serv_ack/rej to gsm_04_08_utils.c
These functions are currently located in libmsc/gsm_04_08.c together with other symbols that (transitively) depend on many external symbols (and thus libraries) that aren't otherwise needed by e.g. osmo-bsc. Since gsm48_tx_mm_serv_ack() will be needed by osmo-bsc, these functions are moved to avoid the dependency on gsm_04_08.o. Sponsored-by: On-Waves ehf
This commit is contained in:
parent
28e183f385
commit
24d3b91d46
|
@ -39,6 +39,9 @@ void gsm_net_update_ctype(struct gsm_network *net);
|
|||
int gsm48_tx_mm_info(struct gsm_subscriber_connection *conn);
|
||||
int gsm48_tx_mm_auth_req(struct gsm_subscriber_connection *conn, uint8_t *rand, int key_seq);
|
||||
int gsm48_tx_mm_auth_rej(struct gsm_subscriber_connection *conn);
|
||||
int gsm48_tx_mm_serv_ack(struct gsm_subscriber_connection *conn);
|
||||
int gsm48_tx_mm_serv_rej(struct gsm_subscriber_connection *conn,
|
||||
enum gsm48_reject_value value);
|
||||
int gsm48_send_rr_release(struct gsm_lchan *lchan);
|
||||
int gsm48_send_rr_ciph_mode(struct gsm_lchan *lchan, int want_imeisv);
|
||||
int gsm48_send_rr_app_info(struct gsm_subscriber_connection *conn, uint8_t apdu_id,
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include <openbsc/transaction.h>
|
||||
#include <openbsc/paging.h>
|
||||
#include <openbsc/signal.h>
|
||||
#include <openbsc/bsc_api.h>
|
||||
|
||||
/* should ip.access BTS use direct RTP streams between each other (1),
|
||||
* or should OpenBSC always act as RTP relay/proxy in between (0) ? */
|
||||
|
@ -649,3 +650,36 @@ struct msgb *gsm48_create_loc_upd_rej(uint8_t cause)
|
|||
gh->data[0] = cause;
|
||||
return msg;
|
||||
}
|
||||
|
||||
/* 9.2.5 CM service accept */
|
||||
int gsm48_tx_mm_serv_ack(struct gsm_subscriber_connection *conn)
|
||||
{
|
||||
struct msgb *msg = gsm48_msgb_alloc();
|
||||
struct gsm48_hdr *gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
|
||||
|
||||
msg->lchan = conn->lchan;
|
||||
|
||||
gh->proto_discr = GSM48_PDISC_MM;
|
||||
gh->msg_type = GSM48_MT_MM_CM_SERV_ACC;
|
||||
|
||||
DEBUGP(DMM, "-> CM SERVICE ACK\n");
|
||||
|
||||
return gsm0808_submit_dtap(conn, msg, 0, 0);
|
||||
}
|
||||
|
||||
/* 9.2.6 CM service reject */
|
||||
int gsm48_tx_mm_serv_rej(struct gsm_subscriber_connection *conn,
|
||||
enum gsm48_reject_value value)
|
||||
{
|
||||
struct msgb *msg;
|
||||
|
||||
msg = gsm48_create_mm_serv_rej(value);
|
||||
if (!msg) {
|
||||
LOGP(DMM, LOGL_ERROR, "Failed to allocate CM Service Reject.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
DEBUGP(DMM, "-> CM SERVICE Reject cause: %d\n", value);
|
||||
|
||||
return gsm0808_submit_dtap(conn, msg, 0, 0);
|
||||
}
|
||||
|
|
|
@ -804,29 +804,6 @@ int gsm48_tx_mm_auth_rej(struct gsm_subscriber_connection *conn)
|
|||
return gsm48_tx_simple(conn, GSM48_PDISC_MM, GSM48_MT_MM_AUTH_REJ);
|
||||
}
|
||||
|
||||
static int gsm48_tx_mm_serv_ack(struct gsm_subscriber_connection *conn)
|
||||
{
|
||||
DEBUGP(DMM, "-> CM SERVICE ACK\n");
|
||||
return gsm48_tx_simple(conn, GSM48_PDISC_MM, GSM48_MT_MM_CM_SERV_ACC);
|
||||
}
|
||||
|
||||
/* 9.2.6 CM service reject */
|
||||
static int gsm48_tx_mm_serv_rej(struct gsm_subscriber_connection *conn,
|
||||
enum gsm48_reject_value value)
|
||||
{
|
||||
struct msgb *msg;
|
||||
|
||||
msg = gsm48_create_mm_serv_rej(value);
|
||||
if (!msg) {
|
||||
LOGP(DMM, LOGL_ERROR, "Failed to allocate CM Service Reject.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
DEBUGP(DMM, "-> CM SERVICE Reject cause: %d\n", value);
|
||||
msg->lchan = conn->lchan;
|
||||
return gsm48_conn_sendmsg(msg, conn, NULL);
|
||||
}
|
||||
|
||||
static int _gsm48_rx_mm_serv_req_sec_cb(
|
||||
unsigned int hooknum, unsigned int event,
|
||||
struct msgb *msg, void *data, void *param)
|
||||
|
|
Loading…
Reference in New Issue