Commit a06cd488 authored by Dr. David Alan Gilbert's avatar Dr. David Alan Gilbert Committed by Jason Wang
Browse files

qmp: Add announce-self command



Add a qmp command that can trigger guest announcements.

It uses its own announce-timer instance, and parameters
passed to it explicitly in the command.

Like most qmp commands, it's in the main thread/bql, so
there's no racing with any outstanding timer.

Based on work of Germano Veit Michel <germano@redhat.com> and
                 Vladislav Yasevich <vyasevic@redhat.com>

Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
parent b2c929f0
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
#include "net/net.h"
#include "qapi/clone-visitor.h"
#include "qapi/qapi-visit-net.h"
#include "qapi/qapi-commands-net.h"
#include "trace.h"

int64_t qemu_announce_timer_step(AnnounceTimer *timer)
@@ -131,3 +132,9 @@ void qemu_announce_self(AnnounceTimer *timer, AnnounceParameters *params)
        qemu_announce_timer_del(timer);
    }
}

void qmp_announce_self(AnnounceParameters *params, Error **errp)
{
    static AnnounceTimer announce_timer;
    qemu_announce_self(&announce_timer, params);
}
+20 −0
Original line number Diff line number Diff line
@@ -707,3 +707,23 @@
            'max': 'int',
            'rounds': 'int',
            'step': 'int' } }

##
# @announce-self:
#
# Trigger generation of broadcast RARP frames to update network switches.
# This can be useful when network bonds fail-over the active slave.
#
# @params: AnnounceParameters giving timing and repetition count of announce
#
# Example:
#
# -> { "execute": "announce-self"
#      "arguments": {
#          "initial": 50, "max": 550, "rounds": 10, "step": 50 } }
# <- { "return": {} }
#
# Since: 4.0
##
{ 'command': 'announce-self', 'boxed': true,
  'data' : 'AnnounceParameters'}