SGSN / GMM: Only allow non-roaming IMSIs
As we do not yet use the HLR from the SGSN, we allow all MS to attach to our GPRS network. However, if this is running in a public environment, it could cause service interruption to users of commercial GPRS networks. Thus, we now check if the first 5 digits of the IMSI match the MCC/MNC of the cell that they want to register to. Thus, any subscribers with SIM cards from real operators will no longer be accepted.
This commit is contained in:
parent
2cafc4b309
commit
eafe22ca72
|
@ -671,7 +671,16 @@ static int gsm48_rx_gmm_att_req(struct sgsn_mm_ctx *ctx, struct msgb *msg,
|
||||||
#if 0
|
#if 0
|
||||||
return gsm48_tx_gmm_att_rej(msg, GMM_CAUSE_IMSI_UNKNOWN);
|
return gsm48_tx_gmm_att_rej(msg, GMM_CAUSE_IMSI_UNKNOWN);
|
||||||
#else
|
#else
|
||||||
/* As a temorary hack, we simply assume that the IMSI exists */
|
/* As a temorary hack, we simply assume that the IMSI exists,
|
||||||
|
* as long as it is part of 'our' network */
|
||||||
|
char mccmnc[16];
|
||||||
|
snprintf(mccmnc, sizeof(mccmnc), "%03d%02d", ra_id.mcc, ra_id.mnc);
|
||||||
|
if (strncmp(mccmnc, mi_string, 5)) {
|
||||||
|
LOGP(DMM, LOGL_INFO, "Rejecting ATTACH REQUESET IMSI=%s\n",
|
||||||
|
mi_string);
|
||||||
|
return gsm48_tx_gmm_att_rej_oldmsg(msg,
|
||||||
|
GMM_CAUSE_GPRS_NOTALLOWED);
|
||||||
|
}
|
||||||
ctx = sgsn_mm_ctx_alloc(0, &ra_id);
|
ctx = sgsn_mm_ctx_alloc(0, &ra_id);
|
||||||
if (!ctx)
|
if (!ctx)
|
||||||
return gsm48_tx_gmm_att_rej_oldmsg(msg, GMM_CAUSE_NET_FAIL);
|
return gsm48_tx_gmm_att_rej_oldmsg(msg, GMM_CAUSE_NET_FAIL);
|
||||||
|
|
Loading…
Reference in New Issue