aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/include/openbsc/bsc_nat.h
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/include/openbsc/bsc_nat.h')
-rw-r--r--openbsc/include/openbsc/bsc_nat.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h
index b6d040433..acecba7de 100644
--- a/openbsc/include/openbsc/bsc_nat.h
+++ b/openbsc/include/openbsc/bsc_nat.h
@@ -43,12 +43,14 @@ struct sccp_source_reference;
struct sccp_connections;
struct bsc_nat_parsed;
struct bsc_nat;
+struct bsc_nat_ussd_con;
enum {
NAT_CON_TYPE_NONE,
NAT_CON_TYPE_LU,
NAT_CON_TYPE_CM_SERV_REQ,
NAT_CON_TYPE_PAG_RESP,
+ NAT_CON_TYPE_SSA,
NAT_CON_TYPE_LOCAL_REJECT,
NAT_CON_TYPE_OTHER,
};
@@ -102,6 +104,7 @@ enum bsc_cfg_ctr {
BCFG_CTR_CON_TYPE_LU,
BCFG_CTR_CON_CMSERV_RQ,
BCFG_CTR_CON_PAG_RESP,
+ BCFG_CTR_CON_SSA,
BCFG_CTR_CON_OTHER,
};
@@ -163,6 +166,10 @@ struct bsc_nat_statistics {
struct {
struct counter *reconn;
} msc;
+
+ struct {
+ struct counter *reconn;
+ } ussd;
};
enum bsc_nat_acc_ctr {
@@ -230,6 +237,14 @@ struct bsc_nat {
/* filter */
char *acc_lst_name;
+ /* USSD messages we want to match */
+ char *ussd_lst_name;
+ char *ussd_query;
+ char *ussd_token;
+ char *ussd_local;
+ struct bsc_fd ussd_listen;
+ struct bsc_nat_ussd_con *ussd_con;
+
/* statistics */
struct bsc_nat_statistics stats;
};
@@ -311,6 +326,7 @@ struct bsc_nat_acc_lst *bsc_nat_acc_lst_get(struct bsc_nat *nat, const char *nam
void bsc_nat_acc_lst_delete(struct bsc_nat_acc_lst *lst);
struct bsc_nat_acc_lst_entry *bsc_nat_acc_lst_entry_create(struct bsc_nat_acc_lst *);
+int bsc_nat_lst_check_allow(struct bsc_nat_acc_lst *lst, const char *imsi);
int bsc_nat_msc_is_connected(struct bsc_nat *nat);
@@ -318,4 +334,8 @@ int bsc_conn_type_to_ctr(struct sccp_connections *conn);
struct gsm48_hdr *bsc_unpack_dtap(struct bsc_nat_parsed *parsed, struct msgb *msg, uint32_t *len);
+/** USSD filtering */
+int bsc_ussd_init(struct bsc_nat *nat);
+int bsc_check_ussd(struct sccp_connections *con, struct bsc_nat_parsed *parsed, struct msgb *msg);
+
#endif