filter: More renaming and remove of "NAT" from it
This commit is contained in:
parent
14b2cd9f32
commit
c36a6d5705
|
@ -14,12 +14,12 @@ struct bsc_nat_parsed;
|
|||
struct bsc_connection;
|
||||
struct nat_sccp_connection;
|
||||
|
||||
struct bsc_nat_reject_cause {
|
||||
struct bsc_filter_reject_cause {
|
||||
int lu_reject_cause;
|
||||
int cm_reject_cause;
|
||||
};
|
||||
|
||||
struct bsc_nat_barr_entry {
|
||||
struct bsc_filter_barr_entry {
|
||||
struct rb_node node;
|
||||
|
||||
char *imsi;
|
||||
|
@ -27,7 +27,7 @@ struct bsc_nat_barr_entry {
|
|||
int lu_reject_cause;
|
||||
};
|
||||
|
||||
enum bsc_nat_acc_ctr {
|
||||
enum bsc_filter_acc_ctr {
|
||||
ACC_LIST_LOCAL_FILTER,
|
||||
ACC_LIST_GLOBAL_FILTER,
|
||||
};
|
||||
|
@ -58,18 +58,18 @@ struct bsc_msg_acc_lst_entry {
|
|||
};
|
||||
|
||||
|
||||
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);
|
||||
int bsc_filter_barr_adapt(void *ctx, struct rb_root *rbtree, const struct osmo_config_list *);
|
||||
int bsc_filter_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);
|
||||
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_nat_reject_cause *cause);
|
||||
struct bsc_filter_reject_cause *cause);
|
||||
|
||||
/* IMSI allow/deny handling */
|
||||
struct bsc_msg_acc_lst *bsc_msg_acc_lst_find(struct llist_head *lst, const char *name);
|
||||
|
|
|
@ -38,10 +38,10 @@
|
|||
|
||||
#include <osmocom/sccp/sccp.h>
|
||||
|
||||
int bsc_nat_barr_find(struct rb_root *root, const char *imsi, int *cm, int *lu)
|
||||
int bsc_filter_barr_find(struct rb_root *root, const char *imsi, int *cm, int *lu)
|
||||
{
|
||||
struct bsc_nat_barr_entry *n;
|
||||
n = rb_entry(root->rb_node, struct bsc_nat_barr_entry, node);
|
||||
struct bsc_filter_barr_entry *n;
|
||||
n = rb_entry(root->rb_node, struct bsc_filter_barr_entry, node);
|
||||
|
||||
while (n) {
|
||||
int rc = strcmp(imsi, n->imsi);
|
||||
|
@ -53,20 +53,20 @@ int bsc_nat_barr_find(struct rb_root *root, const char *imsi, int *cm, int *lu)
|
|||
|
||||
n = rb_entry(
|
||||
(rc < 0) ? n->node.rb_left : n->node.rb_right,
|
||||
struct bsc_nat_barr_entry, node);
|
||||
struct bsc_filter_barr_entry, node);
|
||||
};
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int insert_barr_node(struct bsc_nat_barr_entry *entry, struct rb_root *root)
|
||||
static int insert_barr_node(struct bsc_filter_barr_entry *entry, struct rb_root *root)
|
||||
{
|
||||
struct rb_node **new = &root->rb_node, *parent = NULL;
|
||||
|
||||
while (*new) {
|
||||
int rc;
|
||||
struct bsc_nat_barr_entry *this;
|
||||
this = rb_entry(*new, struct bsc_nat_barr_entry, node);
|
||||
struct bsc_filter_barr_entry *this;
|
||||
this = rb_entry(*new, struct bsc_filter_barr_entry, node);
|
||||
parent = *new;
|
||||
|
||||
rc = strcmp(entry->imsi, this->imsi);
|
||||
|
@ -87,7 +87,7 @@ static int insert_barr_node(struct bsc_nat_barr_entry *entry, struct rb_root *ro
|
|||
return 0;
|
||||
}
|
||||
|
||||
int bsc_nat_barr_adapt(void *ctx, struct rb_root *root,
|
||||
int bsc_filter_barr_adapt(void *ctx, struct rb_root *root,
|
||||
const struct osmo_config_list *list)
|
||||
{
|
||||
struct osmo_config_entry *cfg_entry;
|
||||
|
@ -105,8 +105,8 @@ int bsc_nat_barr_adapt(void *ctx, struct rb_root *root,
|
|||
|
||||
/* now adapt the new list */
|
||||
llist_for_each_entry(cfg_entry, &list->entry, list) {
|
||||
struct bsc_nat_barr_entry *entry;
|
||||
entry = talloc_zero(ctx, struct bsc_nat_barr_entry);
|
||||
struct bsc_filter_barr_entry *entry;
|
||||
entry = talloc_zero(ctx, struct bsc_filter_barr_entry);
|
||||
if (!entry) {
|
||||
LOGP(DNAT, LOGL_ERROR,
|
||||
"Allocation of the barr entry failed.\n");
|
||||
|
@ -143,7 +143,7 @@ static int lst_check_deny(struct bsc_msg_acc_lst *lst, const char *mi_string,
|
|||
|
||||
/* apply white/black list */
|
||||
static int auth_imsi(struct bsc_connection *bsc, const char *imsi,
|
||||
struct bsc_nat_reject_cause *cause)
|
||||
struct bsc_filter_reject_cause *cause)
|
||||
{
|
||||
/*
|
||||
* Now apply blacklist/whitelist of the BSC and the NAT.
|
||||
|
@ -158,7 +158,7 @@ static int auth_imsi(struct bsc_connection *bsc, const char *imsi,
|
|||
struct bsc_msg_acc_lst *bsc_lst = NULL;
|
||||
|
||||
/* 1. global check for barred imsis */
|
||||
if (bsc_nat_barr_find(&bsc->nat->imsi_black_list, imsi, &cm, &lu)) {
|
||||
if (bsc_filter_barr_find(&bsc->nat->imsi_black_list, imsi, &cm, &lu)) {
|
||||
cause->cm_reject_cause = cm;
|
||||
cause->lu_reject_cause = lu;
|
||||
LOGP(DNAT, LOGL_DEBUG,
|
||||
|
@ -300,7 +300,7 @@ static int _cr_check_pag_resp(struct bsc_connection *bsc,
|
|||
static int _dt_check_id_resp(struct bsc_connection *bsc,
|
||||
uint8_t *data, unsigned int length,
|
||||
struct nat_sccp_connection *con,
|
||||
struct bsc_nat_reject_cause *cause)
|
||||
struct bsc_filter_reject_cause *cause)
|
||||
{
|
||||
char mi_string[GSM48_MI_SIZE];
|
||||
uint8_t mi_type;
|
||||
|
@ -330,7 +330,7 @@ static int _dt_check_id_resp(struct bsc_connection *bsc,
|
|||
/* Filter out CR data... */
|
||||
int bsc_nat_filter_sccp_cr(struct bsc_connection *bsc, struct msgb *msg,
|
||||
struct bsc_nat_parsed *parsed, int *con_type,
|
||||
char **imsi, struct bsc_nat_reject_cause *cause)
|
||||
char **imsi, struct bsc_filter_reject_cause *cause)
|
||||
{
|
||||
struct tlv_parsed tp;
|
||||
struct gsm48_hdr *hdr48;
|
||||
|
@ -414,7 +414,7 @@ int bsc_nat_filter_sccp_cr(struct bsc_connection *bsc, struct msgb *msg,
|
|||
|
||||
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)
|
||||
struct bsc_filter_reject_cause *cause)
|
||||
{
|
||||
uint32_t len;
|
||||
uint8_t msg_type, proto;
|
||||
|
|
|
@ -426,7 +426,7 @@ static void bsc_stat_reject(int filter, struct bsc_connection *bsc, int normal)
|
|||
*/
|
||||
static void bsc_send_con_release(struct bsc_connection *bsc,
|
||||
struct nat_sccp_connection *con,
|
||||
struct bsc_nat_reject_cause *cause)
|
||||
struct bsc_filter_reject_cause *cause)
|
||||
{
|
||||
struct msgb *rlsd;
|
||||
/* 1. release the network */
|
||||
|
@ -476,7 +476,7 @@ static void bsc_send_con_release(struct bsc_connection *bsc,
|
|||
|
||||
static void bsc_send_con_refuse(struct bsc_connection *bsc,
|
||||
struct bsc_nat_parsed *parsed, int con_type,
|
||||
struct bsc_nat_reject_cause *cause)
|
||||
struct bsc_filter_reject_cause *cause)
|
||||
{
|
||||
struct msgb *payload;
|
||||
struct msgb *refuse;
|
||||
|
@ -1026,7 +1026,7 @@ static int forward_sccp_to_msc(struct bsc_connection *bsc, struct msgb *msg)
|
|||
struct bsc_connection *con_bsc = NULL;
|
||||
int con_type;
|
||||
struct bsc_nat_parsed *parsed;
|
||||
struct bsc_nat_reject_cause cause;
|
||||
struct bsc_filter_reject_cause cause;
|
||||
|
||||
/* Parse and filter messages */
|
||||
parsed = bsc_nat_parse(msg);
|
||||
|
|
|
@ -503,7 +503,7 @@ DEFUN(cfg_nat_imsi_black_list_fn,
|
|||
int rc;
|
||||
struct osmo_config_list *rewr = NULL;
|
||||
rewr = osmo_config_list_parse(_nat, _nat->imsi_black_list_fn);
|
||||
rc = bsc_nat_barr_adapt(_nat, &_nat->imsi_black_list, rewr);
|
||||
rc = bsc_filter_barr_adapt(_nat, &_nat->imsi_black_list, rewr);
|
||||
if (rc != 0) {
|
||||
vty_out(vty, "%%There was an error parsing the list."
|
||||
" Please see the error log.%s", VTY_NEWLINE);
|
||||
|
@ -513,7 +513,7 @@ DEFUN(cfg_nat_imsi_black_list_fn,
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
bsc_nat_barr_adapt(_nat, &_nat->imsi_black_list, NULL);
|
||||
bsc_filter_barr_adapt(_nat, &_nat->imsi_black_list, NULL);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -524,7 +524,7 @@ DEFUN(cfg_nat_no_imsi_black_list_fn,
|
|||
{
|
||||
talloc_free(_nat->imsi_black_list_fn);
|
||||
_nat->imsi_black_list_fn = NULL;
|
||||
bsc_nat_barr_adapt(_nat, &_nat->imsi_black_list, NULL);
|
||||
bsc_filter_barr_adapt(_nat, &_nat->imsi_black_list, NULL);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -862,8 +862,8 @@ DEFUN(show_bar_lst,
|
|||
vty_out(vty, "IMSIs barred from the network:%s", VTY_NEWLINE);
|
||||
|
||||
for (node = rb_first(&_nat->imsi_black_list); node; node = rb_next(node)) {
|
||||
struct bsc_nat_barr_entry *entry;
|
||||
entry = rb_entry(node, struct bsc_nat_barr_entry, node);
|
||||
struct bsc_filter_barr_entry *entry;
|
||||
entry = rb_entry(node, struct bsc_filter_barr_entry, node);
|
||||
|
||||
vty_out(vty, " IMSI(%s) CM-Reject-Cause(%d) LU-Reject-Cause(%d)%s",
|
||||
entry->imsi, entry->cm_reject_cause, entry->lu_reject_cause,
|
||||
|
|
|
@ -870,7 +870,7 @@ static void test_cr_filter()
|
|||
struct bsc_nat_parsed *parsed;
|
||||
struct bsc_msg_acc_lst *nat_lst, *bsc_lst;
|
||||
struct bsc_msg_acc_lst_entry *nat_entry, *bsc_entry;
|
||||
struct bsc_nat_reject_cause cause;
|
||||
struct bsc_filter_reject_cause cause;
|
||||
|
||||
struct bsc_nat *nat = bsc_nat_alloc();
|
||||
struct bsc_connection *bsc = bsc_connection_alloc(nat);
|
||||
|
@ -947,7 +947,7 @@ static void test_dt_filter()
|
|||
int i;
|
||||
struct msgb *msg = msgb_alloc(4096, "test_dt_filter");
|
||||
struct bsc_nat_parsed *parsed;
|
||||
struct bsc_nat_reject_cause cause;
|
||||
struct bsc_filter_reject_cause cause;
|
||||
|
||||
struct bsc_nat *nat = bsc_nat_alloc();
|
||||
struct bsc_connection *bsc = bsc_connection_alloc(nat);
|
||||
|
@ -1454,21 +1454,21 @@ static void test_barr_list_parsing(void)
|
|||
if (lst == NULL)
|
||||
abort();
|
||||
|
||||
rc = bsc_nat_barr_adapt(NULL, &root, lst);
|
||||
rc = bsc_filter_barr_adapt(NULL, &root, lst);
|
||||
if (rc != 0)
|
||||
abort();
|
||||
talloc_free(lst);
|
||||
|
||||
|
||||
for (node = rb_first(&root); node; node = rb_next(node)) {
|
||||
struct bsc_nat_barr_entry *entry;
|
||||
entry = rb_entry(node, struct bsc_nat_barr_entry, node);
|
||||
struct bsc_filter_barr_entry *entry;
|
||||
entry = rb_entry(node, struct bsc_filter_barr_entry, node);
|
||||
printf("IMSI: %s CM: %d LU: %d\n", entry->imsi,
|
||||
entry->cm_reject_cause, entry->lu_reject_cause);
|
||||
}
|
||||
|
||||
/* do the look up now.. */
|
||||
rc = bsc_nat_barr_find(&root, "12123119", &cm, &lu);
|
||||
rc = bsc_filter_barr_find(&root, "12123119", &cm, &lu);
|
||||
if (!rc) {
|
||||
printf("Failed to find the IMSI.\n");
|
||||
abort();
|
||||
|
@ -1480,7 +1480,7 @@ static void test_barr_list_parsing(void)
|
|||
}
|
||||
|
||||
/* empty and check that it is empty */
|
||||
bsc_nat_barr_adapt(NULL, &root, NULL);
|
||||
bsc_filter_barr_adapt(NULL, &root, NULL);
|
||||
if (!RB_EMPTY_ROOT(&root)) {
|
||||
printf("Failed to empty the list.\n");
|
||||
abort();
|
||||
|
@ -1493,7 +1493,7 @@ static void test_barr_list_parsing(void)
|
|||
abort();
|
||||
}
|
||||
|
||||
rc = bsc_nat_barr_adapt(NULL, &root, lst);
|
||||
rc = bsc_filter_barr_adapt(NULL, &root, lst);
|
||||
if (rc != -1) {
|
||||
printf("It should have failed due dup\n");
|
||||
abort();
|
||||
|
@ -1502,13 +1502,13 @@ static void test_barr_list_parsing(void)
|
|||
|
||||
/* dump for reference */
|
||||
for (node = rb_first(&root); node; node = rb_next(node)) {
|
||||
struct bsc_nat_barr_entry *entry;
|
||||
entry = rb_entry(node, struct bsc_nat_barr_entry, node);
|
||||
struct bsc_filter_barr_entry *entry;
|
||||
entry = rb_entry(node, struct bsc_filter_barr_entry, node);
|
||||
printf("IMSI: %s CM: %d LU: %d\n", entry->imsi,
|
||||
entry->cm_reject_cause, entry->lu_reject_cause);
|
||||
|
||||
}
|
||||
rc = bsc_nat_barr_adapt(NULL, &root, NULL);
|
||||
rc = bsc_filter_barr_adapt(NULL, &root, NULL);
|
||||
}
|
||||
|
||||
static void test_nat_extract_lac()
|
||||
|
|
Loading…
Reference in New Issue