diff options
Diffstat (limited to 'net/net.c')
-rw-r--r-- | net/net.c | 73 |
1 files changed, 7 insertions, 66 deletions
@@ -36,6 +36,7 @@ #include "monitor/monitor.h" #include "qemu/help_option.h" #include "qapi/qapi-commands-net.h" +#include "qapi/qapi-visit-net.h" #include "qapi/qmp/qdict.h" #include "qapi/qmp/qerror.h" #include "qemu/error-report.h" @@ -55,7 +56,6 @@ #include "sysemu/sysemu.h" #include "net/filter.h" #include "qapi/string-output-visitor.h" -#include "qapi/hmp-output-visitor.h" /* Net bridge is currently not supported for W32. */ #if !defined(_WIN32) @@ -130,12 +130,11 @@ char *qemu_mac_strdup_printf(const uint8_t *macaddr) void qemu_format_nic_info_str(NetClientState *nc, uint8_t macaddr[6]) { - g_free(nc->info_str); - nc->info_str = g_strdup_printf( - "model=%s,macaddr=%02x:%02x:%02x:%02x:%02x:%02x", - nc->model, - macaddr[0], macaddr[1], macaddr[2], - macaddr[3], macaddr[4], macaddr[5]); + snprintf(nc->info_str, sizeof(nc->info_str), + "model=%s,macaddr=%02x:%02x:%02x:%02x:%02x:%02x", + nc->model, + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); } static int mac_table[256] = {0}; @@ -354,8 +353,6 @@ static void qemu_free_net_client(NetClientState *nc) } g_free(nc->name); g_free(nc->model); - g_free(nc->info_str); - qapi_free_NetdevInfo(nc->stored_config); if (nc->destructor) { nc->destructor(nc); } @@ -1222,42 +1219,14 @@ static void netfilter_print_info(Monitor *mon, NetFilterState *nf) monitor_printf(mon, "\n"); } -static char *generate_info_str(NetClientState *nc) -{ - NetdevInfo *ni = nc->stored_config; - char *ret_out = NULL; - Visitor *v; - - /* Use legacy field info_str for NIC and hubports */ - if ((nc->info->type == NET_CLIENT_DRIVER_NIC) || - (nc->info->type == NET_CLIENT_DRIVER_HUBPORT)) { - return g_strdup(nc->info_str ? nc->info_str : ""); - } - - if (!ni) { - return g_malloc0(1); - } - - v = hmp_output_visitor_new(&ret_out); - if (visit_type_NetdevInfo(v, "", &ni, NULL)) { - visit_complete(v, &ret_out); - } - visit_free(v); - - return ret_out; -} - void print_net_client(Monitor *mon, NetClientState *nc) { NetFilterState *nf; - char *info_str = generate_info_str(nc); monitor_printf(mon, "%s: index=%d,type=%s,%s\n", nc->name, nc->queue_index, NetClientDriver_str(nc->info->type), - info_str); - g_free(info_str); - + nc->info_str); if (!QTAILQ_EMPTY(&nc->filters)) { monitor_printf(mon, "filters:\n"); } @@ -1320,34 +1289,6 @@ RxFilterInfoList *qmp_query_rx_filter(bool has_name, const char *name, return filter_list; } -NetdevInfoList *qmp_query_netdev(Error **errp) -{ - NetdevInfoList *list = NULL; - NetClientState *nc; - - QTAILQ_FOREACH(nc, &net_clients, next) { - /* - * Only look at netdevs (backend network devices), not for each queue - * or NIC / hubport - */ - if (nc->stored_config) { - NetdevInfo *element = QAPI_CLONE(NetdevInfo, nc->stored_config); - - g_free(element->id); /* Need to dealloc empty id after clone */ - element->id = g_strdup(nc->name); - - element->has_peer_id = nc->peer != NULL; - if (element->has_peer_id) { - element->peer_id = g_strdup(nc->peer->name); - } - - QAPI_LIST_PREPEND(list, element); - } - } - - return list; -} - void hmp_info_network(Monitor *mon, const QDict *qdict) { NetClientState *nc, *peer; |