From 4ba947bf4b80b553a3411ec1fd29c45430bd6c40 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 5 Apr 2015 18:07:45 +0200 Subject: filter: Separate SCCP/BSSAP extraction and gsm48 code For the BSC we will have the gsm48_hdr and don't need to find data within SCCP. For legacy reasons we need to initialize con_type, imsi, reject causes early on and need to do the same in the filter method. --- openbsc/include/openbsc/bsc_msg_filter.h | 11 +++++++---- openbsc/include/openbsc/bsc_nat.h | 8 ++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'openbsc/include/openbsc') diff --git a/openbsc/include/openbsc/bsc_msg_filter.h b/openbsc/include/openbsc/bsc_msg_filter.h index 7e66517de..a974195c8 100644 --- a/openbsc/include/openbsc/bsc_msg_filter.h +++ b/openbsc/include/openbsc/bsc_msg_filter.h @@ -8,6 +8,7 @@ #include struct vty; +struct gsm48_hdr; /* TODO: remove */ struct bsc_nat_parsed; @@ -64,11 +65,13 @@ int bsc_filter_barr_find(struct rb_root *root, const char *imsi, int *cm, int *l /** * Content filtering. */ -int bsc_nat_filter_sccp_cr(struct bsc_connection *bsc, struct msgb *msg, - struct bsc_nat_parsed *, int *con_type, char **imsi, +int bsc_msg_filter_initial(struct gsm48_hdr *hdr, size_t size, + struct bsc_connection *bsc, + int *con_type, char **imsi, struct bsc_filter_reject_cause *cause); -int bsc_nat_filter_dt(struct bsc_connection *bsc, struct msgb *msg, - struct nat_sccp_connection *con, struct bsc_nat_parsed *parsed, +int bsc_msg_filter_data(struct gsm48_hdr *hdr, size_t size, + struct bsc_connection *bsc, + struct nat_sccp_connection *con, struct bsc_filter_reject_cause *cause); /* IMSI allow/deny handling */ diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h index b9f1e56f8..10f11a62b 100644 --- a/openbsc/include/openbsc/bsc_nat.h +++ b/openbsc/include/openbsc/bsc_nat.h @@ -22,6 +22,7 @@ #define BSC_NAT_H #include "mgcp.h" +#include "bsc_msg_filter.h" #include @@ -435,6 +436,13 @@ int bsc_nat_handle_ctrlif_msg(struct bsc_connection *bsc, struct msgb *msg); int bsc_nat_extract_lac(struct bsc_connection *bsc, struct nat_sccp_connection *con, struct bsc_nat_parsed *parsed, struct msgb *msg); +int bsc_nat_filter_sccp_cr(struct bsc_connection *bsc, struct msgb *msg, + struct bsc_nat_parsed *, int *con_type, char **imsi, + struct bsc_filter_reject_cause *cause); +int bsc_nat_filter_dt(struct bsc_connection *bsc, struct msgb *msg, + struct nat_sccp_connection *con, struct bsc_nat_parsed *parsed, + struct bsc_filter_reject_cause *cause); + /** * CTRL interface helper */ -- cgit v1.2.3