Review at  https://gerrit.osmocom.org/2549

src: use osmo_timer_setup()

Use new function available in libosmocore to set up timers. Compile
tested only.

Change-Id: Ibcfd915688e97d370a888888a83a7c95cbe16819
---
M openbsc/src/gprs/gprs_gmm.c
M openbsc/src/gprs/gprs_sgsn.c
M openbsc/src/gprs/gtphub.c
M openbsc/src/gprs/sgsn_ares.c
M openbsc/src/gprs/sgsn_cdr.c
M openbsc/src/gprs/sgsn_libgtp.c
M openbsc/src/ipaccess/abisip-find.c
M openbsc/src/ipaccess/ipaccess-proxy.c
M openbsc/src/libbsc/abis_rsl.c
M openbsc/src/libbsc/bsc_api.c
M openbsc/src/libbsc/bsc_msc.c
M openbsc/src/libbsc/bsc_rf_ctrl.c
M openbsc/src/libbsc/bsc_rll.c
M openbsc/src/libbsc/bts_nokia_site.c
M openbsc/src/libbsc/handover_logic.c
M openbsc/src/libbsc/paging.c
M openbsc/src/libcommon/gsup_client.c
M openbsc/src/libcommon/gsup_test_client.c
M openbsc/src/libmgcp/mgcp_protocol.c
M openbsc/src/libmsc/gsm_04_08.c
M openbsc/src/libmsc/smpp_openbsc.c
M openbsc/src/libmsc/sms_queue.c
M openbsc/src/osmo-bsc/osmo_bsc_msc.c
M openbsc/src/osmo-bsc/osmo_bsc_sccp.c
M openbsc/src/osmo-bsc_nat/bsc_nat.c
M openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c
M openbsc/src/osmo-bsc_nat/bsc_ussd.c
M openbsc/src/osmo-nitb/bsc_hack.c
M openbsc/src/utils/bs11_config.c
29 files changed, 60 insertions(+), 112 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/49/2549/1

diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c
index aa03891..e6751db 100644
--- a/openbsc/src/gprs/gprs_gmm.c
+++ b/openbsc/src/gprs/gprs_gmm.c
@@ -227,9 +227,7 @@
        mm->num_T_exp = 0;
 
        /* FIXME: we should do this only once ? */
-       mm->timer.data = mm;
-       mm->timer.cb = &mmctx_timer_cb;
-
+       osmo_timer_setup(&mm->timer, mmctx_timer_cb, mm);
        osmo_timer_schedule(&mm->timer, seconds, 0);
 }
 
@@ -2167,9 +2165,7 @@
        pdp->num_T_exp = 0;
 
        /* FIXME: we should do this only once ? */
-       pdp->timer.data = pdp;
-       pdp->timer.cb = &pdpctx_timer_cb;
-
+       osmo_timer_setup(&pdp->timer, pdpctx_timer_cb, pdp);
        osmo_timer_schedule(&pdp->timer, seconds, 0);
 }
 
diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c
index 5d9af78..071dd97 100644
--- a/openbsc/src/gprs/gprs_sgsn.c
+++ b/openbsc/src/gprs/gprs_sgsn.c
@@ -889,9 +889,7 @@
 
 void sgsn_inst_init()
 {
-       sgsn->llme_timer.cb = sgsn_llme_check_cb;
-       sgsn->llme_timer.data = NULL;
-
+       osmo_timer_setup(&sgsn->llme_timer, sgsn_llme_check_cb, NULL);
        osmo_timer_schedule(&sgsn->llme_timer, GPRS_LLME_CHECK_TICK, 0);
 }
 
diff --git a/openbsc/src/gprs/gtphub.c b/openbsc/src/gprs/gtphub.c
index a1aaed2..211018b 100644
--- a/openbsc/src/gprs/gtphub.c
+++ b/openbsc/src/gprs/gtphub.c
@@ -2438,9 +2438,7 @@
 
 static void gtphub_gc_start(struct gtphub *hub)
 {
-       hub->gc_timer.cb = gtphub_gc_cb;
-       hub->gc_timer.data = hub;
-
+       osmo_timer_setup(&hub->gc_timer, gtphub_gc_cb, hub);
        osmo_timer_schedule(&hub->gc_timer, GTPH_GC_TICK_SECONDS, 0);
 }
 
diff --git a/openbsc/src/gprs/sgsn_ares.c b/openbsc/src/gprs/sgsn_ares.c
index dd1bdb5..d94d184 100644
--- a/openbsc/src/gprs/sgsn_ares.c
+++ b/openbsc/src/gprs/sgsn_ares.c
@@ -71,12 +71,10 @@
        osmo_timer_del(&sgsn->ares_timer);
        timeout = ares_timeout(sgsn->ares_channel, NULL, &tv);
        if (timeout) {
-               sgsn->ares_timer.cb = ares_timeout_cb;
-               sgsn->ares_timer.data = sgsn;
-
                LOGP(DGPRS, LOGL_DEBUG, "C-ares scheduling timeout %llu.%llu\n",
                        (unsigned long long) tv.tv_sec,
                        (unsigned long long) tv.tv_usec);
+               osmo_timer_setup(&sgsn->ares_timer, ares_timeout_cb, sgsn);
                osmo_timer_schedule(&sgsn->ares_timer, tv.tv_sec, tv.tv_usec);
        }
 }
diff --git a/openbsc/src/gprs/sgsn_cdr.c b/openbsc/src/gprs/sgsn_cdr.c
index bf0d6f7..0910896 100644
--- a/openbsc/src/gprs/sgsn_cdr.c
+++ b/openbsc/src/gprs/sgsn_cdr.c
@@ -227,8 +227,8 @@
                clock_gettime(CLOCK_MONOTONIC, &signal_data->pdp->cdr_start);
                signal_data->pdp->cdr_charging_id = signal_data->pdp->lib->cid;
                cdr_log_pdp(inst, "pdp-act", signal_data->pdp);
-               signal_data->pdp->cdr_timer.cb = cdr_pdp_timeout;
-               signal_data->pdp->cdr_timer.data = signal_data->pdp;
+               osmo_timer_setup(&signal_data->pdp->cdr_timer, cdr_pdp_timeout,
+                                signal_data->pdp);
                osmo_timer_schedule(&signal_data->pdp->cdr_timer, 
inst->cfg.cdr.interval, 0);
                break;
        case S_SGSN_PDP_DEACT:
diff --git a/openbsc/src/gprs/sgsn_libgtp.c b/openbsc/src/gprs/sgsn_libgtp.c
index c26abc9..001e611 100644
--- a/openbsc/src/gprs/sgsn_libgtp.c
+++ b/openbsc/src/gprs/sgsn_libgtp.c
@@ -845,8 +845,7 @@
        }
 
        /* Start GTP re-transmission timer */
-       sgi->gtp_timer.cb = sgsn_gtp_tmr_cb;
-       sgi->gtp_timer.data = sgi;
+       osmo_timer_setup(&sgi->gtp_timer, sgsn_gtp_tmr_cb, sgi);
        sgsn_gtp_tmr_start(sgi);
 
        /* Register callbackcs with libgtp */
diff --git a/openbsc/src/ipaccess/abisip-find.c 
b/openbsc/src/ipaccess/abisip-find.c
index 5b36272..21d9f22 100644
--- a/openbsc/src/ipaccess/abisip-find.c
+++ b/openbsc/src/ipaccess/abisip-find.c
@@ -200,9 +200,7 @@
                exit(1);
        }
 
-       timer.cb = timer_cb;
-       timer.data = &bfd;
-
+       osmo_timer_setup(&timer, timer_cb, &bfd);
        osmo_timer_schedule(&timer, 5, 0);
 
        printf("Trying to find ip.access BTS by broadcast UDP...\n");
diff --git a/openbsc/src/ipaccess/ipaccess-proxy.c 
b/openbsc/src/ipaccess/ipaccess-proxy.c
index 9e8ec88..d367442 100644
--- a/openbsc/src/ipaccess/ipaccess-proxy.c
+++ b/openbsc/src/ipaccess/ipaccess-proxy.c
@@ -1059,8 +1059,7 @@
        if (!ipp)
                return -ENOMEM;
        INIT_LLIST_HEAD(&ipp->bts_list);
-       ipp->reconn_timer.cb = reconn_tmr_cb;
-       ipp->reconn_timer.data = ipp;
+       osmo_timer_setup(&ipp->reconn_timer, reconn_tmr_cb, ipp);
 
        /* Listen for OML connections */
        ret = make_sock(&ipp->oml_listen_fd, IPPROTO_TCP, INADDR_ANY,
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index be687eb..20dd2b5 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -73,8 +73,7 @@
 {
        /* We start the error timer to make the channel available again */
        if (lchan->state == LCHAN_S_REL_ERR) {
-               lchan->error_timer.data = lchan;
-               lchan->error_timer.cb = error_timeout_cb;
+               osmo_timer_setup(&lchan->error_timer, error_timeout_cb, lchan);
                osmo_timer_schedule(&lchan->error_timer,
                                   lchan->ts->trx->bts->network->T3111 + 2, 0);
        } else {
@@ -890,8 +889,7 @@
        }
 
        /* Start another timer or assume the BTS sends a ACK/NACK? */
-       lchan->act_timer.cb = lchan_deact_tmr_cb;
-       lchan->act_timer.data = lchan;
+       osmo_timer_setup(&lchan->act_timer, lchan_deact_tmr_cb, lchan);
        osmo_timer_schedule(&lchan->act_timer, 4, 0);
 
        rc =  abis_rsl_sendmsg(msg);
@@ -1200,8 +1198,7 @@
         && release_mode == RSL_REL_LOCAL_END) {
                DEBUGP(DRLL, "Scheduling release, becasuse Nokia InSite BTS 
does not send a RELease CONFirm.\n");
                lchan->sapis[link_id & 0x7] = LCHAN_SAPI_REL;
-               lchan->rel_work.cb = lchan_rel_work_cb;
-               lchan->rel_work.data = lchan;
+               osmo_timer_setup(&lchan->rel_work, lchan_rel_work_cb, lchan);
                osmo_timer_schedule(&lchan->rel_work, 0, 0);
        }
 
@@ -1857,8 +1854,7 @@
        lchan->tch_mode = GSM48_CMODE_SIGN;
 
        /* Start another timer or assume the BTS sends a ACK/NACK? */
-       lchan->act_timer.cb = lchan_act_tmr_cb;
-       lchan->act_timer.data = lchan;
+       osmo_timer_setup(&lchan->act_timer, lchan_act_tmr_cb, lchan);
        osmo_timer_schedule(&lchan->act_timer, 4, 0);
 
        DEBUGP(DRSL, "%s Activating ARFCN(%u) SS(%u) lctype %s "
@@ -1898,8 +1894,7 @@
        ia->l2_plen = GSM48_LEN2PLEN((sizeof(*ia)-1) + ia->mob_alloc_len);
 
        /* Start timer T3101 to wait for GSM48_MT_RR_PAG_RESP */
-       lchan->T3101.cb = t3101_expired;
-       lchan->T3101.data = lchan;
+       osmo_timer_setup(&lchan->T3101, t3101_expired, lchan);
        osmo_timer_schedule(&lchan->T3101, bts->network->T3101, 0);
 
        /* send IMMEDIATE ASSIGN CMD on RSL to BTS (to send on CCCH to MS) */
@@ -2031,8 +2026,7 @@
 
        /* Stop T3109 and wait for T3111 before re-using the channel */
        osmo_timer_del(&lchan->T3109);
-       lchan->T3111.cb = t3111_expired;
-       lchan->T3111.data = lchan;
+       osmo_timer_setup(&lchan->T3111, t3111_expired, lchan);
        bts = lchan->ts->trx->bts;
        osmo_timer_schedule(&lchan->T3111, bts->network->T3111, 0);
 }
@@ -2631,8 +2625,7 @@
        /* During switchover, we have received a release ack, which means that
         * the act_timer has been stopped. Start the timer again so we mark
         * this channel broken if the activation ack comes too late. */
-       lchan->act_timer.cb = lchan_act_tmr_cb;
-       lchan->act_timer.data = lchan;
+       osmo_timer_setup(&lchan->act_timer, lchan_act_tmr_cb, lchan);
        osmo_timer_schedule(&lchan->act_timer, 4, 0);
 
        rc = rsl_chan_activate_lchan(lchan, act_type, ho_ref);
@@ -2836,8 +2829,7 @@
        if (bts->network->T3109 == 0)
                return -1;
 
-       lchan->T3109.cb = t3109_expired;
-       lchan->T3109.data = lchan;
+       osmo_timer_setup(&lchan->T3109, t3109_expired, lchan);
        osmo_timer_schedule(&lchan->T3109, bts->network->T3109, 0);
        return 0;
 }
diff --git a/openbsc/src/libbsc/bsc_api.c b/openbsc/src/libbsc/bsc_api.c
index 253326f..4dba3e9 100644
--- a/openbsc/src/libbsc/bsc_api.c
+++ b/openbsc/src/libbsc/bsc_api.c
@@ -406,8 +406,7 @@
        }
 
        /* we will now start the timer to complete the assignment */
-       conn->T10.cb = assignment_t10_timeout;
-       conn->T10.data = conn;
+       osmo_timer_setup(&conn->T10, assignment_t10_timeout, conn);
        osmo_timer_schedule(&conn->T10, GSM0808_T10_VALUE);
        return 0;
 
diff --git a/openbsc/src/libbsc/bsc_msc.c b/openbsc/src/libbsc/bsc_msc.c
index e373679..82a572d 100644
--- a/openbsc/src/libbsc/bsc_msc.c
+++ b/openbsc/src/libbsc/bsc_msc.c
@@ -211,8 +211,7 @@
                        "MSC(%s) Connection in progress\n", con->name);
                fd->when = BSC_FD_WRITE;
                fd->cb = msc_connection_connect;
-               con->timeout_timer.cb = msc_con_timeout;
-               con->timeout_timer.data = con;
+               osmo_timer_setup(&con->timeout_timer, msc_con_timeout, con);
                osmo_timer_schedule(&con->timeout_timer, 20, 0);
        } else if (ret < 0) {
                perror("Connection failed");
@@ -277,8 +276,7 @@
 {
        LOGP(DMSC, LOGL_NOTICE,
                "Attempting to reconnect to the MSC(%s)\n", con->name);
-       con->reconnect_timer.cb = reconnect_msc;
-       con->reconnect_timer.data = con;
+       osmo_timer_setup(&con->reconnect_timer, reconnect_msc, con);
        osmo_timer_schedule(&con->reconnect_timer, 5, 0);
 }
 
diff --git a/openbsc/src/libbsc/bsc_rf_ctrl.c b/openbsc/src/libbsc/bsc_rf_ctrl.c
index d13c685..b7b6fc8 100644
--- a/openbsc/src/libbsc/bsc_rf_ctrl.c
+++ b/openbsc/src/libbsc/bsc_rf_ctrl.c
@@ -266,8 +266,7 @@
                return 0;
        }
 
-       rf->grace_timeout.cb = grace_timeout;
-       rf->grace_timeout.data = rf;
+       osmo_timer_setup(&rf->grace_timeout, grace_timeout, rf);
        osmo_timer_schedule(&rf->grace_timeout, 
rf->gsm_network->bsc_data->mid_call_timeout, 0);
        LOGP(DLINP, LOGL_NOTICE, "Going to switch RF off in %d seconds.\n",
             rf->gsm_network->bsc_data->mid_call_timeout);
@@ -514,15 +513,12 @@
        rf->last_rf_lock_ctrl_command = talloc_strdup(rf, "");
 
        /* check the rf state */
-       rf->rf_check.data = rf;
-       rf->rf_check.cb = rf_check_cb;
+       osmo_timer_setup(&rf->rf_check, rf_check_cb, rf);
 
        /* delay cmd handling */
-       rf->delay_cmd.data = rf;
-       rf->delay_cmd.cb = rf_delay_cmd_cb;
+       osmo_timer_setup(&rf->delay_cmd, rf_delay_cmd_cb, rf);
 
-       rf->auto_off_timer.data = rf;
-       rf->auto_off_timer.cb = rf_auto_off_cb;
+       osmo_timer_setup(&rf->auto_off_timer, rf_auto_off_cb, rf);
 
        /* listen to RF signals */
        osmo_signal_register_handler(SS_MSC, msc_signal_handler, net);
diff --git a/openbsc/src/libbsc/bsc_rll.c b/openbsc/src/libbsc/bsc_rll.c
index f2b65ca..bb488da 100644
--- a/openbsc/src/libbsc/bsc_rll.c
+++ b/openbsc/src/libbsc/bsc_rll.c
@@ -89,9 +89,7 @@
 
        llist_add(&rllr->list, &bsc_rll_reqs);
 
-       rllr->timer.cb = &timer_cb;
-       rllr->timer.data = rllr;
-
+       osmo_timer_setup(&rllr->timer, timer_cb, rllr);
        osmo_timer_schedule(&rllr->timer, 7, 0);
 
        /* send the RSL RLL ESTablish REQuest */
diff --git a/openbsc/src/libbsc/bts_nokia_site.c 
b/openbsc/src/libbsc/bts_nokia_site.c
index 32a885c..3ca76c0 100644
--- a/openbsc/src/libbsc/bts_nokia_site.c
+++ b/openbsc/src/libbsc/bts_nokia_site.c
@@ -1560,8 +1560,8 @@
                         */
                        bts->nokia.wait_reset = 1;
 
-                       bts->nokia.reset_timer.cb = &reset_timer_cb;
-                       bts->nokia.reset_timer.data = bts;
+                       osmo_timer_setup(&bts->nokia.reset_timer,
+                                        reset_timer_cb, bts);
                        osmo_timer_schedule(&bts->nokia.reset_timer, 
bts->nokia.bts_reset_timer_cnf, 0);
 
                        struct gsm_e1_subslot *e1_link = &bts->oml_e1_link;
diff --git a/openbsc/src/libbsc/handover_logic.c 
b/openbsc/src/libbsc/handover_logic.c
index ffcca66..4dd913b 100644
--- a/openbsc/src/libbsc/handover_logic.c
+++ b/openbsc/src/libbsc/handover_logic.c
@@ -216,8 +216,7 @@
 
        /* start T3103.  We can continue either with T3103 expiration,
         * 04.08 HANDOVER COMPLETE or 04.08 HANDOVER FAIL */
-       ho->T3103.cb = ho_T3103_cb;
-       ho->T3103.data = ho;
+       osmo_timer_setup(&ho->T3103, ho_T3103_cb, ho);
        osmo_timer_schedule(&ho->T3103, 10, 0);
 
        /* create a RTP connection */
diff --git a/openbsc/src/libbsc/paging.c b/openbsc/src/libbsc/paging.c
index bd23d89..78e39c5 100644
--- a/openbsc/src/libbsc/paging.c
+++ b/openbsc/src/libbsc/paging.c
@@ -188,8 +188,8 @@
         * to zero and we do not get any messages.
         */
        if (paging_bts->available_slots == 0) {
-               paging_bts->credit_timer.cb = paging_give_credit;
-               paging_bts->credit_timer.data = paging_bts;
+               osmo_timer_setup(&paging_bts->credit_timer, paging_give_credit,
+                                paging_bts);
                osmo_timer_schedule(&paging_bts->credit_timer, 5, 0);
                return;
        }
@@ -230,8 +230,8 @@
 
        bts->paging.bts = bts;
        INIT_LLIST_HEAD(&bts->paging.pending_requests);
-       bts->paging.work_timer.cb = paging_worker;
-       bts->paging.work_timer.data = &bts->paging;
+       osmo_timer_setup(&bts->paging.work_timer, paging_worker,
+                        &bts->paging);
 
        /* Large number, until we get a proper message */
        bts->paging.available_slots = 20;
@@ -299,8 +299,7 @@
        req->chan_type = type;
        req->cbfn = cbfn;
        req->cbfn_param = data;
-       req->T3113.cb = paging_T3113_expired;
-       req->T3113.data = req;
+       osmo_timer_setup(&req->T3113, paging_T3113_expired, req);
        osmo_timer_schedule(&req->T3113, bts->network->T3113, 0);
        llist_add_tail(&req->entry, &bts_entry->pending_requests);
        paging_schedule_if_needed(bts_entry);
diff --git a/openbsc/src/libcommon/gsup_client.c 
b/openbsc/src/libcommon/gsup_client.c
index 2e920a6..de00d8d 100644
--- a/openbsc/src/libcommon/gsup_client.c
+++ b/openbsc/src/libcommon/gsup_client.c
@@ -254,8 +254,7 @@
 
 static void start_test_procedure(struct gsup_client *gsupc)
 {
-       gsupc->ping_timer.data = gsupc;
-       gsupc->ping_timer.cb = &ping_timer_cb;
+       osmo_timer_setup(&gsupc->ping_timer, ping_timer_cb, gsupc);
 
        gsupc->got_ipa_pong = 0;
        osmo_timer_schedule(&gsupc->ping_timer, GSUP_CLIENT_PING_INTERVAL, 0);
@@ -290,8 +289,7 @@
        if (!gsupc->link)
                goto failed;
 
-       gsupc->connect_timer.data = gsupc;
-       gsupc->connect_timer.cb = &connect_timer_cb;
+       osmo_timer_setup(&gsupc->connect_timer, connect_timer_cb, gsupc);
 
        rc = gsup_client_connect(gsupc);
 
diff --git a/openbsc/src/libcommon/gsup_test_client.c 
b/openbsc/src/libcommon/gsup_test_client.c
index 8be4e7a..8fc38d6 100644
--- a/openbsc/src/libcommon/gsup_test_client.c
+++ b/openbsc/src/libcommon/gsup_test_client.c
@@ -77,8 +77,7 @@
        io = talloc_zero(ctx, struct imsi_op);
        osmo_strlcpy(io->imsi, imsi, sizeof(io->imsi));
        io->type = type;
-       io->timer.cb = imsi_op_timer_cb;
-       io->timer.data = io;
+       osmo_timer_setup(&io->timer, imsi_op_timer_cb, io);
        llist_add(&io->list, &g_imsi_ops);
        imsi_op_stats[type].num_alloc++;
 
diff --git a/openbsc/src/libmgcp/mgcp_protocol.c 
b/openbsc/src/libmgcp/mgcp_protocol.c
index 18398fc..4fcadd9 100644
--- a/openbsc/src/libmgcp/mgcp_protocol.c
+++ b/openbsc/src/libmgcp/mgcp_protocol.c
@@ -1172,8 +1172,7 @@
 void mgcp_trunk_set_keepalive(struct mgcp_trunk_config *tcfg, int interval)
 {
        tcfg->keepalive_interval = interval;
-       tcfg->keepalive_timer.data = tcfg;
-       tcfg->keepalive_timer.cb = mgcp_keepalive_timer_cb;
+       osmo_timer_setup(&tcfg->keepalive_timer, mgcp_keepalive_timer_cb, tcfg);
 
        if (interval <= 0)
                osmo_timer_del(&tcfg->keepalive_timer);
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index 376106f..89108e4 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -618,8 +618,8 @@
 
 static void schedule_reject(struct gsm_subscriber_connection *conn)
 {
-       conn->loc_operation->updating_timer.cb = loc_upd_rej_cb;
-       conn->loc_operation->updating_timer.data = conn;
+       osmo_timer_setup(&conn->loc_operation->updating_timer, loc_upd_rej_cb,
+                        conn);
        osmo_timer_schedule(&conn->loc_operation->updating_timer, 5, 0);
 }
 
@@ -2224,8 +2224,7 @@
                                 int sec, int micro)
 {
        DEBUGP(DCC, "starting timer T%x with %d seconds\n", current, sec);
-       trans->cc.timer.cb = gsm48_cc_timeout;
-       trans->cc.timer.data = trans;
+       osmo_timer_setup(&trans->cc.timer, gsm48_cc_timeout, trans);
        osmo_timer_schedule(&trans->cc.timer, sec, micro);
        trans->cc.Tcurrent = current;
 }
@@ -3955,8 +3954,7 @@
        if (!conn->anch_operation)
                return -1;
 
-       conn->anch_operation->timeout.data = conn;
-       conn->anch_operation->timeout.cb = anchor_timeout;
+       osmo_timer_setup(&conn->anch_operation->timeout, anchor_timeout, conn);
        osmo_timer_schedule(&conn->anch_operation->timeout, 5, 0);
        return 0;
 }
diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index 8f1a96c..8111d92 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -549,8 +549,7 @@
         * lchan keeps busy until we get a reply to this SMPP command. Too high
         * value may exhaust resources.
         */
-       cmd->response_timer.cb  = smpp_deliver_sm_cb;
-       cmd->response_timer.data = cmd;
+       osmo_timer_setup(&cmd->response_timer, smpp_deliver_sm_cb, cmd);
        osmo_timer_schedule(&cmd->response_timer, 5, 0);
        llist_add_tail(&cmd->list, &esme->smpp_cmd_list);
        *deferred = true;
diff --git a/openbsc/src/libmsc/sms_queue.c b/openbsc/src/libmsc/sms_queue.c
index ebc53c2..dc7f6e8 100644
--- a/openbsc/src/libmsc/sms_queue.c
+++ b/openbsc/src/libmsc/sms_queue.c
@@ -354,10 +354,8 @@
        sms->max_fail = 1;
        sms->network = network;
        sms->max_pending = max_pending;
-       sms->push_queue.data = sms;
-       sms->push_queue.cb = sms_submit_pending;
-       sms->resend_pending.data = sms;
-       sms->resend_pending.cb = sms_resend_pending;
+       osmo_timer_setup(&sms->push_queue, sms_submit_pending, sms);
+       osmo_timer_setup(&sms->resend_pending, sms_resend_pending, sms);
 
        sms_submit_pending(sms);
 
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_msc.c 
b/openbsc/src/osmo-bsc/osmo_bsc_msc.c
index 42e8055..8d02624 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_msc.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_msc.c
@@ -526,10 +526,8 @@
                return -1;
        }
 
-       data->ping_timer.cb = msc_ping_timeout_cb;
-       data->ping_timer.data = data;
-       data->pong_timer.cb = msc_pong_timeout_cb;
-       data->pong_timer.data = data;
+       osmo_timer_setup(&data->ping_timer, msc_ping_timeout_cb, data);
+       osmo_timer_setup(&data->pong_timer, msc_pong_timeout_cb, data);
 
        data->msc_con->write_queue.bfd.data = data;
        data->msc_con->connection_loss = msc_connection_was_lost;
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_sccp.c 
b/openbsc/src/osmo-bsc/osmo_bsc_sccp.c
index 970d70e..e242390 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_sccp.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_sccp.c
@@ -232,10 +232,8 @@
        bsc_con->send_ping = send_ping;
 
        /* prepare the timers */
-       bsc_con->sccp_it_timeout.cb = sccp_it_timeout;
-       bsc_con->sccp_it_timeout.data = bsc_con;
-       bsc_con->sccp_cc_timeout.cb = sccp_cc_timeout;
-       bsc_con->sccp_cc_timeout.data = bsc_con;
+       osmo_timer_setup(&bsc_con->sccp_it_timeout, sccp_it_timeout, bsc_con);
+       osmo_timer_setup(&bsc_con->sccp_cc_timeout, sccp_cc_timeout, bsc_con);
 
        INIT_LLIST_HEAD(&bsc_con->sccp_queue);
 
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c 
b/openbsc/src/osmo-bsc_nat/bsc_nat.c
index 80e89fd..daa066d 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c
@@ -180,10 +180,8 @@
 
 static void start_ping_pong(struct bsc_connection *bsc)
 {
-       bsc->pong_timeout.data = bsc;
-       bsc->pong_timeout.cb = bsc_pong_timeout;
-       bsc->ping_timeout.data = bsc;
-       bsc->ping_timeout.cb = bsc_ping_timeout;
+       osmo_timer_setup(&bsc->pong_timeout, bsc_pong_timeout, bsc);
+       osmo_timer_setup(&bsc->ping_timeout, bsc_ping_timeout, bsc);
 
        bsc_ping_timeout(bsc);
 }
