aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/osmo-bsc/osmo_bsc_ctrl.c')
-rw-r--r--openbsc/src/osmo-bsc/osmo_bsc_ctrl.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
index fd6afee78..1d0e2aa01 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
@@ -214,6 +214,14 @@ static void generate_location_state_trap(struct gsm_bts *bts, struct bsc_msc_con
talloc_free(cmd);
}
+void bsc_gen_location_state_trap(struct gsm_bts *bts)
+{
+ struct osmo_msc_data *msc;
+
+ llist_for_each_entry(msc, &bts->network->bsc_data->mscs, entry)
+ generate_location_state_trap(bts, msc->msc_con);
+}
+
static int location_equal(struct bts_location *a, struct bts_location *b)
{
return ((a->tstamp == b->tstamp) && (a->valid == b->valid) && (a->lat == b->lat) &&
@@ -279,10 +287,8 @@ static int get_bts_loc(struct ctrl_cmd *cmd, void *data)
static int set_bts_loc(struct ctrl_cmd *cmd, void *data)
{
char *saveptr, *lat, *lon, *height, *tstamp, *valid, *tmp;
- struct osmo_msc_data *msc;
struct bts_location *curloc, *lastloc;
int ret;
- struct gsm_network *gsmnet = (struct gsm_network *)data;
struct gsm_bts *bts = (struct gsm_bts *) cmd->node;
if (!bts) {
cmd->reply = "bts not found.";
@@ -322,8 +328,7 @@ static int set_bts_loc(struct ctrl_cmd *cmd, void *data)
ret = get_bts_loc(cmd, data);
if (!location_equal(curloc, lastloc))
- llist_for_each_entry(msc, &gsmnet->bsc_data->mscs, entry)
- generate_location_state_trap(bts, msc->msc_con);
+ bsc_gen_location_state_trap(bts);
cleanup_locations(&bts->loc_list);