void hmp_cont(Monitor *mon, const QDict *qdict);
void hmp_system_wakeup(Monitor *mon, const QDict *qdict);
void hmp_nmi(Monitor *mon, const QDict *qdict);
+void hmp_info_network(Monitor *mon, const QDict *qdict);
void hmp_set_link(Monitor *mon, const QDict *qdict);
void hmp_balloon(Monitor *mon, const QDict *qdict);
void hmp_loadvm(Monitor *mon, const QDict *qdict);
QTAILQ_HEAD(, NetFilterState) filters;
};
+typedef QTAILQ_HEAD(NetClientStateList, NetClientState) NetClientStateList;
+
typedef struct NICState {
NetClientState *ncs;
NICConf *conf;
const char *default_model);
void print_net_client(Monitor *mon, NetClientState *nc);
-void hmp_info_network(Monitor *mon, const QDict *qdict);
void net_socket_rs_init(SocketReadState *rs,
SocketReadStateFinalize *finalize,
bool vnet_hdr);
extern const char *host_net_devices[];
/* from net.c */
+extern NetClientStateList net_clients;
bool netdev_is_modern(const char *optarg);
void netdev_parse_modern(const char *optarg);
void net_client_parse(QemuOptsList *opts_list, const char *str);
#include "qemu/osdep.h"
#include "monitor/hmp.h"
-#include "net/net.h"
#include "sysemu/runstate.h"
#include "qemu/sockets.h"
#include "qemu/help_option.h"
#include "monitor-internal.h"
#include "monitor/qdev.h"
#include "exec/gdbstub.h"
-#include "net/net.h"
#include "net/slirp.h"
#include "ui/qemu-spice.h"
#include "qemu/ctype.h"
#include "qemu/osdep.h"
#include "migration/misc.h"
#include "monitor/hmp.h"
+#include "monitor/monitor.h"
#include "net/net.h"
+#include "net/hub.h"
#include "qapi/clone-visitor.h"
#include "qapi/qapi-commands-net.h"
#include "qapi/qapi-visit-net.h"
#include "qemu/help_option.h"
#include "qemu/option.h"
+void hmp_info_network(Monitor *mon, const QDict *qdict)
+{
+ NetClientState *nc, *peer;
+ NetClientDriver type;
+
+ net_hub_info(mon);
+
+ QTAILQ_FOREACH(nc, &net_clients, next) {
+ peer = nc->peer;
+ type = nc->info->type;
+
+ /* Skip if already printed in hub info */
+ if (net_hub_id_for_client(nc, NULL) == 0) {
+ continue;
+ }
+
+ if (!peer || type == NET_CLIENT_DRIVER_NIC) {
+ print_net_client(mon, nc);
+ } /* else it's a netdev connected to a NIC, printed with the NIC */
+ if (peer && type == NET_CLIENT_DRIVER_NIC) {
+ monitor_printf(mon, " \\ ");
+ print_net_client(mon, peer);
+ }
+ }
+}
+
void hmp_set_link(Monitor *mon, const QDict *qdict)
{
const char *name = qdict_get_str(qdict, "name");
#endif
static VMChangeStateEntry *net_change_state_entry;
-static QTAILQ_HEAD(, NetClientState) net_clients;
+NetClientStateList net_clients;
typedef struct NetdevQueueEntry {
Netdev *nd;
return filter_list;
}
-void hmp_info_network(Monitor *mon, const QDict *qdict)
-{
- NetClientState *nc, *peer;
- NetClientDriver type;
-
- net_hub_info(mon);
-
- QTAILQ_FOREACH(nc, &net_clients, next) {
- peer = nc->peer;
- type = nc->info->type;
-
- /* Skip if already printed in hub info */
- if (net_hub_id_for_client(nc, NULL) == 0) {
- continue;
- }
-
- if (!peer || type == NET_CLIENT_DRIVER_NIC) {
- print_net_client(mon, nc);
- } /* else it's a netdev connected to a NIC, printed with the NIC */
- if (peer && type == NET_CLIENT_DRIVER_NIC) {
- monitor_printf(mon, " \\ ");
- print_net_client(mon, peer);
- }
- }
-}
-
void colo_notify_filters_event(int event, Error **errp)
{
NetClientState *nc;