bsc: Look for location updating requests in messages
Introduce the SCCP connection data and remember that we were seeing a location updating request from a different LAC.
This commit is contained in:
parent
5bb874d2f5
commit
d65305f5b4
|
@ -5,6 +5,10 @@
|
|||
|
||||
#include "bsc_api.h"
|
||||
|
||||
struct osmo_bsc_sccp_con {
|
||||
uint8_t new_subscriber;
|
||||
};
|
||||
|
||||
struct bsc_api *osmo_bsc_api();
|
||||
|
||||
int bsc_queue_for_msc(struct gsm_subscriber_connection *conn, struct msgb *msg);
|
||||
|
|
|
@ -19,6 +19,34 @@
|
|||
*/
|
||||
|
||||
#include <openbsc/osmo_bsc.h>
|
||||
#include <openbsc/debug.h>
|
||||
|
||||
static void handle_lu_request(struct gsm_subscriber_connection *conn,
|
||||
struct msgb *msg)
|
||||
{
|
||||
struct gsm48_hdr *gh;
|
||||
struct gsm48_loc_upd_req *lu;
|
||||
struct gsm48_loc_area_id lai;
|
||||
struct gsm_network *net;
|
||||
|
||||
if (msgb_l3len(msg) < sizeof(*gh) + sizeof(*lu)) {
|
||||
LOGP(DMSC, LOGL_ERROR, "LU too small to look at: %u\n", msgb_l3len(msg));
|
||||
return;
|
||||
}
|
||||
|
||||
net = conn->bts->network;
|
||||
|
||||
gh = msgb_l3(msg);
|
||||
lu = (struct gsm48_loc_upd_req *) gh->data;
|
||||
|
||||
gsm48_generate_lai(&lai, net->country_code, net->network_code,
|
||||
conn->bts->location_area_code);
|
||||
|
||||
if (memcmp(&lai, &lu->lai, sizeof(lai)) != 0) {
|
||||
LOGP(DMSC, LOGL_DEBUG, "Marking con for welcome USSD.\n");
|
||||
conn->sccp_con->new_subscriber = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is used to scan a message for extra functionality of the BSC. This
|
||||
|
@ -27,5 +55,14 @@
|
|||
*/
|
||||
int bsc_scan_bts_msg(struct gsm_subscriber_connection *conn, struct msgb *msg)
|
||||
{
|
||||
struct gsm48_hdr *gh = msgb_l3(msg);
|
||||
uint8_t pdisc = gh->proto_discr & 0x0f;
|
||||
uint8_t mtype = gh->msg_type & 0xbf;
|
||||
|
||||
if (pdisc == GSM48_PDISC_MM) {
|
||||
if (mtype == GSM48_MT_MM_LOC_UPD_REQUEST)
|
||||
handle_lu_request(conn, msg);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue