1/*
2 * Self-announce facility
3 * (c) 2017-2019 Red Hat, Inc.
4 *
5 * This work is licensed under the terms of the GNU GPL, version 2 or later.
6 * See the COPYING file in the top-level directory.
7 */
8
9#ifndef QEMU_NET_ANNOUNCE_H
10#define QEMU_NET_ANNOUNCE_H
11
12#include "qapi/qapi-types-net.h"
13#include "qemu/timer.h"
14
15struct AnnounceTimer {
16 QEMUTimer *tm;
17 AnnounceParameters params;
18 QEMUClockType type;
19 int round;
20};
21
22/* Returns: update the timer to the next time point */
23int64_t qemu_announce_timer_step(AnnounceTimer *timer);
24
25/*
26 * Delete the underlying timer and other data
27 * If 'free_named' true and the timer is a named timer, then remove
28 * it from the list of named timers and free the AnnounceTimer itself.
29 */
30void qemu_announce_timer_del(AnnounceTimer *timer, bool free_named);
31
32/*
33 * Under BQL/main thread
34 * Reset the timer to the given parameters/type/notifier.
35 */
36void qemu_announce_timer_reset(AnnounceTimer *timer,
37 AnnounceParameters *params,
38 QEMUClockType type,
39 QEMUTimerCB *cb,
40 void *opaque);
41
42void qemu_announce_self(AnnounceTimer *timer, AnnounceParameters *params);
43
44#endif
45