diff options
Diffstat (limited to 'src/slirp.c')
-rw-r--r-- | src/slirp.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/slirp.c b/src/slirp.c index a2876f2..c92a9a9 100644 --- a/src/slirp.c +++ b/src/slirp.c @@ -535,10 +535,26 @@ static void ra_timer_handler_cb(void *opaque) return ra_timer_handler(slirp, NULL); } +void slirp_handle_timer(Slirp *slirp, SlirpTimerId id, void *cb_opaque) +{ + g_return_if_fail(id >= 0 && id < SLIRP_TIMER_NUM); + + switch (id) { + case SLIRP_TIMER_RA: + return ra_timer_handler(slirp, cb_opaque); + default: + abort(); + } +} + void *slirp_timer_new(Slirp *slirp, SlirpTimerId id, void *cb_opaque) { g_return_val_if_fail(id >= 0 && id < SLIRP_TIMER_NUM, NULL); + if (slirp->cfg_version >= 4 && slirp->cb->timer_new_opaque) { + return slirp->cb->timer_new_opaque(id, cb_opaque, slirp->opaque); + } + switch (id) { case SLIRP_TIMER_RA: g_return_val_if_fail(cb_opaque == NULL, NULL); @@ -568,6 +584,7 @@ Slirp *slirp_new(const SlirpConfig *cfg, const SlirpCb *callbacks, void *opaque) slirp_init_once(); + slirp->cfg_version = cfg->version; slirp->opaque = opaque; slirp->cb = callbacks; slirp->grand = g_rand_new(); |