mirror of
https://git.proxmox.com/git/pve-qemu
synced 2025-08-17 07:26:15 +00:00

Many stable fixes came in since the last bump, a few of which were actually already present. Notable ones not yet present include a few guest-triggerable assert fixes, some AHCI/IDE fixes (including the fix for bug #2784), TGC fixes for i386 and ARM, VirtIO fixes, fix to avoid VNC clipboard denial-of-service. The reentrancy patches that landed upstream/stable were a newer version than the ones backported initially here, so it was necessary to explicitly drop them before rebase (which then picked up the upstream version). There were no other conflicts. Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
99 lines
2.6 KiB
Diff
99 lines
2.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
|
|
Date: Mon, 6 Apr 2020 12:16:37 +0200
|
|
Subject: [PATCH] PVE: [Up] qmp: add get_link_status
|
|
|
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
[FE: add get_link_status to command name exceptions]
|
|
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
|
|
---
|
|
net/net.c | 27 +++++++++++++++++++++++++++
|
|
qapi/net.json | 15 +++++++++++++++
|
|
qapi/pragma.json | 2 ++
|
|
3 files changed, 44 insertions(+)
|
|
|
|
diff --git a/net/net.c b/net/net.c
|
|
index c3391168f6..f7d984f6f5 100644
|
|
--- a/net/net.c
|
|
+++ b/net/net.c
|
|
@@ -1387,6 +1387,33 @@ void hmp_info_network(Monitor *mon, const QDict *qdict)
|
|
}
|
|
}
|
|
|
|
+int64_t qmp_get_link_status(const char *name, Error **errp)
|
|
+{
|
|
+ NetClientState *ncs[MAX_QUEUE_NUM];
|
|
+ NetClientState *nc;
|
|
+ int queues;
|
|
+ bool ret;
|
|
+
|
|
+ queues = qemu_find_net_clients_except(name, ncs,
|
|
+ NET_CLIENT_DRIVER__MAX,
|
|
+ MAX_QUEUE_NUM);
|
|
+
|
|
+ if (queues == 0) {
|
|
+ error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
|
|
+ "Device '%s' not found", name);
|
|
+ return (int64_t) -1;
|
|
+ }
|
|
+
|
|
+ nc = ncs[0];
|
|
+ ret = ncs[0]->link_down;
|
|
+
|
|
+ if (nc->peer->info->type == NET_CLIENT_DRIVER_NIC) {
|
|
+ ret = ncs[0]->peer->link_down;
|
|
+ }
|
|
+
|
|
+ return (int64_t) ret ? 0 : 1;
|
|
+}
|
|
+
|
|
void colo_notify_filters_event(int event, Error **errp)
|
|
{
|
|
NetClientState *nc;
|
|
diff --git a/qapi/net.json b/qapi/net.json
|
|
index 522ac582ed..327d7c5a37 100644
|
|
--- a/qapi/net.json
|
|
+++ b/qapi/net.json
|
|
@@ -36,6 +36,21 @@
|
|
##
|
|
{ 'command': 'set_link', 'data': {'name': 'str', 'up': 'bool'} }
|
|
|
|
+##
|
|
+# @get_link_status:
|
|
+#
|
|
+# Get the current link state of the nics or nic.
|
|
+#
|
|
+# @name: name of the nic you get the state of
|
|
+#
|
|
+# Return: If link is up 1
|
|
+# If link is down 0
|
|
+# If an error occure an empty string.
|
|
+#
|
|
+# Notes: this is an Proxmox VE extension and not offical part of Qemu.
|
|
+##
|
|
+{ 'command': 'get_link_status', 'data': {'name': 'str'} , 'returns': 'int' }
|
|
+
|
|
##
|
|
# @netdev_add:
|
|
#
|
|
diff --git a/qapi/pragma.json b/qapi/pragma.json
|
|
index 7f810b0e97..29233db825 100644
|
|
--- a/qapi/pragma.json
|
|
+++ b/qapi/pragma.json
|
|
@@ -15,6 +15,7 @@
|
|
'device_add',
|
|
'device_del',
|
|
'expire_password',
|
|
+ 'get_link_status',
|
|
'migrate_cancel',
|
|
'netdev_add',
|
|
'netdev_del',
|
|
@@ -26,6 +27,7 @@
|
|
'system_wakeup' ],
|
|
# Commands allowed to return a non-dictionary
|
|
'command-returns-exceptions': [
|
|
+ 'get_link_status',
|
|
'human-monitor-command',
|
|
'qom-get',
|
|
'query-tpm-models',
|