aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/nat
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-04-06 15:11:34 +0200
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-06-15 20:24:12 +0800
commit47dd4944ae36d7c1fa91187d355512d99d4bd137 (patch)
tree93179919c6ec8bab78f9997aed831d1e433bff0a /openbsc/src/nat
parenta7c377d593b88cd6ac91e59d2d75c6d873282590 (diff)
nat: Store the config in the connection instead of the lac
This allows that we can print the Nr. next to the lac and it allows us to change the lac at runtime without reconnecting the BSC.
Diffstat (limited to 'openbsc/src/nat')
-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
3 files changed, 12 insertions, 7 deletions
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;