aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openbsc/include/openbsc/bsc_nat.h4
-rw-r--r--openbsc/src/nat/bsc_nat.c4
-rw-r--r--openbsc/src/nat/bsc_nat_utils.c4
-rw-r--r--openbsc/src/nat/bsc_nat_vty.c11
-rw-r--r--openbsc/tests/bsc-nat/bsc_nat_test.c6
5 files changed, 18 insertions, 11 deletions
diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h
index 6cf20f2d0..ff0f907c5 100644
--- a/openbsc/include/openbsc/bsc_nat.h
+++ b/openbsc/include/openbsc/bsc_nat.h
@@ -84,8 +84,8 @@ struct bsc_connection {
/* the fd we use to communicate */
struct write_queue write_queue;
- /* the LAC assigned to this connection */
- unsigned int lac;
+ /* the BSS associated */
+ struct bsc_config *cfg;
/* a timeout node */
struct timer_list id_timeout;
diff --git a/openbsc/src/nat/bsc_nat.c b/openbsc/src/nat/bsc_nat.c
index 1f6b57814..2ff06d750 100644
--- a/openbsc/src/nat/bsc_nat.c
+++ b/openbsc/src/nat/bsc_nat.c
@@ -377,9 +377,9 @@ static void ipaccess_auth_bsc(struct tlv_parsed *tvp, struct bsc_connection *bsc
llist_for_each_entry(conf, &bsc->nat->bsc_configs, entry) {
if (strcmp(conf->token, token) == 0) {
bsc->authenticated = 1;
- bsc->lac = conf->lac;
+ bsc->cfg = conf;
bsc_del_timer(&bsc->id_timeout);
- LOGP(DNAT, LOGL_NOTICE, "Authenticated bsc %d\n", bsc->lac);
+ LOGP(DNAT, LOGL_NOTICE, "Authenticated bsc nr: %d lac: %d\n", conf->nr, conf->lac);
break;
}
}
diff --git a/openbsc/src/nat/bsc_nat_utils.c b/openbsc/src/nat/bsc_nat_utils.c
index 81d4de91e..eddcaff60 100644
--- a/openbsc/src/nat/bsc_nat_utils.c
+++ b/openbsc/src/nat/bsc_nat_utils.c
@@ -115,7 +115,9 @@ struct bsc_connection *bsc_nat_find_bsc(struct bsc_nat *nat, struct msgb *msg)
for (i = 1; i < data_length - 1; i += 2) {
unsigned int _lac = ntohs(*(unsigned int *) &data[i]);
llist_for_each_entry(bsc, &nat->bsc_connections, list_entry) {
- if (!bsc->authenticated || _lac != bsc->lac)
+ if (!bsc->cfg)
+ continue;
+ if (!bsc->authenticated || _lac != bsc->cfg->lac)
continue;
return bsc;
diff --git a/openbsc/src/nat/bsc_nat_vty.c b/openbsc/src/nat/bsc_nat_vty.c
index d5f83ebdd..4c60a19f7 100644
--- a/openbsc/src/nat/bsc_nat_vty.c
+++ b/openbsc/src/nat/bsc_nat_vty.c
@@ -76,8 +76,9 @@ DEFUN(show_sccp, show_sccp_cmd, "show connections sccp",
{
struct sccp_connections *con;
llist_for_each_entry(con, &_nat->sccp_connections, list_entry) {
- vty_out(vty, "SCCP for BSC: %d BSC ref: 0x%x Local ref: 0x%x MSC/BSC mux: 0x%x/0x%x%s",
- con->bsc->lac,
+ vty_out(vty, "SCCP for BSC: Nr: %d lac: %d BSC ref: 0x%x Local ref: 0x%x MSC/BSC mux: 0x%x/0x%x%s",
+ con->bsc->cfg ? con->bsc->cfg->nr : -1,
+ con->bsc->cfg ? con->bsc->cfg->lac : -1,
sccp_src_ref_to_int(&con->real_ref),
sccp_src_ref_to_int(&con->patched_ref),
con->msc_timeslot, con->bsc_timeslot,
@@ -92,8 +93,10 @@ DEFUN(show_bsc, show_bsc_cmd, "show connections bsc",
{
struct bsc_connection *con;
llist_for_each_entry(con, &_nat->bsc_connections, list_entry) {
- vty_out(vty, "BSC lac: %d auth: %d fd: %d%s",
- con->lac, con->authenticated, con->write_queue.bfd.fd, VTY_NEWLINE);
+ vty_out(vty, "BSC lac: %d, %d auth: %d fd: %d%s",
+ con->cfg ? con->cfg->nr : -1,
+ con->cfg ? con->cfg->lac : -1,
+ con->authenticated, con->write_queue.bfd.fd, VTY_NEWLINE);
}
return CMD_SUCCESS;
diff --git a/openbsc/tests/bsc-nat/bsc_nat_test.c b/openbsc/tests/bsc-nat/bsc_nat_test.c
index 593963291..40e2475ba 100644
--- a/openbsc/tests/bsc-nat/bsc_nat_test.c
+++ b/openbsc/tests/bsc-nat/bsc_nat_test.c
@@ -332,13 +332,15 @@ static void test_paging(void)
struct bsc_nat *nat;
struct bsc_connection *con;
struct bsc_nat_parsed *parsed;
+ struct bsc_config cfg;
struct msgb *msg;
fprintf(stderr, "Testing paging by lac.\n");
nat = bsc_nat_alloc();
con = bsc_connection_alloc(nat);
- con->lac = 23;
+ con->cfg = &cfg;
+ cfg.lac = 23;
con->authenticated = 1;
llist_add(&con->list_entry, &nat->bsc_connections);
msg = msgb_alloc(4096, "test");
@@ -360,7 +362,7 @@ static void test_paging(void)
talloc_free(parsed);
/* Test by finding it */
- con->lac = 8213;
+ cfg.lac = 8213;
copy_to_msg(msg, paging_by_lac_cmd, sizeof(paging_by_lac_cmd));
parsed = bsc_nat_parse(msg);
if (bsc_nat_find_bsc(nat, msg) != con) {