filter: Move the method definition to the filter module
Move the filter methods to the filter module. This is still only usable for the NAT and the _dt/_cr filter routines need to move back to the bsc_nat in the long run.
This commit is contained in:
parent
4247cead2b
commit
973dbaeebd
|
@ -16,7 +16,7 @@ noinst_HEADERS = abis_nm.h abis_rsl.h db.h gsm_04_08.h gsm_data.h \
|
|||
arfcn_range_encode.h nat_rewrite_trie.h bsc_nat_callstats.h \
|
||||
osmux.h mgcp_transcode.h gprs_utils.h \
|
||||
gprs_gb_parse.h smpp.h meas_feed.h gprs_gsup_messages.h \
|
||||
gprs_gsup_client.h
|
||||
gprs_gsup_client.h bsc_msg_filter.h
|
||||
|
||||
openbsc_HEADERS = gsm_04_08.h meas_rep.h bsc_api.h
|
||||
openbscdir = $(includedir)/openbsc
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
#pragma once
|
||||
|
||||
#include <osmocom/core/msgb.h>
|
||||
#include <osmocom/core/msgfile.h>
|
||||
#include <osmocom/core/linuxrbtree.h>
|
||||
#include <osmocom/core/linuxlist.h>
|
||||
|
||||
#include <regex.h>
|
||||
|
||||
/* TODO: remove */
|
||||
struct bsc_nat_parsed;
|
||||
struct bsc_connection;
|
||||
struct nat_sccp_connection;
|
||||
|
||||
struct bsc_nat_reject_cause {
|
||||
int lu_reject_cause;
|
||||
int cm_reject_cause;
|
||||
};
|
||||
|
||||
struct bsc_nat_barr_entry {
|
||||
struct rb_node node;
|
||||
|
||||
char *imsi;
|
||||
int cm_reject_cause;
|
||||
int lu_reject_cause;
|
||||
};
|
||||
|
||||
enum bsc_nat_acc_ctr {
|
||||
ACC_LIST_BSC_FILTER,
|
||||
ACC_LIST_NAT_FILTER,
|
||||
};
|
||||
|
||||
struct bsc_nat_acc_lst {
|
||||
struct llist_head list;
|
||||
|
||||
/* counter */
|
||||
struct rate_ctr_group *stats;
|
||||
|
||||
/* the name of the list */
|
||||
const char *name;
|
||||
struct llist_head fltr_list;
|
||||
};
|
||||
|
||||
struct bsc_nat_acc_lst_entry {
|
||||
struct llist_head list;
|
||||
|
||||
/* the filter */
|
||||
char *imsi_allow;
|
||||
regex_t imsi_allow_re;
|
||||
char *imsi_deny;
|
||||
regex_t imsi_deny_re;
|
||||
|
||||
/* reject reasons for the access lists */
|
||||
int cm_reject_cause;
|
||||
int lu_reject_cause;
|
||||
};
|
||||
|
||||
|
||||
int bsc_nat_barr_adapt(void *ctx, struct rb_root *rbtree, const struct osmo_config_list *);
|
||||
int bsc_nat_barr_find(struct rb_root *root, const char *imsi, int *cm, int *lu);
|
||||
|
||||
/**
|
||||
* Content filtering.
|
||||
*/
|
||||
int bsc_nat_filter_sccp_cr(struct bsc_connection *bsc, struct msgb *msg,
|
||||
struct bsc_nat_parsed *, int *con_type, char **imsi,
|
||||
struct bsc_nat_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_nat_reject_cause *cause);
|
||||
|
|
@ -229,36 +229,6 @@ struct bsc_nat_statistics {
|
|||
} ussd;
|
||||
};
|
||||
|
||||
enum bsc_nat_acc_ctr {
|
||||
ACC_LIST_BSC_FILTER,
|
||||
ACC_LIST_NAT_FILTER,
|
||||
};
|
||||
|
||||
struct bsc_nat_acc_lst {
|
||||
struct llist_head list;
|
||||
|
||||
/* counter */
|
||||
struct rate_ctr_group *stats;
|
||||
|
||||
/* the name of the list */
|
||||
const char *name;
|
||||
struct llist_head fltr_list;
|
||||
};
|
||||
|
||||
struct bsc_nat_acc_lst_entry {
|
||||
struct llist_head list;
|
||||
|
||||
/* the filter */
|
||||
char *imsi_allow;
|
||||
regex_t imsi_allow_re;
|
||||
char *imsi_deny;
|
||||
regex_t imsi_deny_re;
|
||||
|
||||
/* reject reasons for the access lists */
|
||||
int cm_reject_cause;
|
||||
int lu_reject_cause;
|
||||
};
|
||||
|
||||
/**
|
||||
* the structure of the "nat" network
|
||||
*/
|
||||
|
@ -355,11 +325,6 @@ struct bsc_nat_ussd_con {
|
|||
struct osmo_timer_list auth_timeout;
|
||||
};
|
||||
|
||||
struct bsc_nat_reject_cause {
|
||||
int lu_reject_cause;
|
||||
int cm_reject_cause;
|
||||
};
|
||||
|
||||
/* create and init the structures */
|
||||
struct bsc_config *bsc_config_alloc(struct bsc_nat *nat, const char *token);
|
||||
struct bsc_config *bsc_config_num(struct bsc_nat *nat, int num);
|
||||
|
@ -389,16 +354,6 @@ int bsc_nat_filter_ipa(int direction, struct msgb *msg, struct bsc_nat_parsed *p
|
|||
int bsc_nat_vty_init(struct bsc_nat *nat);
|
||||
int bsc_nat_find_paging(struct msgb *msg, const uint8_t **,int *len);
|
||||
|
||||
/**
|
||||
* Content filtering.
|
||||
*/
|
||||
int bsc_nat_filter_sccp_cr(struct bsc_connection *bsc, struct msgb *msg,
|
||||
struct bsc_nat_parsed *, int *con_type, char **imsi,
|
||||
struct bsc_nat_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_nat_reject_cause *cause);
|
||||
|
||||
/**
|
||||
* SCCP patching and handling
|
||||
*/
|
||||
|
@ -478,17 +433,6 @@ struct bsc_nat_num_rewr_entry {
|
|||
|
||||
void bsc_nat_num_rewr_entry_adapt(void *ctx, struct llist_head *head, const struct osmo_config_list *);
|
||||
|
||||
struct bsc_nat_barr_entry {
|
||||
struct rb_node node;
|
||||
|
||||
char *imsi;
|
||||
int cm_reject_cause;
|
||||
int lu_reject_cause;
|
||||
};
|
||||
|
||||
int bsc_nat_barr_adapt(void *ctx, struct rb_root *rbtree, const struct osmo_config_list *);
|
||||
int bsc_nat_barr_find(struct rb_root *root, const char *imsi, int *cm, int *lu);
|
||||
|
||||
void bsc_nat_send_mgcp_to_msc(struct bsc_nat *bsc_nat, struct msgb *msg);
|
||||
void bsc_nat_handle_mgcp(struct bsc_nat *bsc, struct msgb *msg);
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Access filtering
|
||||
*/
|
||||
/*
|
||||
* (C) 2010-2012 by Holger Hans Peter Freyther <zecke@selfish.org>
|
||||
* (C) 2010-2015 by Holger Hans Peter Freyther <zecke@selfish.org>
|
||||
* (C) 2010-2012 by On-Waves
|
||||
* All Rights Reserved
|
||||
*
|
||||
|
@ -21,6 +21,8 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <openbsc/bsc_msg_filter.h>
|
||||
|
||||
#include <openbsc/bsc_nat.h>
|
||||
#include <openbsc/bsc_nat_sccp.h>
|
||||
#include <openbsc/bsc_msc.h>
|
||||
|
@ -28,7 +30,6 @@
|
|||
#include <openbsc/debug.h>
|
||||
#include <openbsc/ipaccess.h>
|
||||
|
||||
#include <osmocom/core/linuxlist.h>
|
||||
#include <osmocom/core/talloc.h>
|
||||
#include <osmocom/gsm/gsm0808.h>
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include <openbsc/bsc_msc.h>
|
||||
#include <openbsc/bsc_nat.h>
|
||||
#include <openbsc/bsc_nat_sccp.h>
|
||||
#include <openbsc/bsc_msg_filter.h>
|
||||
#include <openbsc/ipaccess.h>
|
||||
#include <openbsc/abis_nm.h>
|
||||
#include <openbsc/socket.h>
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#include <openbsc/ctrl.h>
|
||||
#include <openbsc/bsc_nat.h>
|
||||
#include <openbsc/bsc_msg_filter.h>
|
||||
#include <openbsc/vty.h>
|
||||
#include <openbsc/gsm_data.h>
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
#include <openbsc/bsc_nat.h>
|
||||
#include <openbsc/bsc_nat_sccp.h>
|
||||
#include <openbsc/bsc_msg_filter.h>
|
||||
#include <openbsc/bsc_msc.h>
|
||||
#include <openbsc/gsm_data.h>
|
||||
#include <openbsc/debug.h>
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <openbsc/gsm_data.h>
|
||||
#include <openbsc/bsc_nat.h>
|
||||
#include <openbsc/bsc_nat_sccp.h>
|
||||
#include <openbsc/bsc_msg_filter.h>
|
||||
#include <openbsc/bsc_msc.h>
|
||||
#include <openbsc/gsm_04_08.h>
|
||||
#include <openbsc/mgcp.h>
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <openbsc/gsm_data.h>
|
||||
#include <openbsc/bsc_nat.h>
|
||||
#include <openbsc/bsc_nat_sccp.h>
|
||||
#include <openbsc/bsc_msg_filter.h>
|
||||
#include <openbsc/nat_rewrite_trie.h>
|
||||
|
||||
#include <osmocom/core/application.h>
|
||||
|
|
Loading…
Reference in New Issue