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
|
||||
return gsm48_tx_gmm_att_rej(msg, GMM_CAUSE_IMSI_UNKNOWN);
|
||||
#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);
|
||||
if (!ctx)
|
||||
return gsm48_tx_gmm_att_rej_oldmsg(msg, GMM_CAUSE_NET_FAIL);
|
||||
|
|
Loading…
Reference in New Issue