nat: Remember if we have check the imsi.

Return -1 if the IMSI should be filtered, 0 if the IMSI could not
be checked and 1 if the IMSI was checked and allowed to pass. In
the future this will be used to inspect every message coming by.
This commit is contained in:
Holger Hans Peter Freyther 2010-09-15 00:41:19 +08:00
parent 3837f99e89
commit 909e61fddc
3 changed files with 5 additions and 3 deletions

View File

@ -78,6 +78,7 @@ struct sccp_connections {
/* status */
int con_type;
int con_local;
int imsi_checked;
/*
* audio handling. Remember if we have ever send a CRCX,

View File

@ -713,7 +713,7 @@ static int forward_sccp_to_msc(struct bsc_connection *bsc, struct msgb *msg)
switch (parsed->sccp_type) {
case SCCP_MSG_TYPE_CR:
filter = bsc_nat_filter_sccp_cr(bsc, msg, parsed, &con_type);
if (filter != 0)
if (filter < 0)
goto exit3;
if (!create_sccp_src_ref(bsc, parsed))
goto exit2;
@ -721,6 +721,7 @@ static int forward_sccp_to_msc(struct bsc_connection *bsc, struct msgb *msg)
con->msc_con = bsc->nat->msc_con;
con_msc = con->msc_con;
con->con_type = con_type;
con->imsi_checked = filter;
con_bsc = con->bsc;
break;
case SCCP_MSG_TYPE_RLSD:

View File

@ -271,7 +271,7 @@ static int auth_imsi(struct bsc_connection *bsc, const char *mi_string)
/* 2. BSC allow */
if (lst_check_allow(bsc_lst, mi_string) == 0)
return 0;
return 1;
}
/* 3. NAT deny */
@ -283,7 +283,7 @@ static int auth_imsi(struct bsc_connection *bsc, const char *mi_string)
}
}
return 0;
return 1;
}
static int _cr_check_loc_upd(struct bsc_connection *bsc, uint8_t *data, unsigned int length)