diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-06-08 15:52:07 +0200 |
---|---|---|
committer | Daniel Willmann <daniel@totalueberwachung.de> | 2011-11-04 12:27:08 +0100 |
commit | 6af048618fa9c311e0bd18593ab8915b0a4f8449 (patch) | |
tree | 73568d16eee777d6b0c85f70fb44d0fbe71dc847 /openbsc/src | |
parent | 1ce7a82fe1bd2a65c7207f1a23fda11bab86a83d (diff) |
bsc: Hand the msc_connection to the UDT handling, pass it to paging
Pass the osmo_msc_data to the paging sub system, change the code
to pass the osmo_msc_data instead of network + bsc_msc_conn.
Diffstat (limited to 'openbsc/src')
-rw-r--r-- | openbsc/src/osmo-bsc/osmo_bsc_bssap.c | 21 | ||||
-rw-r--r-- | openbsc/src/osmo-bsc/osmo_bsc_sccp.c | 2 |
2 files changed, 11 insertions, 12 deletions
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_bssap.c b/openbsc/src/osmo-bsc/osmo_bsc_bssap.c index 25a99d737..b2c3aa194 100644 --- a/openbsc/src/osmo-bsc/osmo_bsc_bssap.c +++ b/openbsc/src/osmo-bsc/osmo_bsc_bssap.c @@ -98,7 +98,7 @@ enum gsm48_chan_mode gsm88_to_chan_mode(enum gsm0808_permitted_speech speech) return GSM48_CMODE_SPEECH_AMR; } -static int bssmap_handle_reset_ack(struct gsm_network *net, +static int bssmap_handle_reset_ack(struct osmo_msc_data *msc, struct msgb *msg, unsigned int length) { LOGP(DMSC, LOGL_NOTICE, "Reset ACK from MSC\n"); @@ -106,7 +106,7 @@ static int bssmap_handle_reset_ack(struct gsm_network *net, } /* GSM 08.08 ยง 3.2.1.19 */ -static int bssmap_handle_paging(struct gsm_network *net, +static int bssmap_handle_paging(struct osmo_msc_data *msc, struct msgb *msg, unsigned int payload_length) { struct gsm_subscriber *subscr; @@ -169,7 +169,7 @@ static int bssmap_handle_paging(struct gsm_network *net, LOGP(DMSC, LOGL_ERROR, "eMLPP is not handled\n"); } - subscr = subscr_get_or_create(net, mi_string); + subscr = subscr_get_or_create(msc->network, mi_string); if (!subscr) { LOGP(DMSC, LOGL_ERROR, "Failed to allocate a subscriber for %s\n", mi_string); return -1; @@ -179,7 +179,7 @@ static int bssmap_handle_paging(struct gsm_network *net, subscr->tmsi = tmsi; LOGP(DMSC, LOGL_INFO, "Paging request from MSC IMSI: '%s' TMSI: '0x%x/%u' LAC: 0x%x\n", mi_string, tmsi, tmsi, lac); - paging_request(net, subscr, chan_needed, NULL, NULL); + paging_request(msc->network, subscr, chan_needed, NULL, msc); return 0; } @@ -404,7 +404,7 @@ reject: return -1; } -static int bssmap_rcvmsg_udt(struct gsm_network *net, +static int bssmap_rcvmsg_udt(struct osmo_msc_data *msc, struct msgb *msg, unsigned int length) { int ret = 0; @@ -419,11 +419,11 @@ static int bssmap_rcvmsg_udt(struct gsm_network *net, switch (msg->l4h[0]) { case BSS_MAP_MSG_RESET_ACKNOWLEDGE: - ret = bssmap_handle_reset_ack(net, msg, length); + ret = bssmap_handle_reset_ack(msc, msg, length); break; case BSS_MAP_MSG_PAGING: - if (bsc_grace_allow_new_connection(net)) - ret = bssmap_handle_paging(net, msg, length); + if (bsc_grace_allow_new_connection(msc->network)) + ret = bssmap_handle_paging(msc, msg, length); break; } @@ -508,8 +508,7 @@ static int dtap_rcvmsg(struct osmo_bsc_sccp_con *conn, return gsm0808_submit_dtap(conn->conn, gsm48, header->link_id, 1); } -int bsc_handle_udt(struct gsm_network *network, - struct bsc_msc_connection *conn, +int bsc_handle_udt(struct osmo_msc_data *msc, struct msgb *msgb, unsigned int length) { struct bssmap_header *bs; @@ -529,7 +528,7 @@ int bsc_handle_udt(struct gsm_network *network, switch (bs->type) { case BSSAP_MSG_BSS_MANAGEMENT: msgb->l4h = &msgb->l3h[sizeof(*bs)]; - bssmap_rcvmsg_udt(network, msgb, length - sizeof(*bs)); + bssmap_rcvmsg_udt(msc, msgb, length - sizeof(*bs)); break; default: LOGP(DMSC, LOGL_NOTICE, "Unimplemented msg type: %s\n", diff --git a/openbsc/src/osmo-bsc/osmo_bsc_sccp.c b/openbsc/src/osmo-bsc/osmo_bsc_sccp.c index 6d1127ac3..d25275271 100644 --- a/openbsc/src/osmo-bsc/osmo_bsc_sccp.c +++ b/openbsc/src/osmo-bsc/osmo_bsc_sccp.c @@ -161,7 +161,7 @@ static int msc_sccp_accept(struct sccp_connection *connection, void *data) static int msc_sccp_read(struct msgb *msgb, unsigned int length, void *data) { struct osmo_msc_data *msc = (struct osmo_msc_data *) msgb->cb[0]; - return bsc_handle_udt(msc->network, msc->msc_con, msgb, length); + return bsc_handle_udt(msc, msgb, length); } int bsc_queue_for_msc(struct osmo_bsc_sccp_con *conn, struct msgb *msg) |