diff options
Diffstat (limited to 'openbsc/src')
-rw-r--r-- | openbsc/src/gprs/gprs_subscriber.c | 1 | ||||
-rw-r--r-- | openbsc/src/libcommon/gsup_client.c | 16 | ||||
-rw-r--r-- | openbsc/src/libcommon/gsup_test_client.c | 4 |
3 files changed, 16 insertions, 5 deletions
diff --git a/openbsc/src/gprs/gprs_subscriber.c b/openbsc/src/gprs/gprs_subscriber.c index 2042ec6eb..460cc277a 100644 --- a/openbsc/src/gprs/gprs_subscriber.c +++ b/openbsc/src/gprs/gprs_subscriber.c @@ -69,6 +69,7 @@ int gprs_subscr_init(struct sgsn_instance *sgi) addr_str = inet_ntoa(sgi->cfg.gsup_server_addr.sin_addr); sgi->gsup_client = gsup_client_create( + "SGSN", addr_str, sgi->cfg.gsup_server_port, &gsup_read_cb, &sgi->cfg.oap); diff --git a/openbsc/src/libcommon/gsup_client.c b/openbsc/src/libcommon/gsup_client.c index 2e920a6b6..3bceaa72a 100644 --- a/openbsc/src/libcommon/gsup_client.c +++ b/openbsc/src/libcommon/gsup_client.c @@ -173,10 +173,13 @@ static int gsup_client_read_cb(struct ipa_client_conn *link, struct msgb *msg) struct ipaccess_head_ext *he = (struct ipaccess_head_ext *) msgb_l2(msg); struct gsup_client *gsupc = (struct gsup_client *)link->data; int rc; - static struct ipaccess_unit ipa_dev = { - .unit_name = "SGSN" + struct ipaccess_unit ipa_dev = { + /* see gsup_client_create() on const vs non-const */ + .unit_name = (char*)gsupc->unit_name, }; + OSMO_ASSERT(ipa_dev.unit_name); + msg->l2h = &hh->data[0]; rc = ipaccess_bts_handle_ccm(link, &ipa_dev, msg); @@ -263,7 +266,8 @@ static void start_test_procedure(struct gsup_client *gsupc) gsup_client_send_ping(gsupc); } -struct gsup_client *gsup_client_create(const char *ip_addr, +struct gsup_client *gsup_client_create(const char *unit_name, + const char *ip_addr, unsigned int tcp_port, gsup_client_read_cb_t read_cb, struct oap_client_config *oapc_config) @@ -274,6 +278,12 @@ struct gsup_client *gsup_client_create(const char *ip_addr, gsupc = talloc_zero(tall_bsc_ctx, struct gsup_client); OSMO_ASSERT(gsupc); + /* struct ipaccess_unit has a non-const unit_name, so let's copy to be + * able to have a non-const unit_name here as well. To not taint the + * public gsup_client API, let's store it in a const char* anyway. */ + gsupc->unit_name = talloc_strdup(gsupc, unit_name); + OSMO_ASSERT(gsupc->unit_name); + /* a NULL oapc_config will mark oap_state disabled. */ rc = oap_client_init(oapc_config, &gsupc->oap_state); if (rc != 0) diff --git a/openbsc/src/libcommon/gsup_test_client.c b/openbsc/src/libcommon/gsup_test_client.c index 8be4e7aea..c71a522e5 100644 --- a/openbsc/src/libcommon/gsup_test_client.c +++ b/openbsc/src/libcommon/gsup_test_client.c @@ -276,8 +276,8 @@ int main(int argc, char **argv) osmo_init_logging(&gsup_test_client_log_info); - g_gc = gsup_client_create(server_host, server_port, gsupc_read_cb, - NULL); + g_gc = gsup_client_create("GSUPTEST", server_host, server_port, + gsupc_read_cb, NULL); signal(SIGINT, sig_cb); |