|
|
1.1 root 1: /*
2: * QEMU Guest Agent common/cross-platform command implementations
3: *
4: * Copyright IBM Corp. 2012
5: *
6: * Authors:
7: * Michael Roth <[email protected]>
8: *
9: * This work is licensed under the terms of the GNU GPL, version 2 or later.
10: * See the COPYING file in the top-level directory.
11: */
12:
13: #include <glib.h>
14: #include "qga/guest-agent-core.h"
15: #include "qga-qmp-commands.h"
16: #include "qerror.h"
17:
18: /* Note: in some situations, like with the fsfreeze, logging may be
19: * temporarilly disabled. if it is necessary that a command be able
20: * to log for accounting purposes, check ga_logging_enabled() beforehand,
21: * and use the QERR_QGA_LOGGING_DISABLED to generate an error
22: */
23: void slog(const gchar *fmt, ...)
24: {
25: va_list ap;
26:
27: va_start(ap, fmt);
28: g_logv("syslog", G_LOG_LEVEL_INFO, fmt, ap);
29: va_end(ap);
30: }
31:
32: int64_t qmp_guest_sync_delimited(int64_t id, Error **errp)
33: {
34: ga_set_response_delimited(ga_state);
35: return id;
36: }
37:
38: int64_t qmp_guest_sync(int64_t id, Error **errp)
39: {
40: return id;
41: }
42:
43: void qmp_guest_ping(Error **err)
44: {
45: slog("guest-ping called");
46: }
47:
48: struct GuestAgentInfo *qmp_guest_info(Error **err)
49: {
50: GuestAgentInfo *info = g_malloc0(sizeof(GuestAgentInfo));
51: GuestAgentCommandInfo *cmd_info;
52: GuestAgentCommandInfoList *cmd_info_list;
53: char **cmd_list_head, **cmd_list;
54:
55: info->version = g_strdup(QEMU_VERSION);
56:
57: cmd_list_head = cmd_list = qmp_get_command_list();
58: if (*cmd_list_head == NULL) {
59: goto out;
60: }
61:
62: while (*cmd_list) {
63: cmd_info = g_malloc0(sizeof(GuestAgentCommandInfo));
64: cmd_info->name = strdup(*cmd_list);
65: cmd_info->enabled = qmp_command_is_enabled(cmd_info->name);
66:
67: cmd_info_list = g_malloc0(sizeof(GuestAgentCommandInfoList));
68: cmd_info_list->value = cmd_info;
69: cmd_info_list->next = info->supported_commands;
70: info->supported_commands = cmd_info_list;
71:
72: g_free(*cmd_list);
73: cmd_list++;
74: }
75:
76: out:
77: g_free(cmd_list_head);
78: return info;
79: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.