@@ -1446,8 +1444,7 @@
        /*
         * start the hangup timer
         */
-       bsc->id_timeout.data = bsc;
-       bsc->id_timeout.cb = ipaccess_close_bsc;
+       osmo_timer_setup(&bsc->id_timeout, ipaccess_close_bsc, bsc);
        osmo_timer_schedule(&bsc->id_timeout, nat->auth_timeout, 0);
        return 0;
 }
@@ -1711,8 +1708,7 @@
 
        /* recycle timer */
        sccp_set_log_area(DSCCP);
-       sccp_close.cb = sccp_close_unconfirmed;
-       sccp_close.data = NULL;
+       osmo_timer_setup(&sccp_close, sccp_close_unconfirmed, NULL);
        osmo_timer_schedule(&sccp_close, SCCP_CLOSE_TIME, 0);
 
        while (1) {
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c 
b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c
index 057a583..3453758 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat_ctrl.c
@@ -279,8 +279,8 @@
                        pending->cmd = cmd;
 
                        /* Setup the timeout */
-                       pending->timeout.data = pending;
-                       pending->timeout.cb = pending_timeout_cb;
+                       osmo_timer_setup(&pending->timeout, pending_timeout_cb,
+                                        pending);
                        /* TODO: Make timeout configurable */
                        osmo_timer_schedule(&pending->timeout, 10, 0);
                        llist_add_tail(&pending->list_entry, &bsc->cmd_pending);
diff --git a/openbsc/src/osmo-bsc_nat/bsc_ussd.c 
b/openbsc/src/osmo-bsc_nat/bsc_ussd.c
index 2f68381..0ba6327 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_ussd.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_ussd.c
@@ -216,8 +216,7 @@
 {
        struct msgb *msg;
 
-       conn->auth_timeout.data = conn;
-       conn->auth_timeout.cb = ussd_auth_cb;
+       osmo_timer_setup(&conn->auth_timeout, ussd_auth_cb, conn);
        osmo_timer_schedule(&conn->auth_timeout, conn->nat->auth_timeout, 0);
 
        msg = msgb_alloc_headroom(4096, 128, "auth message");
diff --git a/openbsc/src/osmo-nitb/bsc_hack.c b/openbsc/src/osmo-nitb/bsc_hack.c
index d8029cd..17b23b2 100644
--- a/openbsc/src/osmo-nitb/bsc_hack.c
+++ b/openbsc/src/osmo-nitb/bsc_hack.c
@@ -369,13 +369,12 @@
        printf("DB: Database prepared.\n");
 
        /* setup the timer */
-       db_sync_timer.cb = db_sync_timer_cb;
-       db_sync_timer.data = NULL;
+       osmo_timer_setup(&db_sync_timer, db_sync_timer_cb, NULL);
        if (use_db_counter)
                osmo_timer_schedule(&db_sync_timer, DB_SYNC_INTERVAL);
 
-       bsc_gsmnet->subscr_expire_timer.cb = subscr_expire_cb;
-       bsc_gsmnet->subscr_expire_timer.data = NULL;
+       osmo_timer_setup(&bsc_gsmnet->subscr_expire_timer, subscr_expire_cb,
+                        NULL);
        osmo_timer_schedule(&bsc_gsmnet->subscr_expire_timer, EXPIRE_INTERVAL);
 
        signal(SIGINT, &signal_handler);
diff --git a/openbsc/src/utils/bs11_config.c b/openbsc/src/utils/bs11_config.c
index 8b05637..a0f3cb7 100644
--- a/openbsc/src/utils/bs11_config.c
+++ b/openbsc/src/utils/bs11_config.c
@@ -940,7 +940,7 @@
        abis_nm_bs11_factory_logon(g_bts, 1);
        //abis_nm_bs11_get_serno(g_bts);
 
-       status_timer.cb = status_timer_cb;
+       osmo_timer_setup(&status_timer, status_timer_cb, NULL);
 
        while (1) {
                if (osmo_select_main(0) < 0)

-- 
To view, visit https://gerrit.osmocom.org/2549
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibcfd915688e97d370a888888a83a7c95cbe16819
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso <[email protected]>

Reply via email to