* [Qemu-devel] [PATCH v1 00/12] net: hub implemention
@ 2012-03-09 9:00 zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 01/12] net: Add a hub net client zwu.kernel
` (11 more replies)
0 siblings, 12 replies; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
The patchset implements network hub stead of vlan. The main work was done by stefan, and i only rebased it to latest QEMU upstream, did some testings and will be responsible for pushing it to QEMU upstream.
Stefan Hajnoczi (12):
net: Add a hub net client
net: Use hubs for the vlan feature
net: Look up 'vlan' net clients using hubs
hub: Check that hubs are configured correctly
net: Drop vlan argument to qemu_new_net_client()
net: Remove vlan qdev property
net: Remove vlan code from net.c
net: Remove VLANState
net: Rename non_vlan_clients to net_clients
net: Rename VLANClientState to NetClientState
net: Rename vc local variables to nc
net: Rename qemu_del_vlan_client() to qemu_del_net_client()
Makefile.objs | 2 +-
hw/cadence_gem.c | 8 +-
hw/dp8393x.c | 6 +-
hw/e1000.c | 10 +-
hw/eepro100.c | 8 +-
hw/etraxfs_eth.c | 8 +-
hw/lan9118.c | 8 +-
hw/lance.c | 2 +-
hw/mcf_fec.c | 6 +-
hw/milkymist-minimac2.c | 6 +-
hw/mipsnet.c | 6 +-
hw/musicpal.c | 6 +-
hw/ne2000-isa.c | 2 +-
hw/ne2000.c | 8 +-
hw/ne2000.h | 4 +-
hw/opencores_eth.c | 8 +-
hw/pcnet-pci.c | 4 +-
hw/pcnet.c | 6 +-
hw/pcnet.h | 6 +-
hw/qdev-properties.c | 78 +------
hw/qdev.c | 2 -
hw/qdev.h | 8 +-
hw/rtl8139.c | 10 +-
hw/smc91c111.c | 6 +-
hw/spapr_llan.c | 4 +-
hw/stellaris_enet.c | 6 +-
hw/usb-net.c | 8 +-
hw/vhost_net.c | 24 +-
hw/vhost_net.h | 2 +-
hw/virtio-net.c | 12 +-
hw/xen_nic.c | 7 +-
hw/xgmac.c | 6 +-
hw/xilinx_axienet.c | 6 +-
hw/xilinx_ethlite.c | 6 +-
net.c | 578 ++++++++++++++---------------------------------
net.h | 74 +++----
net/dump.c | 28 ++-
net/dump.h | 2 +-
net/hub.c | 273 ++++++++++++++++++++++
net/hub.h | 26 ++
net/queue.c | 16 +-
net/queue.h | 12 +-
net/slirp.c | 25 +-
net/slirp.h | 2 +-
net/socket.c | 66 +++---
net/socket.h | 2 +-
net/tap-win32.c | 27 ++-
net/tap.c | 45 ++--
net/tap.h | 21 +-
net/vde.c | 17 +-
net/vde.h | 3 +-
qemu-common.h | 3 +-
52 files changed, 750 insertions(+), 769 deletions(-)
create mode 100644 net/hub.c
create mode 100644 net/hub.h
--
1.7.6
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 01/12] net: Add a hub net client
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
2012-03-09 10:33 ` Paolo Bonzini
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 02/12] net: Use hubs for the vlan feature zwu.kernel
` (10 subsequent siblings)
11 siblings, 1 reply; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
The vlan feature can be implemented in terms of hubs. By introducing a
hub net client it becomes possible to remove the special case vlan code
from net.c and push the vlan feature out of generic networking code.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
Makefile.objs | 2 +-
net.h | 1 +
net/hub.c | 204 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
net/hub.h | 23 +++++++
4 files changed, 229 insertions(+), 1 deletions(-)
create mode 100644 net/hub.c
create mode 100644 net/hub.h
diff --git a/Makefile.objs b/Makefile.objs
index 808de6a..fc25979 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -45,7 +45,7 @@ block-nested-$(CONFIG_RBD) += rbd.o
block-obj-y += $(addprefix block/, $(block-nested-y))
net-obj-y = net.o
-net-nested-y = queue.o checksum.o util.o
+net-nested-y = queue.o checksum.o util.o hub.o
net-nested-y += socket.o
net-nested-y += dump.o
net-nested-$(CONFIG_POSIX) += tap.o
diff --git a/net.h b/net.h
index 75a8c15..319c3bb 100644
--- a/net.h
+++ b/net.h
@@ -38,6 +38,7 @@ typedef enum {
NET_CLIENT_TYPE_VDE,
NET_CLIENT_TYPE_DUMP,
NET_CLIENT_TYPE_BRIDGE,
+ NET_CLIENT_TYPE_HUB,
NET_CLIENT_TYPE_MAX
} net_client_type;
diff --git a/net/hub.c b/net/hub.c
new file mode 100644
index 0000000..b3ac2ef
--- /dev/null
+++ b/net/hub.c
@@ -0,0 +1,204 @@
+/*
+ * Hub net client
+ *
+ * Copyright IBM, Corp. 2011
+ *
+ * Authors:
+ * Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ *
+ */
+
+#include "monitor.h"
+#include "net.h"
+#include "hub.h"
+
+/*
+ * A hub broadcasts incoming packets to all its ports except the source port.
+ * Hubs can be used to provide independent network segments, also confusingly
+ * named the QEMU 'vlan' feature.
+ */
+
+typedef struct NetHub NetHub;
+
+typedef struct NetHubPort {
+ VLANClientState nc;
+ QLIST_ENTRY(NetHubPort) next;
+ NetHub *hub;
+ unsigned int id;
+} NetHubPort;
+
+struct NetHub {
+ unsigned int id;
+ QLIST_ENTRY(NetHub) next;
+ unsigned int num_ports;
+ QLIST_HEAD(, NetHubPort) ports;
+};
+
+static QLIST_HEAD(, NetHub) hubs = QLIST_HEAD_INITIALIZER(&hubs);
+
+static ssize_t net_hub_receive(NetHub *hub, NetHubPort *source_port,
+ const uint8_t *buf, size_t len)
+{
+ NetHubPort *port;
+
+ QLIST_FOREACH(port, &hub->ports, next) {
+ if (port == source_port) {
+ continue;
+ }
+
+ /* TODO use qemu_send_packet() or need to call *_deliver_* directly? */
+ /* TODO ignore return value? */
+ qemu_send_packet(&port->nc, buf, len);
+ }
+ return len;
+}
+
+static ssize_t net_hub_receive_iov(NetHub *hub, NetHubPort *source_port,
+ const struct iovec *iov, int iovcnt)
+{
+ NetHubPort *port;
+ ssize_t ret = 0;
+
+ QLIST_FOREACH(port, &hub->ports, next) {
+ if (port == source_port) {
+ continue;
+ }
+
+ /* TODO use qemu_send_packet() or need to call *_deliver_* directly? */
+ /* TODO return value */
+ ret = qemu_sendv_packet(&port->nc, iov, iovcnt);
+ }
+ return ret;
+}
+
+static NetHub *net_hub_new(unsigned int id)
+{
+ NetHub *hub;
+
+ hub = g_malloc(sizeof(*hub));
+ hub->id = id;
+ hub->num_ports = 0;
+ QLIST_INIT(&hub->ports);
+
+ QLIST_INSERT_HEAD(&hubs, hub, next);
+
+ return hub;
+}
+
+static ssize_t net_hub_port_receive(VLANClientState *nc,
+ const uint8_t *buf, size_t len)
+{
+ NetHubPort *port = DO_UPCAST(NetHubPort, nc, nc);
+
+ return net_hub_receive(port->hub, port, buf, len);
+}
+
+static ssize_t net_hub_port_receive_iov(VLANClientState *nc,
+ const struct iovec *iov, int iovcnt)
+{
+ NetHubPort *port = DO_UPCAST(NetHubPort, nc, nc);
+
+ return net_hub_receive_iov(port->hub, port, iov, iovcnt);
+}
+
+static void net_hub_port_cleanup(VLANClientState *nc)
+{
+ NetHubPort *port = DO_UPCAST(NetHubPort, nc, nc);
+
+ QLIST_REMOVE(port, next);
+}
+
+static NetClientInfo net_hub_port_info = {
+ .type = NET_CLIENT_TYPE_HUB,
+ .size = sizeof(NetHubPort),
+ .receive = net_hub_port_receive,
+ .receive_iov = net_hub_port_receive_iov,
+ .cleanup = net_hub_port_cleanup,
+};
+
+static NetHubPort *net_hub_port_new(NetHub *hub)
+{
+ VLANClientState *nc;
+ NetHubPort *port;
+ unsigned int id = hub->num_ports++;
+ char name[128];
+
+ snprintf(name, sizeof name, "hub%uport%u", hub->id, id);
+
+ nc = qemu_new_net_client(&net_hub_port_info, NULL, NULL, "hub", name);
+ port = DO_UPCAST(NetHubPort, nc, nc);
+ port->id = id;
+ port->hub = hub;
+
+ QLIST_INSERT_HEAD(&hub->ports, port, next);
+
+ return port;
+}
+
+/**
+ * Create a port on a given hub
+ *
+ * If there is no existing hub with the given id then a new hub is created.
+ */
+VLANClientState *net_hub_add_port(unsigned int hub_id)
+{
+ NetHub *hub;
+ NetHubPort *port;
+
+ QLIST_FOREACH(hub, &hubs, next) {
+ if (hub->id == hub_id) {
+ break;
+ }
+ }
+
+ if (!hub) {
+ hub = net_hub_new(hub_id);
+ }
+
+ port = net_hub_port_new(hub);
+ return &port->nc;
+}
+
+/**
+ * Print hub configuration
+ */
+void net_hub_info(Monitor *mon)
+{
+ NetHub *hub;
+ NetHubPort *port;
+
+ QLIST_FOREACH(hub, &hubs, next) {
+ monitor_printf(mon, "hub %u\n", hub->id);
+ QLIST_FOREACH(port, &hub->ports, next) {
+ monitor_printf(mon, " port %u peer %s\n", port->id,
+ port->nc.peer ? port->nc.peer->name : "<none>");
+ }
+ }
+}
+
+/**
+ * Get the hub id that a client is connected to
+ *
+ * @id Pointer for hub id output, may be NULL
+ */
+int net_hub_id_for_client(VLANClientState *nc, unsigned int *id)
+{
+ NetHub *hub;
+ NetHubPort *port;
+
+ QLIST_FOREACH(hub, &hubs, next) {
+ QLIST_FOREACH(port, &hub->ports, next) {
+ if (&port->nc == nc ||
+ (port->nc.peer && port->nc.peer == nc)) {
+ if (id) {
+ *id = hub->id;
+ }
+ return 0;
+ }
+ }
+ }
+ return -ENOENT;
+}
diff --git a/net/hub.h b/net/hub.h
new file mode 100644
index 0000000..3ca05dc
--- /dev/null
+++ b/net/hub.h
@@ -0,0 +1,23 @@
+/*
+ * Hub net client
+ *
+ * Copyright IBM, Corp. 2011
+ *
+ * Authors:
+ * Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ *
+ */
+
+#ifndef NET_HUB_H
+#define NET_HUB_H
+
+#include "qemu-common.h"
+
+VLANClientState *net_hub_add_port(unsigned int hub_id);
+void net_hub_info(Monitor *mon);
+int net_hub_id_for_client(VLANClientState *nc, unsigned int *id);
+
+#endif /* NET_HUB_H */
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 02/12] net: Use hubs for the vlan feature
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 01/12] net: Add a hub net client zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 03/12] net: Look up 'vlan' net clients using hubs zwu.kernel
` (9 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Stop using the special-case vlan code in net.c. Instead use the hub net
client to implement the vlan feature. The next patch will remove vlan
code from net.c completely.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
net.c | 46 +++++++++++++++++++++++++---------------------
net/dump.c | 20 ++++++++++++++------
net/dump.h | 2 +-
net/slirp.c | 8 ++++----
net/slirp.h | 2 +-
net/socket.c | 48 ++++++++++++++++++++++++++----------------------
net/socket.h | 2 +-
net/tap-win32.c | 9 +++++----
net/tap.c | 7 ++++---
net/tap.h | 3 ++-
net/vde.c | 9 +++++----
net/vde.h | 3 ++-
12 files changed, 90 insertions(+), 69 deletions(-)
diff --git a/net.c b/net.c
index c34474f..4a71f3d 100644
--- a/net.c
+++ b/net.c
@@ -25,6 +25,7 @@
#include "config-host.h"
+#include "net/hub.h"
#include "net/tap.h"
#include "net/socket.h"
#include "net/dump.h"
@@ -153,23 +154,25 @@ void qemu_macaddr_default_if_unset(MACAddr *macaddr)
macaddr->a[5] = 0x56 + index++;
}
+/**
+ * Generate a name for net client
+ *
+ * Only net clients created with the legacy -net option need this. Naming is
+ * mandatory for net clients created with -netdev.
+ */
static char *assign_name(VLANClientState *vc1, const char *model)
{
- VLANState *vlan;
VLANClientState *vc;
char buf[256];
int id = 0;
- QTAILQ_FOREACH(vlan, &vlans, next) {
- QTAILQ_FOREACH(vc, &vlan->clients, next) {
- if (vc != vc1 && strcmp(vc->model, model) == 0) {
- id++;
- }
- }
- }
-
QTAILQ_FOREACH(vc, &non_vlan_clients, next) {
- if (vc != vc1 && strcmp(vc->model, model) == 0) {
+ if (vc == vc1) {
+ continue;
+ }
+ /* For compatibility only bump id for net clients on a vlan */
+ if (strcmp(vc->model, model) == 0 &&
+ net_hub_id_for_client(vc, NULL) == 0) {
id++;
}
}
@@ -748,7 +751,7 @@ int net_handle_fd_param(Monitor *mon, const char *param)
static int net_init_nic(QemuOpts *opts,
Monitor *mon,
const char *name,
- VLANState *vlan)
+ VLANClientState *peer)
{
int idx;
NICInfo *nd;
@@ -771,8 +774,8 @@ static int net_init_nic(QemuOpts *opts,
return -1;
}
} else {
- assert(vlan);
- nd->vlan = vlan;
+ assert(peer);
+ nd->netdev = peer;
}
if (name) {
nd->name = g_strdup(name);
@@ -820,17 +823,17 @@ static int net_init_nic(QemuOpts *opts,
.help = "identifier for monitor commands", \
}
-typedef int (*net_client_init_func)(QemuOpts *opts,
- Monitor *mon,
- const char *name,
- VLANState *vlan);
+typedef int NetClientInitFunc(QemuOpts *opts,
+ Monitor *mon,
+ const char *name,
+ VLANClientState *peer);
/* magic number, but compiler will warn if too small */
#define NET_MAX_DESC 20
static const struct {
const char *type;
- net_client_init_func init;
+ NetClientInitFunc *init;
QemuOptDesc desc[NET_MAX_DESC];
} net_client_types[NET_CLIENT_TYPE_MAX] = {
[NET_CLIENT_TYPE_NONE] = {
@@ -1136,7 +1139,7 @@ int net_client_init(Monitor *mon, QemuOpts *opts, int is_netdev)
for (i = 0; i < NET_CLIENT_TYPE_MAX; i++) {
if (net_client_types[i].type != NULL &&
!strcmp(net_client_types[i].type, type)) {
- VLANState *vlan = NULL;
+ VLANClientState *peer = NULL;
int ret;
if (qemu_opts_validate(opts, &net_client_types[i].desc[0]) == -1) {
@@ -1147,12 +1150,12 @@ int net_client_init(Monitor *mon, QemuOpts *opts, int is_netdev)
* netdev= parameter. */
if (!(is_netdev ||
(strcmp(type, "nic") == 0 && qemu_opt_get(opts, "netdev")))) {
- vlan = qemu_find_vlan(qemu_opt_get_number(opts, "vlan", 0), 1);
+ peer = net_hub_add_port(qemu_opt_get_number(opts, "vlan", 0));
}
ret = 0;
if (net_client_types[i].init) {
- ret = net_client_types[i].init(opts, mon, name, vlan);
+ ret = net_client_types[i].init(opts, mon, name, peer);
if (ret < 0) {
/* TODO push error reporting into init() methods */
qerror_report(QERR_DEVICE_INIT_FAILED, type);
@@ -1297,6 +1300,7 @@ void do_info_network(Monitor *mon)
print_net_client(mon, peer);
}
}
+ net_hub_info(mon);
}
void qmp_set_link(const char *name, bool up, Error **errp)
diff --git a/net/dump.c b/net/dump.c
index 4b48d48..37cec3c 100644
--- a/net/dump.c
+++ b/net/dump.c
@@ -27,6 +27,7 @@
#include "qemu-error.h"
#include "qemu-log.h"
#include "qemu-timer.h"
+#include "hub.h"
typedef struct DumpState {
VLANClientState nc;
@@ -99,7 +100,7 @@ static NetClientInfo net_dump_info = {
.cleanup = dump_cleanup,
};
-static int net_dump_init(VLANState *vlan, const char *device,
+static int net_dump_init(VLANClientState *peer, const char *device,
const char *name, const char *filename, int len)
{
struct pcap_file_hdr hdr;
@@ -128,7 +129,7 @@ static int net_dump_init(VLANState *vlan, const char *device,
return -1;
}
- nc = qemu_new_net_client(&net_dump_info, vlan, NULL, device, name);
+ nc = qemu_new_net_client(&net_dump_info, NULL, peer, device, name);
snprintf(nc->info_str, sizeof(nc->info_str),
"dump to %s (len=%d)", filename, len);
@@ -144,21 +145,28 @@ static int net_dump_init(VLANState *vlan, const char *device,
return 0;
}
-int net_init_dump(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan)
+int net_init_dump(QemuOpts *opts, Monitor *mon, const char *name,
+ VLANClientState *peer)
{
int len;
const char *file;
char def_file[128];
- assert(vlan);
+ assert(peer);
file = qemu_opt_get(opts, "file");
if (!file) {
- snprintf(def_file, sizeof(def_file), "qemu-vlan%d.pcap", vlan->id);
+ unsigned int id;
+ int ret;
+
+ ret = net_hub_id_for_client(peer, &id);
+ assert(ret == 0); /* peer must be on a hub */
+
+ snprintf(def_file, sizeof(def_file), "qemu-vlan%u.pcap", id);
file = def_file;
}
len = qemu_opt_get_size(opts, "len", 65536);
- return net_dump_init(vlan, "dump", name, file, len);
+ return net_dump_init(peer, "dump", name, file, len);
}
diff --git a/net/dump.h b/net/dump.h
index fdc91ad..408c652 100644
--- a/net/dump.h
+++ b/net/dump.h
@@ -28,6 +28,6 @@
#include "qemu-common.h"
int net_init_dump(QemuOpts *opts, Monitor *mon,
- const char *name, VLANState *vlan);
+ const char *name, VLANClientState *peer);
#endif /* QEMU_NET_DUMP_H */
diff --git a/net/slirp.c b/net/slirp.c
index 18e07ba..34835fa 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -134,7 +134,7 @@ static NetClientInfo net_slirp_info = {
.cleanup = net_slirp_cleanup,
};
-static int net_slirp_init(VLANState *vlan, const char *model,
+static int net_slirp_init(VLANClientState *peer, const char *model,
const char *name, int restricted,
const char *vnetwork, const char *vhost,
const char *vhostname, const char *tftp_export,
@@ -237,7 +237,7 @@ static int net_slirp_init(VLANState *vlan, const char *model,
}
#endif
- nc = qemu_new_net_client(&net_slirp_info, vlan, NULL, model, name);
+ nc = qemu_new_net_client(&net_slirp_info, NULL, peer, model, name);
snprintf(nc->info_str, sizeof(nc->info_str),
"net=%s,restrict=%s", inet_ntoa(net),
@@ -678,7 +678,7 @@ static int net_init_slirp_configs(const char *name, const char *value, void *opa
int net_init_slirp(QemuOpts *opts,
Monitor *mon,
const char *name,
- VLANState *vlan)
+ VLANClientState *peer)
{
struct slirp_config_str *config;
const char *vhost;
@@ -735,7 +735,7 @@ int net_init_slirp(QemuOpts *opts,
qemu_opt_foreach(opts, net_init_slirp_configs, NULL, 0);
- ret = net_slirp_init(vlan, "user", name, restricted, vnet, vhost,
+ ret = net_slirp_init(peer, "user", name, restricted, vnet, vhost,
vhostname, tftp_export, bootfile, vdhcp_start,
vnamesrv, smb_export, vsmbsrv);
diff --git a/net/slirp.h b/net/slirp.h
index c17de8e..32041cb 100644
--- a/net/slirp.h
+++ b/net/slirp.h
@@ -33,7 +33,7 @@
int net_init_slirp(QemuOpts *opts,
Monitor *mon,
const char *name,
- VLANState *vlan);
+ VLANClientState *peer);
void net_slirp_hostfwd_add(Monitor *mon, const QDict *qdict);
void net_slirp_hostfwd_remove(Monitor *mon, const QDict *qdict);
diff --git a/net/socket.c b/net/socket.c
index 0bcf229..ed28cbd 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -43,7 +43,7 @@ typedef struct NetSocketState {
} NetSocketState;
typedef struct NetSocketListenState {
- VLANState *vlan;
+ VLANClientState *peer;
char *model;
char *name;
int fd;
@@ -244,7 +244,7 @@ static NetClientInfo net_dgram_socket_info = {
.cleanup = net_socket_cleanup,
};
-static NetSocketState *net_socket_fd_init_dgram(VLANState *vlan,
+static NetSocketState *net_socket_fd_init_dgram(VLANClientState *peer,
const char *model,
const char *name,
int fd, int is_connected)
@@ -286,7 +286,7 @@ static NetSocketState *net_socket_fd_init_dgram(VLANState *vlan,
}
}
- nc = qemu_new_net_client(&net_dgram_socket_info, vlan, NULL, model, name);
+ nc = qemu_new_net_client(&net_dgram_socket_info, NULL, peer, model, name);
snprintf(nc->info_str, sizeof(nc->info_str),
"socket: fd=%d (%s mcast=%s:%d)",
@@ -322,7 +322,7 @@ static NetClientInfo net_socket_info = {
.cleanup = net_socket_cleanup,
};
-static NetSocketState *net_socket_fd_init_stream(VLANState *vlan,
+static NetSocketState *net_socket_fd_init_stream(VLANClientState *peer,
const char *model,
const char *name,
int fd, int is_connected)
@@ -330,7 +330,7 @@ static NetSocketState *net_socket_fd_init_stream(VLANState *vlan,
VLANClientState *nc;
NetSocketState *s;
- nc = qemu_new_net_client(&net_socket_info, vlan, NULL, model, name);
+ nc = qemu_new_net_client(&net_socket_info, NULL, peer, model, name);
snprintf(nc->info_str, sizeof(nc->info_str), "socket: fd=%d", fd);
@@ -346,7 +346,7 @@ static NetSocketState *net_socket_fd_init_stream(VLANState *vlan,
return s;
}
-static NetSocketState *net_socket_fd_init(VLANState *vlan,
+static NetSocketState *net_socket_fd_init(VLANClientState *peer,
const char *model, const char *name,
int fd, int is_connected)
{
@@ -361,13 +361,13 @@ static NetSocketState *net_socket_fd_init(VLANState *vlan,
}
switch(so_type) {
case SOCK_DGRAM:
- return net_socket_fd_init_dgram(vlan, model, name, fd, is_connected);
+ return net_socket_fd_init_dgram(peer, model, name, fd, is_connected);
case SOCK_STREAM:
- return net_socket_fd_init_stream(vlan, model, name, fd, is_connected);
+ return net_socket_fd_init_stream(peer, model, name, fd, is_connected);
default:
/* who knows ... this could be a eg. a pty, do warn and continue as stream */
fprintf(stderr, "qemu: warning: socket type=%d for fd=%d is not SOCK_DGRAM or SOCK_STREAM\n", so_type, fd);
- return net_socket_fd_init_stream(vlan, model, name, fd, is_connected);
+ return net_socket_fd_init_stream(peer, model, name, fd, is_connected);
}
return NULL;
}
@@ -389,15 +389,17 @@ static void net_socket_accept(void *opaque)
break;
}
}
- s1 = net_socket_fd_init(s->vlan, s->model, s->name, fd, 1);
- if (s1) {
+ s1 = net_socket_fd_init(s->peer, s->model, s->name, fd, 1);
+ if (!s1) {
+ closesocket(fd);
+ } else {
snprintf(s1->nc.info_str, sizeof(s1->nc.info_str),
"socket: connection from %s:%d",
inet_ntoa(saddr.sin_addr), ntohs(saddr.sin_port));
}
}
-static int net_socket_listen_init(VLANState *vlan,
+static int net_socket_listen_init(VLANClientState *peer,
const char *model,
const char *name,
const char *host_str)
@@ -437,7 +439,7 @@ static int net_socket_listen_init(VLANState *vlan,
closesocket(fd);
return -1;
}
- s->vlan = vlan;
+ s->peer = peer;
s->model = g_strdup(model);
s->name = name ? g_strdup(name) : NULL;
s->fd = fd;
@@ -445,7 +447,7 @@ static int net_socket_listen_init(VLANState *vlan,
return 0;
}
-static int net_socket_connect_init(VLANState *vlan,
+static int net_socket_connect_init(VLANClientState *peer,
const char *model,
const char *name,
const char *host_str)
@@ -486,7 +488,7 @@ static int net_socket_connect_init(VLANState *vlan,
break;
}
}
- s = net_socket_fd_init(vlan, model, name, fd, connected);
+ s = net_socket_fd_init(peer, model, name, fd, connected);
if (!s)
return -1;
snprintf(s->nc.info_str, sizeof(s->nc.info_str),
@@ -495,7 +497,7 @@ static int net_socket_connect_init(VLANState *vlan,
return 0;
}
-static int net_socket_mcast_init(VLANState *vlan,
+static int net_socket_mcast_init(VLANClientState *peer,
const char *model,
const char *name,
const char *host_str,
@@ -521,7 +523,7 @@ static int net_socket_mcast_init(VLANState *vlan,
if (fd < 0)
return -1;
- s = net_socket_fd_init(vlan, model, name, fd, 0);
+ s = net_socket_fd_init(peer, model, name, fd, 0);
if (!s)
return -1;
@@ -588,7 +590,7 @@ static int net_socket_udp_init(VLANState *vlan,
int net_init_socket(QemuOpts *opts,
Monitor *mon,
const char *name,
- VLANState *vlan)
+ VLANClientState *peer)
{
if (qemu_opt_get(opts, "fd")) {
int fd;
@@ -606,7 +608,8 @@ int net_init_socket(QemuOpts *opts,
return -1;
}
- if (!net_socket_fd_init(vlan, "socket", name, fd, 1)) {
+ if (!net_socket_fd_init(peer, "socket", name, fd, 1)) {
+ close(fd);
return -1;
}
} else if (qemu_opt_get(opts, "listen")) {
@@ -622,7 +625,7 @@ int net_init_socket(QemuOpts *opts,
listen = qemu_opt_get(opts, "listen");
- if (net_socket_listen_init(vlan, "socket", name, listen) == -1) {
+ if (net_socket_listen_init(peer, "socket", name, listen) == -1) {
return -1;
}
} else if (qemu_opt_get(opts, "connect")) {
@@ -638,7 +641,7 @@ int net_init_socket(QemuOpts *opts,
connect = qemu_opt_get(opts, "connect");
- if (net_socket_connect_init(vlan, "socket", name, connect) == -1) {
+ if (net_socket_connect_init(peer, "socket", name, connect) == -1) {
return -1;
}
} else if (qemu_opt_get(opts, "mcast")) {
@@ -654,7 +657,8 @@ int net_init_socket(QemuOpts *opts,
mcast = qemu_opt_get(opts, "mcast");
localaddr = qemu_opt_get(opts, "localaddr");
- if (net_socket_mcast_init(vlan, "socket", name, mcast, localaddr) == -1) {
+ if (net_socket_mcast_init(peer, "socket", name,
+ mcast, localaddr) == -1) {
return -1;
}
} else if (qemu_opt_get(opts, "udp")) {
diff --git a/net/socket.h b/net/socket.h
index ea46f02..f6172bc 100644
--- a/net/socket.h
+++ b/net/socket.h
@@ -28,6 +28,6 @@
#include "qemu-common.h"
int net_init_socket(QemuOpts *opts, Monitor *mon,
- const char *name, VLANState *vlan);
+ const char *name, VLANClientState *peer);
#endif /* QEMU_NET_SOCKET_H */
diff --git a/net/tap-win32.c b/net/tap-win32.c
index 596132e..2436c26 100644
--- a/net/tap-win32.c
+++ b/net/tap-win32.c
@@ -673,7 +673,7 @@ static NetClientInfo net_tap_win32_info = {
.cleanup = tap_cleanup,
};
-static int tap_win32_init(VLANState *vlan, const char *model,
+static int tap_win32_init(VLANClientState *peer, const char *model,
const char *name, const char *ifname)
{
VLANClientState *nc;
@@ -685,7 +685,7 @@ static int tap_win32_init(VLANState *vlan, const char *model,
return -1;
}
- nc = qemu_new_net_client(&net_tap_win32_info, vlan, NULL, model, name);
+ nc = qemu_new_net_client(&net_tap_win32_info, NULL, peer, model, name);
s = DO_UPCAST(TAPState, nc, nc);
@@ -699,7 +699,8 @@ static int tap_win32_init(VLANState *vlan, const char *model,
return 0;
}
-int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan)
+int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name,
+ VLANClientState *peer)
{
const char *ifname;
@@ -710,7 +711,7 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan
return -1;
}
- if (tap_win32_init(vlan, "tap", name, ifname) == -1) {
+ if (tap_win32_init(peer, "tap", name, ifname) == -1) {
return -1;
}
diff --git a/net/tap.c b/net/tap.c
index f240028..8855c57 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -321,7 +321,7 @@ static NetClientInfo net_tap_info = {
.cleanup = tap_cleanup,
};
-static TAPState *net_tap_fd_init(VLANState *vlan,
+static TAPState *net_tap_fd_init(VLANClientState *peer,
const char *model,
const char *name,
int fd,
@@ -330,7 +330,7 @@ static TAPState *net_tap_fd_init(VLANState *vlan,
VLANClientState *nc;
TAPState *s;
- nc = qemu_new_net_client(&net_tap_info, vlan, NULL, model, name);
+ nc = qemu_new_net_client(&net_tap_info, NULL, peer, model, name);
s = DO_UPCAST(TAPState, nc, nc);
@@ -583,7 +583,8 @@ static int net_tap_init(QemuOpts *opts, int *vnet_hdr)
return fd;
}
-int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan)
+int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name,
+ VLANClientState *peer)
{
TAPState *s;
int fd, vnet_hdr = 0;
diff --git a/net/tap.h b/net/tap.h
index 56c591f..c194684 100644
--- a/net/tap.h
+++ b/net/tap.h
@@ -32,7 +32,8 @@
#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup"
#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
-int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan);
+int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name,
+ VLANClientState *peer);
int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required);
diff --git a/net/vde.c b/net/vde.c
index ac48ab2..d998daf 100644
--- a/net/vde.c
+++ b/net/vde.c
@@ -75,7 +75,7 @@ static NetClientInfo net_vde_info = {
.cleanup = vde_cleanup,
};
-static int net_vde_init(VLANState *vlan, const char *model,
+static int net_vde_init(VLANClientState *peer, const char *model,
const char *name, const char *sock,
int port, const char *group, int mode)
{
@@ -96,7 +96,7 @@ static int net_vde_init(VLANState *vlan, const char *model,
return -1;
}
- nc = qemu_new_net_client(&net_vde_info, vlan, NULL, model, name);
+ nc = qemu_new_net_client(&net_vde_info, NULL, peer, model, name);
snprintf(nc->info_str, sizeof(nc->info_str), "sock=%s,fd=%d",
sock, vde_datafd(vde));
@@ -110,7 +110,8 @@ static int net_vde_init(VLANState *vlan, const char *model,
return 0;
}
-int net_init_vde(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan)
+int net_init_vde(QemuOpts *opts, Monitor *mon, const char *name,
+ VLANClientState *peer)
{
const char *sock;
const char *group;
@@ -122,7 +123,7 @@ int net_init_vde(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan
port = qemu_opt_get_number(opts, "port", 0);
mode = qemu_opt_get_number(opts, "mode", 0700);
- if (net_vde_init(vlan, "vde", name, sock, port, group, mode) == -1) {
+ if (net_vde_init(peer, "vde", name, sock, port, group, mode) == -1) {
return -1;
}
diff --git a/net/vde.h b/net/vde.h
index 3e6ca3e..69c4e92 100644
--- a/net/vde.h
+++ b/net/vde.h
@@ -29,7 +29,8 @@
#ifdef CONFIG_VDE
-int net_init_vde(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan);
+int net_init_vde(QemuOpts *opts, Monitor *mon, const char *name,
+ VLANClientState *peer);
#endif /* CONFIG_VDE */
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 03/12] net: Look up 'vlan' net clients using hubs
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 01/12] net: Add a hub net client zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 02/12] net: Use hubs for the vlan feature zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 04/12] hub: Check that hubs are configured correctly zwu.kernel
` (8 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
net.c | 28 +---------------------------
net/hub.c | 24 ++++++++++++++++++++++++
net/hub.h | 2 ++
net/slirp.c | 5 +++--
4 files changed, 30 insertions(+), 29 deletions(-)
diff --git a/net.c b/net.c
index 4a71f3d..181080e 100644
--- a/net.c
+++ b/net.c
@@ -312,32 +312,6 @@ void qemu_del_vlan_client(VLANClientState *vc)
qemu_free_vlan_client(vc);
}
-VLANClientState *
-qemu_find_vlan_client_by_name(Monitor *mon, int vlan_id,
- const char *client_str)
-{
- VLANState *vlan;
- VLANClientState *vc;
-
- vlan = qemu_find_vlan(vlan_id, 0);
- if (!vlan) {
- monitor_printf(mon, "unknown VLAN %d\n", vlan_id);
- return NULL;
- }
-
- QTAILQ_FOREACH(vc, &vlan->clients, next) {
- if (!strcmp(vc->name, client_str)) {
- break;
- }
- }
- if (!vc) {
- monitor_printf(mon, "can't find device %s on VLAN %d\n",
- client_str, vlan_id);
- }
-
- return vc;
-}
-
void qemu_foreach_nic(qemu_nic_foreach func, void *opaque)
{
VLANClientState *nc;
@@ -1223,7 +1197,7 @@ void net_host_device_remove(Monitor *mon, const QDict *qdict)
int vlan_id = qdict_get_int(qdict, "vlan_id");
const char *device = qdict_get_str(qdict, "device");
- vc = qemu_find_vlan_client_by_name(mon, vlan_id, device);
+ vc = net_hub_find_client_by_name(vlan_id, device);
if (!vc) {
return;
}
diff --git a/net/hub.c b/net/hub.c
index b3ac2ef..1dc23f5 100644
--- a/net/hub.c
+++ b/net/hub.c
@@ -163,6 +163,30 @@ VLANClientState *net_hub_add_port(unsigned int hub_id)
}
/**
+ * Find a specific client on a hub
+ */
+VLANClientState *net_hub_find_client_by_name(unsigned int hub_id,
+ const char *name)
+{
+ NetHub *hub;
+ NetHubPort *port;
+ VLANClientState *peer;
+
+ QLIST_FOREACH(hub, &hubs, next) {
+ if (hub->id == hub_id) {
+ QLIST_FOREACH(port, &hub->ports, next) {
+ peer = port->nc.peer;
+
+ if (peer && strcmp(peer->name, name) == 0) {
+ return peer;
+ }
+ }
+ }
+ }
+ return NULL;
+}
+
+/**
* Print hub configuration
*/
void net_hub_info(Monitor *mon)
diff --git a/net/hub.h b/net/hub.h
index 3ca05dc..60d4cae 100644
--- a/net/hub.h
+++ b/net/hub.h
@@ -17,6 +17,8 @@
#include "qemu-common.h"
VLANClientState *net_hub_add_port(unsigned int hub_id);
+VLANClientState *net_hub_find_client_by_name(unsigned int hub_id,
+ const char *name);
void net_hub_info(Monitor *mon);
int net_hub_id_for_client(VLANClientState *nc, unsigned int *id);
diff --git a/net/slirp.c b/net/slirp.c
index 34835fa..eb5f455 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -29,6 +29,7 @@
#include <sys/wait.h>
#endif
#include "net.h"
+#include "net/hub.h"
#include "monitor.h"
#include "qemu_socket.h"
#include "slirp/libslirp.h"
@@ -283,7 +284,7 @@ static SlirpState *slirp_lookup(Monitor *mon, const char *vlan,
if (vlan) {
VLANClientState *nc;
- nc = qemu_find_vlan_client_by_name(mon, strtol(vlan, NULL, 0), stack);
+ nc = net_hub_find_client_by_name(strtol(vlan, NULL, 0), stack);
if (!nc) {
return NULL;
}
@@ -647,7 +648,7 @@ void do_info_usernet(Monitor *mon)
QTAILQ_FOREACH(s, &slirp_stacks, entry) {
monitor_printf(mon, "VLAN %d (%s):\n",
- s->nc.vlan ? s->nc.vlan->id : -1,
+ -1, /* TODO */
s->nc.name);
slirp_connection_info(s->slirp, mon);
}
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 04/12] hub: Check that hubs are configured correctly
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
` (2 preceding siblings ...)
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 03/12] net: Look up 'vlan' net clients using hubs zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 05/12] net: Drop vlan argument to qemu_new_net_client() zwu.kernel
` (7 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Checks can be performed to make sure that hubs have at least one NIC and
one host device, warning the user if this is not the case.
Configurations which do not meet this rule tend to be broken but just
emit a warning. This patch preserves compatibility with the checks
performed by net core on vlans.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
net.c | 25 +------------------------
net/hub.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
net/hub.h | 1 +
3 files changed, 47 insertions(+), 24 deletions(-)
diff --git a/net.c b/net.c
index 181080e..67b09e4 100644
--- a/net.c
+++ b/net.c
@@ -1337,7 +1337,6 @@ void net_cleanup(void)
void net_check_clients(void)
{
- VLANState *vlan;
VLANClientState *vc;
int i;
@@ -1353,30 +1352,8 @@ void net_check_clients(void)
return;
}
- QTAILQ_FOREACH(vlan, &vlans, next) {
- int has_nic = 0, has_host_dev = 0;
+ net_hub_check_clients();
- QTAILQ_FOREACH(vc, &vlan->clients, next) {
- switch (vc->info->type) {
- case NET_CLIENT_TYPE_NIC:
- has_nic = 1;
- break;
- case NET_CLIENT_TYPE_USER:
- case NET_CLIENT_TYPE_TAP:
- case NET_CLIENT_TYPE_SOCKET:
- case NET_CLIENT_TYPE_VDE:
- has_host_dev = 1;
- break;
- default: ;
- }
- }
- if (has_host_dev && !has_nic)
- fprintf(stderr, "Warning: vlan %d with no nics\n", vlan->id);
- if (has_nic && !has_host_dev)
- fprintf(stderr,
- "Warning: vlan %d is not connected to host network\n",
- vlan->id);
- }
QTAILQ_FOREACH(vc, &non_vlan_clients, next) {
if (!vc->peer) {
fprintf(stderr, "Warning: %s %s has no peer\n",
diff --git a/net/hub.c b/net/hub.c
index 1dc23f5..88270b0 100644
--- a/net/hub.c
+++ b/net/hub.c
@@ -226,3 +226,48 @@ int net_hub_id_for_client(VLANClientState *nc, unsigned int *id)
}
return -ENOENT;
}
+
+/**
+ * Warn if hub configurations are likely wrong
+ */
+void net_hub_check_clients(void)
+{
+ NetHub *hub;
+ NetHubPort *port;
+ VLANClientState *peer;
+
+ QLIST_FOREACH(hub, &hubs, next) {
+ int has_nic = 0, has_host_dev = 0;
+
+ QLIST_FOREACH(port, &hub->ports, next) {
+ peer = port->nc.peer;
+ if (!peer) {
+ fprintf(stderr, "Warning: hub port %s has no peer\n",
+ port->nc.name);
+ continue;
+ }
+
+ switch (peer->info->type) {
+ case NET_CLIENT_TYPE_NIC:
+ has_nic = 1;
+ break;
+ case NET_CLIENT_TYPE_USER:
+ case NET_CLIENT_TYPE_TAP:
+ case NET_CLIENT_TYPE_SOCKET:
+ case NET_CLIENT_TYPE_VDE:
+ has_host_dev = 1;
+ break;
+ default:
+ break;
+ }
+ }
+ if (has_host_dev && !has_nic) {
+ fprintf(stderr, "Warning: vlan %u with no nics\n", hub->id);
+ }
+ if (has_nic && !has_host_dev) {
+ fprintf(stderr,
+ "Warning: vlan %u is not connected to host network\n",
+ hub->id);
+ }
+ }
+}
diff --git a/net/hub.h b/net/hub.h
index 60d4cae..caa3b16 100644
--- a/net/hub.h
+++ b/net/hub.h
@@ -21,5 +21,6 @@ VLANClientState *net_hub_find_client_by_name(unsigned int hub_id,
const char *name);
void net_hub_info(Monitor *mon);
int net_hub_id_for_client(VLANClientState *nc, unsigned int *id);
+void net_hub_check_clients(void);
#endif /* NET_HUB_H */
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 05/12] net: Drop vlan argument to qemu_new_net_client()
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
` (3 preceding siblings ...)
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 04/12] hub: Check that hubs are configured correctly zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 06/12] net: Remove vlan qdev property zwu.kernel
` (6 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Since hubs are now used to implement the 'vlan' feature and the vlan
argument is always NULL, remove the argument entirely and update all net
clients that use qemu_new_net_client().
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
net.c | 27 ++++++++++-----------------
net.h | 1 -
net/dump.c | 2 +-
net/hub.c | 2 +-
net/slirp.c | 2 +-
net/socket.c | 4 ++--
net/tap-win32.c | 2 +-
net/tap.c | 2 +-
net/vde.c | 2 +-
9 files changed, 18 insertions(+), 26 deletions(-)
diff --git a/net.c b/net.c
index 67b09e4..b287ce8 100644
--- a/net.c
+++ b/net.c
@@ -194,7 +194,6 @@ static ssize_t qemu_deliver_packet_iov(VLANClientState *sender,
void *opaque);
VLANClientState *qemu_new_net_client(NetClientInfo *info,
- VLANState *vlan,
VLANClientState *peer,
const char *model,
const char *name)
@@ -213,22 +212,16 @@ VLANClientState *qemu_new_net_client(NetClientInfo *info,
vc->name = assign_name(vc, model);
}
- if (vlan) {
- assert(!peer);
- vc->vlan = vlan;
- QTAILQ_INSERT_TAIL(&vc->vlan->clients, vc, next);
- } else {
- if (peer) {
- assert(!peer->peer);
- vc->peer = peer;
- peer->peer = vc;
- }
- QTAILQ_INSERT_TAIL(&non_vlan_clients, vc, next);
-
- vc->send_queue = qemu_new_net_queue(qemu_deliver_packet,
- qemu_deliver_packet_iov,
- vc);
+ if (peer) {
+ assert(!peer->peer);
+ vc->peer = peer;
+ peer->peer = vc;
}
+ QTAILQ_INSERT_TAIL(&non_vlan_clients, vc, next);
+
+ vc->send_queue = qemu_new_net_queue(qemu_deliver_packet,
+ qemu_deliver_packet_iov,
+ vc);
return vc;
}
@@ -245,7 +238,7 @@ NICState *qemu_new_nic(NetClientInfo *info,
assert(info->type == NET_CLIENT_TYPE_NIC);
assert(info->size >= sizeof(NICState));
- nc = qemu_new_net_client(info, conf->vlan, conf->peer, model, name);
+ nc = qemu_new_net_client(info, conf->peer, model, name);
nic = DO_UPCAST(NICState, nc, nc);
nic->conf = conf;
diff --git a/net.h b/net.h
index 319c3bb..8502a8a 100644
--- a/net.h
+++ b/net.h
@@ -92,7 +92,6 @@ struct VLANState {
VLANState *qemu_find_vlan(int id, int allocate);
VLANClientState *qemu_find_netdev(const char *id);
VLANClientState *qemu_new_net_client(NetClientInfo *info,
- VLANState *vlan,
VLANClientState *peer,
const char *model,
const char *name);
diff --git a/net/dump.c b/net/dump.c
index 37cec3c..621f4e7 100644
--- a/net/dump.c
+++ b/net/dump.c
@@ -129,7 +129,7 @@ static int net_dump_init(VLANClientState *peer, const char *device,
return -1;
}
- nc = qemu_new_net_client(&net_dump_info, NULL, peer, device, name);
+ nc = qemu_new_net_client(&net_dump_info, peer, device, name);
snprintf(nc->info_str, sizeof(nc->info_str),
"dump to %s (len=%d)", filename, len);
diff --git a/net/hub.c b/net/hub.c
index 88270b0..fc305ac 100644
--- a/net/hub.c
+++ b/net/hub.c
@@ -128,7 +128,7 @@ static NetHubPort *net_hub_port_new(NetHub *hub)
snprintf(name, sizeof name, "hub%uport%u", hub->id, id);
- nc = qemu_new_net_client(&net_hub_port_info, NULL, NULL, "hub", name);
+ nc = qemu_new_net_client(&net_hub_port_info, NULL, "hub", name);
port = DO_UPCAST(NetHubPort, nc, nc);
port->id = id;
port->hub = hub;
diff --git a/net/slirp.c b/net/slirp.c
index eb5f455..31c4d34 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -238,7 +238,7 @@ static int net_slirp_init(VLANClientState *peer, const char *model,
}
#endif
- nc = qemu_new_net_client(&net_slirp_info, NULL, peer, model, name);
+ nc = qemu_new_net_client(&net_slirp_info, peer, model, name);
snprintf(nc->info_str, sizeof(nc->info_str),
"net=%s,restrict=%s", inet_ntoa(net),
diff --git a/net/socket.c b/net/socket.c
index ed28cbd..bf7a793 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -286,7 +286,7 @@ static NetSocketState *net_socket_fd_init_dgram(VLANClientState *peer,
}
}
- nc = qemu_new_net_client(&net_dgram_socket_info, NULL, peer, model, name);
+ nc = qemu_new_net_client(&net_dgram_socket_info, peer, model, name);
snprintf(nc->info_str, sizeof(nc->info_str),
"socket: fd=%d (%s mcast=%s:%d)",
@@ -330,7 +330,7 @@ static NetSocketState *net_socket_fd_init_stream(VLANClientState *peer,
VLANClientState *nc;
NetSocketState *s;
- nc = qemu_new_net_client(&net_socket_info, NULL, peer, model, name);
+ nc = qemu_new_net_client(&net_socket_info, peer, model, name);
snprintf(nc->info_str, sizeof(nc->info_str), "socket: fd=%d", fd);
diff --git a/net/tap-win32.c b/net/tap-win32.c
index 2436c26..c1f90c7 100644
--- a/net/tap-win32.c
+++ b/net/tap-win32.c
@@ -685,7 +685,7 @@ static int tap_win32_init(VLANClientState *peer, const char *model,
return -1;
}
- nc = qemu_new_net_client(&net_tap_win32_info, NULL, peer, model, name);
+ nc = qemu_new_net_client(&net_tap_win32_info, peer, model, name);
s = DO_UPCAST(TAPState, nc, nc);
diff --git a/net/tap.c b/net/tap.c
index 8855c57..3a68d7e 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -330,7 +330,7 @@ static TAPState *net_tap_fd_init(VLANClientState *peer,
VLANClientState *nc;
TAPState *s;
- nc = qemu_new_net_client(&net_tap_info, NULL, peer, model, name);
+ nc = qemu_new_net_client(&net_tap_info, peer, model, name);
s = DO_UPCAST(TAPState, nc, nc);
diff --git a/net/vde.c b/net/vde.c
index d998daf..24d12d4 100644
--- a/net/vde.c
+++ b/net/vde.c
@@ -96,7 +96,7 @@ static int net_vde_init(VLANClientState *peer, const char *model,
return -1;
}
- nc = qemu_new_net_client(&net_vde_info, NULL, peer, model, name);
+ nc = qemu_new_net_client(&net_vde_info, peer, model, name);
snprintf(nc->info_str, sizeof(nc->info_str), "sock=%s,fd=%d",
sock, vde_datafd(vde));
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 06/12] net: Remove vlan qdev property
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
` (4 preceding siblings ...)
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 05/12] net: Drop vlan argument to qemu_new_net_client() zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 07/12] net: Remove vlan code from net.c zwu.kernel
` (5 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
The vlan feature is implemented using hubs and no longer uses
special-purpose VLANState structs that are accessible as qdev
properties.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
hw/qdev-properties.c | 72 --------------------------------------------------
hw/qdev.c | 2 -
hw/qdev.h | 4 ---
net.h | 3 --
4 files changed, 0 insertions(+), 81 deletions(-)
diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index 0423af1..d10e9f5 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -627,71 +627,6 @@ PropertyInfo qdev_prop_netdev = {
.set = set_netdev,
};
-/* --- vlan --- */
-
-static int print_vlan(DeviceState *dev, Property *prop, char *dest, size_t len)
-{
- VLANState **ptr = qdev_get_prop_ptr(dev, prop);
-
- if (*ptr) {
- return snprintf(dest, len, "%d", (*ptr)->id);
- } else {
- return snprintf(dest, len, "<null>");
- }
-}
-
-static void get_vlan(Object *obj, Visitor *v, void *opaque,
- const char *name, Error **errp)
-{
- DeviceState *dev = DEVICE(obj);
- Property *prop = opaque;
- VLANState **ptr = qdev_get_prop_ptr(dev, prop);
- int64_t id;
-
- id = *ptr ? (*ptr)->id : -1;
- visit_type_int(v, &id, name, errp);
-}
-
-static void set_vlan(Object *obj, Visitor *v, void *opaque,
- const char *name, Error **errp)
-{
- DeviceState *dev = DEVICE(obj);
- Property *prop = opaque;
- VLANState **ptr = qdev_get_prop_ptr(dev, prop);
- Error *local_err = NULL;
- int64_t id;
- VLANState *vlan;
-
- if (dev->state != DEV_STATE_CREATED) {
- error_set(errp, QERR_PERMISSION_DENIED);
- return;
- }
-
- visit_type_int(v, &id, name, &local_err);
- if (local_err) {
- error_propagate(errp, local_err);
- return;
- }
- if (id == -1) {
- *ptr = NULL;
- return;
- }
- vlan = qemu_find_vlan(id, 1);
- if (!vlan) {
- error_set(errp, QERR_INVALID_PARAMETER_VALUE,
- name, prop->info->name);
- return;
- }
- *ptr = vlan;
-}
-
-PropertyInfo qdev_prop_vlan = {
- .name = "vlan",
- .print = print_vlan,
- .get = get_vlan,
- .set = set_vlan,
-};
-
/* --- pointer --- */
/* Not a proper property, just for dirty hacks. TODO Remove it! */
@@ -1047,13 +982,6 @@ void qdev_prop_set_netdev(DeviceState *dev, const char *name, VLANClientState *v
assert_no_error(errp);
}
-void qdev_prop_set_vlan(DeviceState *dev, const char *name, VLANState *value)
-{
- Error *errp = NULL;
- object_property_set_int(OBJECT(dev), value ? value->id : -1, name, &errp);
- assert_no_error(errp);
-}
-
void qdev_prop_set_macaddr(DeviceState *dev, const char *name, uint8_t *value)
{
Error *errp = NULL;
diff --git a/hw/qdev.c b/hw/qdev.c
index ee21d90..e040e2a 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -301,8 +301,6 @@ void qdev_connect_gpio_out(DeviceState * dev, int n, qemu_irq pin)
void qdev_set_nic_properties(DeviceState *dev, NICInfo *nd)
{
qdev_prop_set_macaddr(dev, "mac", nd->macaddr.a);
- if (nd->vlan)
- qdev_prop_set_vlan(dev, "vlan", nd->vlan);
if (nd->netdev)
qdev_prop_set_netdev(dev, "netdev", nd->netdev);
if (nd->nvectors != DEV_NVECTORS_UNSPECIFIED &&
diff --git a/hw/qdev.h b/hw/qdev.h
index 9cc3f98..d03bfb8 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -221,7 +221,6 @@ extern PropertyInfo qdev_prop_macaddr;
extern PropertyInfo qdev_prop_losttickpolicy;
extern PropertyInfo qdev_prop_drive;
extern PropertyInfo qdev_prop_netdev;
-extern PropertyInfo qdev_prop_vlan;
extern PropertyInfo qdev_prop_pci_devfn;
#define DEFINE_PROP(_name, _state, _field, _prop, _type) { \
@@ -275,8 +274,6 @@ extern PropertyInfo qdev_prop_pci_devfn;
DEFINE_PROP(_n, _s, _f, qdev_prop_string, char*)
#define DEFINE_PROP_NETDEV(_n, _s, _f) \
DEFINE_PROP(_n, _s, _f, qdev_prop_netdev, VLANClientState*)
-#define DEFINE_PROP_VLAN(_n, _s, _f) \
- DEFINE_PROP(_n, _s, _f, qdev_prop_vlan, VLANState*)
#define DEFINE_PROP_DRIVE(_n, _s, _f) \
DEFINE_PROP(_n, _s, _f, qdev_prop_drive, BlockDriverState *)
#define DEFINE_PROP_MACADDR(_n, _s, _f) \
@@ -301,7 +298,6 @@ void qdev_prop_set_uint64(DeviceState *dev, const char *name, uint64_t value);
void qdev_prop_set_string(DeviceState *dev, const char *name, char *value);
void qdev_prop_set_chr(DeviceState *dev, const char *name, CharDriverState *value);
void qdev_prop_set_netdev(DeviceState *dev, const char *name, VLANClientState *value);
-void qdev_prop_set_vlan(DeviceState *dev, const char *name, VLANState *value);
int qdev_prop_set_drive(DeviceState *dev, const char *name, BlockDriverState *value) QEMU_WARN_UNUSED_RESULT;
void qdev_prop_set_drive_nofail(DeviceState *dev, const char *name, BlockDriverState *value);
void qdev_prop_set_macaddr(DeviceState *dev, const char *name, uint8_t *value);
diff --git a/net.h b/net.h
index 8502a8a..a7a4bde 100644
--- a/net.h
+++ b/net.h
@@ -16,14 +16,12 @@ struct MACAddr {
typedef struct NICConf {
MACAddr macaddr;
- VLANState *vlan;
VLANClientState *peer;
int32_t bootindex;
} NICConf;
#define DEFINE_NIC_PROPERTIES(_state, _conf) \
DEFINE_PROP_MACADDR("mac", _state, _conf.macaddr), \
- DEFINE_PROP_VLAN("vlan", _state, _conf.vlan), \
DEFINE_PROP_NETDEV("netdev", _state, _conf.peer), \
DEFINE_PROP_INT32("bootindex", _state, _conf.bootindex, -1)
@@ -134,7 +132,6 @@ struct NICInfo {
char *model;
char *name;
char *devaddr;
- VLANState *vlan;
VLANClientState *netdev;
int used; /* is this slot in nd_table[] being used? */
int instantiated; /* does this NICInfo correspond to an instantiated NIC? */
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 07/12] net: Remove vlan code from net.c
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
` (5 preceding siblings ...)
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 06/12] net: Remove vlan qdev property zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 08/12] net: Remove VLANState zwu.kernel
` (4 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
The vlan implementation in net.c has been replaced by hubs so we can
remove the code.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
hw/xen_nic.c | 1 -
net.c | 108 ----------------------------------------------------------
net.h | 1 -
3 files changed, 0 insertions(+), 110 deletions(-)
diff --git a/hw/xen_nic.c b/hw/xen_nic.c
index 9a59bda..85526fe 100644
--- a/hw/xen_nic.c
+++ b/hw/xen_nic.c
@@ -328,7 +328,6 @@ static int net_init(struct XenDevice *xendev)
return -1;
}
- netdev->conf.vlan = qemu_find_vlan(netdev->xendev.dev, 1);
netdev->conf.peer = NULL;
netdev->nic = qemu_new_nic(&net_xen_info, &netdev->conf,
diff --git a/net.c b/net.c
index b287ce8..33b1d9a 100644
--- a/net.c
+++ b/net.c
@@ -388,50 +388,6 @@ static ssize_t qemu_deliver_packet(VLANClientState *sender,
return ret;
}
-static ssize_t qemu_vlan_deliver_packet(VLANClientState *sender,
- unsigned flags,
- const uint8_t *buf,
- size_t size,
- void *opaque)
-{
- VLANState *vlan = opaque;
- VLANClientState *vc;
- ssize_t ret = -1;
-
- QTAILQ_FOREACH(vc, &vlan->clients, next) {
- ssize_t len;
-
- if (vc == sender) {
- continue;
- }
-
- if (vc->link_down) {
- ret = size;
- continue;
- }
-
- if (vc->receive_disabled) {
- ret = 0;
- continue;
- }
-
- if (flags & QEMU_NET_PACKET_FLAG_RAW && vc->info->receive_raw) {
- len = vc->info->receive_raw(vc, buf, size);
- } else {
- len = vc->info->receive(vc, buf, size);
- }
-
- if (len == 0) {
- vc->receive_disabled = 1;
- }
-
- ret = (ret >= 0) ? ret : len;
-
- }
-
- return ret;
-}
-
void qemu_purge_queued_packets(VLANClientState *vc)
{
NetQueue *queue;
@@ -538,42 +494,6 @@ static ssize_t qemu_deliver_packet_iov(VLANClientState *sender,
}
}
-static ssize_t qemu_vlan_deliver_packet_iov(VLANClientState *sender,
- unsigned flags,
- const struct iovec *iov,
- int iovcnt,
- void *opaque)
-{
- VLANState *vlan = opaque;
- VLANClientState *vc;
- ssize_t ret = -1;
-
- QTAILQ_FOREACH(vc, &vlan->clients, next) {
- ssize_t len;
-
- if (vc == sender) {
- continue;
- }
-
- if (vc->link_down) {
- ret = iov_size(iov, iovcnt);
- continue;
- }
-
- assert(!(flags & QEMU_NET_PACKET_FLAG_RAW));
-
- if (vc->info->receive_iov) {
- len = vc->info->receive_iov(vc, iov, iovcnt);
- } else {
- len = vc_sendv_compat(vc, iov, iovcnt);
- }
-
- ret = (ret >= 0) ? ret : len;
- }
-
- return ret;
-}
-
ssize_t qemu_sendv_packet_async(VLANClientState *sender,
const struct iovec *iov, int iovcnt,
NetPacketSent *sent_cb)
@@ -601,34 +521,6 @@ qemu_sendv_packet(VLANClientState *vc, const struct iovec *iov, int iovcnt)
return qemu_sendv_packet_async(vc, iov, iovcnt, NULL);
}
-/* find or alloc a new VLAN */
-VLANState *qemu_find_vlan(int id, int allocate)
-{
- VLANState *vlan;
-
- QTAILQ_FOREACH(vlan, &vlans, next) {
- if (vlan->id == id) {
- return vlan;
- }
- }
-
- if (!allocate) {
- return NULL;
- }
-
- vlan = g_malloc0(sizeof(VLANState));
- vlan->id = id;
- QTAILQ_INIT(&vlan->clients);
-
- vlan->send_queue = qemu_new_net_queue(qemu_vlan_deliver_packet,
- qemu_vlan_deliver_packet_iov,
- vlan);
-
- QTAILQ_INSERT_TAIL(&vlans, vlan, next);
-
- return vlan;
-}
-
VLANClientState *qemu_find_netdev(const char *id)
{
VLANClientState *vc;
diff --git a/net.h b/net.h
index a7a4bde..36d6cb5 100644
--- a/net.h
+++ b/net.h
@@ -87,7 +87,6 @@ struct VLANState {
NetQueue *send_queue;
};
-VLANState *qemu_find_vlan(int id, int allocate);
VLANClientState *qemu_find_netdev(const char *id);
VLANClientState *qemu_new_net_client(NetClientInfo *info,
VLANClientState *peer,
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 08/12] net: Remove VLANState
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
` (6 preceding siblings ...)
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 07/12] net: Remove vlan code from net.c zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 09/12] net: Rename non_vlan_clients to net_clients zwu.kernel
` (3 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
VLANState is no longer used and can be removed.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
net.c | 127 ++++++++++-----------------------------------------------
net.h | 8 ----
net/socket.c | 6 +-
net/tap.c | 6 +-
net/tap.h | 2 +-
qemu-common.h | 1 -
6 files changed, 29 insertions(+), 121 deletions(-)
diff --git a/net.c b/net.c
index 33b1d9a..e09b7a7 100644
--- a/net.c
+++ b/net.c
@@ -44,7 +44,6 @@
# define CONFIG_NET_BRIDGE
#endif
-static QTAILQ_HEAD(, VLANState) vlans;
static QTAILQ_HEAD(, VLANClientState) non_vlan_clients;
int default_net = 1;
@@ -249,11 +248,7 @@ NICState *qemu_new_nic(NetClientInfo *info,
static void qemu_cleanup_vlan_client(VLANClientState *vc)
{
- if (vc->vlan) {
- QTAILQ_REMOVE(&vc->vlan->clients, vc, next);
- } else {
- QTAILQ_REMOVE(&non_vlan_clients, vc, next);
- }
+ QTAILQ_REMOVE(&non_vlan_clients, vc, next);
if (vc->info->cleanup) {
vc->info->cleanup(vc);
@@ -262,13 +257,11 @@ static void qemu_cleanup_vlan_client(VLANClientState *vc)
static void qemu_free_vlan_client(VLANClientState *vc)
{
- if (!vc->vlan) {
- if (vc->send_queue) {
- qemu_del_net_queue(vc->send_queue);
- }
- if (vc->peer) {
- vc->peer->peer = NULL;
- }
+ if (vc->send_queue) {
+ qemu_del_net_queue(vc->send_queue);
+ }
+ if (vc->peer) {
+ vc->peer->peer = NULL;
}
g_free(vc->name);
g_free(vc->model);
@@ -278,7 +271,7 @@ static void qemu_free_vlan_client(VLANClientState *vc)
void qemu_del_vlan_client(VLANClientState *vc)
{
/* If there is a peer NIC, delete and cleanup client, but do not free. */
- if (!vc->vlan && vc->peer && vc->peer->info->type == NET_CLIENT_TYPE_NIC) {
+ if (vc->peer && vc->peer->info->type == NET_CLIENT_TYPE_NIC) {
NICState *nic = DO_UPCAST(NICState, nc, vc->peer);
if (nic->peer_deleted) {
return;
@@ -294,7 +287,7 @@ void qemu_del_vlan_client(VLANClientState *vc)
}
/* If this is a peer NIC and peer has already been deleted, free it now. */
- if (!vc->vlan && vc->peer && vc->info->type == NET_CLIENT_TYPE_NIC) {
+ if (vc->peer && vc->info->type == NET_CLIENT_TYPE_NIC) {
NICState *nic = DO_UPCAST(NICState, nc, vc);
if (nic->peer_deleted) {
qemu_free_vlan_client(vc->peer);
@@ -308,52 +301,25 @@ void qemu_del_vlan_client(VLANClientState *vc)
void qemu_foreach_nic(qemu_nic_foreach func, void *opaque)
{
VLANClientState *nc;
- VLANState *vlan;
QTAILQ_FOREACH(nc, &non_vlan_clients, next) {
if (nc->info->type == NET_CLIENT_TYPE_NIC) {
func(DO_UPCAST(NICState, nc, nc), opaque);
}
}
-
- QTAILQ_FOREACH(vlan, &vlans, next) {
- QTAILQ_FOREACH(nc, &vlan->clients, next) {
- if (nc->info->type == NET_CLIENT_TYPE_NIC) {
- func(DO_UPCAST(NICState, nc, nc), opaque);
- }
- }
- }
}
int qemu_can_send_packet(VLANClientState *sender)
{
- VLANState *vlan = sender->vlan;
- VLANClientState *vc;
-
- if (sender->peer) {
- if (sender->peer->receive_disabled) {
- return 0;
- } else if (sender->peer->info->can_receive &&
- !sender->peer->info->can_receive(sender->peer)) {
- return 0;
- } else {
- return 1;
- }
- }
-
- if (!sender->vlan) {
+ if (!sender->peer) {
return 1;
}
- QTAILQ_FOREACH(vc, &vlan->clients, next) {
- if (vc == sender) {
- continue;
- }
-
- /* no can_receive() handler, they can always receive */
- if (vc->info->can_receive && !vc->info->can_receive(vc)) {
- return 0;
- }
+ if (sender->peer->receive_disabled) {
+ return 0;
+ } else if (sender->peer->info->can_receive &&
+ !sender->peer->info->can_receive(sender->peer)) {
+ return 0;
}
return 1;
}
@@ -390,34 +356,18 @@ static ssize_t qemu_deliver_packet(VLANClientState *sender,
void qemu_purge_queued_packets(VLANClientState *vc)
{
- NetQueue *queue;
-
- if (!vc->peer && !vc->vlan) {
+ if (!vc->peer) {
return;
}
- if (vc->peer) {
- queue = vc->peer->send_queue;
- } else {
- queue = vc->vlan->send_queue;
- }
-
- qemu_net_queue_purge(queue, vc);
+ qemu_net_queue_purge(vc->peer->send_queue, vc);
}
void qemu_flush_queued_packets(VLANClientState *vc)
{
- NetQueue *queue;
-
vc->receive_disabled = 0;
- if (vc->vlan) {
- queue = vc->vlan->send_queue;
- } else {
- queue = vc->send_queue;
- }
-
- qemu_net_queue_flush(queue);
+ qemu_net_queue_flush(vc->send_queue);
}
static ssize_t qemu_send_packet_async_with_flags(VLANClientState *sender,
@@ -432,15 +382,11 @@ static ssize_t qemu_send_packet_async_with_flags(VLANClientState *sender,
hex_dump(stdout, buf, size);
#endif
- if (sender->link_down || (!sender->peer && !sender->vlan)) {
+ if (sender->link_down || !sender->peer) {
return size;
}
- if (sender->peer) {
- queue = sender->peer->send_queue;
- } else {
- queue = sender->vlan->send_queue;
- }
+ queue = sender->peer->send_queue;
return qemu_net_queue_send(queue, sender, flags, buf, size, sent_cb);
}
@@ -500,15 +446,11 @@ ssize_t qemu_sendv_packet_async(VLANClientState *sender,
{
NetQueue *queue;
- if (sender->link_down || (!sender->peer && !sender->vlan)) {
+ if (sender->link_down || !sender->peer) {
return iov_size(iov, iovcnt);
}
- if (sender->peer) {
- queue = sender->peer->send_queue;
- } else {
- queue = sender->vlan->send_queue;
- }
+ queue = sender->peer->send_queue;
return qemu_net_queue_send_iov(queue, sender,
QEMU_NET_PACKET_FLAG_NONE,
@@ -1134,18 +1076,9 @@ static void print_net_client(Monitor *mon, VLANClientState *vc)
void do_info_network(Monitor *mon)
{
- VLANState *vlan;
VLANClientState *vc, *peer;
net_client_type type;
- QTAILQ_FOREACH(vlan, &vlans, next) {
- monitor_printf(mon, "VLAN %d devices:\n", vlan->id);
-
- QTAILQ_FOREACH(vc, &vlan->clients, next) {
- monitor_printf(mon, " ");
- print_net_client(mon, vc);
- }
- }
monitor_printf(mon, "Devices not on any VLAN:\n");
QTAILQ_FOREACH(vc, &non_vlan_clients, next) {
peer = vc->peer;
@@ -1164,16 +1097,8 @@ void do_info_network(Monitor *mon)
void qmp_set_link(const char *name, bool up, Error **errp)
{
- VLANState *vlan;
VLANClientState *vc = NULL;
- QTAILQ_FOREACH(vlan, &vlans, next) {
- QTAILQ_FOREACH(vc, &vlan->clients, next) {
- if (strcmp(vc->name, name) == 0) {
- goto done;
- }
- }
- }
QTAILQ_FOREACH(vc, &non_vlan_clients, next) {
if (!strcmp(vc->name, name)) {
goto done;
@@ -1182,7 +1107,7 @@ void qmp_set_link(const char *name, bool up, Error **errp)
done:
if (!vc) {
- error_set(errp, QERR_DEVICE_NOT_FOUND, name);
+ qerror_report(QERR_DEVICE_NOT_FOUND, name);
return;
}
@@ -1206,15 +1131,8 @@ done:
void net_cleanup(void)
{
- VLANState *vlan;
VLANClientState *vc, *next_vc;
- QTAILQ_FOREACH(vlan, &vlans, next) {
- QTAILQ_FOREACH_SAFE(vc, &vlan->clients, next, next_vc) {
- qemu_del_vlan_client(vc);
- }
- }
-
QTAILQ_FOREACH_SAFE(vc, &non_vlan_clients, next, next_vc) {
qemu_del_vlan_client(vc);
}
@@ -1286,7 +1204,6 @@ int net_init_clients(void)
#endif
}
- QTAILQ_INIT(&vlans);
QTAILQ_INIT(&non_vlan_clients);
if (qemu_opts_foreach(qemu_find_opts("netdev"), net_init_netdev, NULL, 1) == -1)
diff --git a/net.h b/net.h
index 36d6cb5..efb6508 100644
--- a/net.h
+++ b/net.h
@@ -64,7 +64,6 @@ struct VLANClientState {
NetClientInfo *info;
int link_down;
QTAILQ_ENTRY(VLANClientState) next;
- struct VLANState *vlan;
VLANClientState *peer;
NetQueue *send_queue;
char *model;
@@ -80,13 +79,6 @@ typedef struct NICState {
bool peer_deleted;
} NICState;
-struct VLANState {
- int id;
- QTAILQ_HEAD(, VLANClientState) clients;
- QTAILQ_ENTRY(VLANState) next;
- NetQueue *send_queue;
-};
-
VLANClientState *qemu_find_netdev(const char *id);
VLANClientState *qemu_new_net_client(NetClientInfo *info,
VLANClientState *peer,
diff --git a/net/socket.c b/net/socket.c
index bf7a793..5676bd5 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -536,7 +536,7 @@ static int net_socket_mcast_init(VLANClientState *peer,
}
-static int net_socket_udp_init(VLANState *vlan,
+static int net_socket_udp_init(NetClientState *peer,
const char *model,
const char *name,
const char *rhost,
@@ -574,7 +574,7 @@ static int net_socket_udp_init(VLANState *vlan,
return -1;
}
- s = net_socket_fd_init(vlan, model, name, fd, 0);
+ s = net_socket_fd_init(peer, model, name, fd, 0);
if (!s) {
return -1;
}
@@ -680,7 +680,7 @@ int net_init_socket(QemuOpts *opts,
return -1;
}
- if (net_socket_udp_init(vlan, "udp", name, udp, localaddr) == -1) {
+ if (net_socket_udp_init(peer, "udp", name, udp, localaddr) == -1) {
return -1;
}
} else {
diff --git a/net/tap.c b/net/tap.c
index 3a68d7e..7dbf643 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -513,7 +513,7 @@ static int net_bridge_run_helper(const char *helper, const char *bridge)
}
int net_init_bridge(QemuOpts *opts, Monitor *mon, const char *name,
- VLANState *vlan)
+ NetClientState *peer)
{
TAPState *s;
int fd, vnet_hdr;
@@ -535,7 +535,7 @@ int net_init_bridge(QemuOpts *opts, Monitor *mon, const char *name,
vnet_hdr = tap_probe_vnet_hdr(fd);
- s = net_tap_fd_init(vlan, "bridge", name, fd, vnet_hdr);
+ s = net_tap_fd_init(peer, "bridge", name, fd, vnet_hdr);
if (!s) {
close(fd);
return -1;
@@ -651,7 +651,7 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name,
model = "tap";
}
- s = net_tap_fd_init(vlan, model, name, fd, vnet_hdr);
+ s = net_tap_fd_init(peer, model, name, fd, vnet_hdr);
if (!s) {
close(fd);
return -1;
diff --git a/net/tap.h b/net/tap.h
index c194684..8d949cd 100644
--- a/net/tap.h
+++ b/net/tap.h
@@ -59,6 +59,6 @@ struct vhost_net;
struct vhost_net *tap_get_vhost_net(VLANClientState *vc);
int net_init_bridge(QemuOpts *opts, Monitor *mon, const char *name,
- VLANState *vlan);
+ NetClientState *peer);
#endif /* QEMU_NET_TAP_H */
diff --git a/qemu-common.h b/qemu-common.h
index dbfce6f..45aeee0 100644
--- a/qemu-common.h
+++ b/qemu-common.h
@@ -229,7 +229,6 @@ typedef struct TextConsole TextConsole;
typedef TextConsole QEMUConsole;
typedef struct CharDriverState CharDriverState;
typedef struct MACAddr MACAddr;
-typedef struct VLANState VLANState;
typedef struct VLANClientState VLANClientState;
typedef struct i2c_bus i2c_bus;
typedef struct i2c_slave i2c_slave;
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 09/12] net: Rename non_vlan_clients to net_clients
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
` (7 preceding siblings ...)
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 08/12] net: Remove VLANState zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
2012-03-13 9:23 ` Mark Wu
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 10/12] net: Rename VLANClientState to NetClientState zwu.kernel
` (2 subsequent siblings)
11 siblings, 1 reply; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
There is no longer a distinction between vlan clients and non-vlan
clients in the net core. The net core only knows about point-to-point
clients which are connected to a peer. It's time to rename the global
list of net clients since it no longer refers to vlans at all.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
net.c | 20 ++++++++++----------
1 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/net.c b/net.c
index e09b7a7..a510e27 100644
--- a/net.c
+++ b/net.c
@@ -44,7 +44,7 @@
# define CONFIG_NET_BRIDGE
#endif
-static QTAILQ_HEAD(, VLANClientState) non_vlan_clients;
+static QTAILQ_HEAD(, VLANClientState) net_clients;
int default_net = 1;
@@ -165,7 +165,7 @@ static char *assign_name(VLANClientState *vc1, const char *model)
char buf[256];
int id = 0;
- QTAILQ_FOREACH(vc, &non_vlan_clients, next) {
+ QTAILQ_FOREACH(vc, &net_clients, next) {
if (vc == vc1) {
continue;
}
@@ -216,7 +216,7 @@ VLANClientState *qemu_new_net_client(NetClientInfo *info,
vc->peer = peer;
peer->peer = vc;
}
- QTAILQ_INSERT_TAIL(&non_vlan_clients, vc, next);
+ QTAILQ_INSERT_TAIL(&net_clients, vc, next);
vc->send_queue = qemu_new_net_queue(qemu_deliver_packet,
qemu_deliver_packet_iov,
@@ -248,7 +248,7 @@ NICState *qemu_new_nic(NetClientInfo *info,
static void qemu_cleanup_vlan_client(VLANClientState *vc)
{
- QTAILQ_REMOVE(&non_vlan_clients, vc, next);
+ QTAILQ_REMOVE(&net_clients, vc, next);
if (vc->info->cleanup) {
vc->info->cleanup(vc);
@@ -302,7 +302,7 @@ void qemu_foreach_nic(qemu_nic_foreach func, void *opaque)
{
VLANClientState *nc;
- QTAILQ_FOREACH(nc, &non_vlan_clients, next) {
+ QTAILQ_FOREACH(nc, &net_clients, next) {
if (nc->info->type == NET_CLIENT_TYPE_NIC) {
func(DO_UPCAST(NICState, nc, nc), opaque);
}
@@ -467,7 +467,7 @@ VLANClientState *qemu_find_netdev(const char *id)
{
VLANClientState *vc;
- QTAILQ_FOREACH(vc, &non_vlan_clients, next) {
+ QTAILQ_FOREACH(vc, &net_clients, next) {
if (vc->info->type == NET_CLIENT_TYPE_NIC)
continue;
if (!strcmp(vc->name, id)) {
@@ -1080,7 +1080,7 @@ void do_info_network(Monitor *mon)
net_client_type type;
monitor_printf(mon, "Devices not on any VLAN:\n");
- QTAILQ_FOREACH(vc, &non_vlan_clients, next) {
+ QTAILQ_FOREACH(vc, &net_clients, next) {
peer = vc->peer;
type = vc->info->type;
if (!peer || type == NET_CLIENT_TYPE_NIC) {
@@ -1133,7 +1133,7 @@ void net_cleanup(void)
{
VLANClientState *vc, *next_vc;
- QTAILQ_FOREACH_SAFE(vc, &non_vlan_clients, next, next_vc) {
+ QTAILQ_FOREACH_SAFE(vc, &net_clients, next, next_vc) {
qemu_del_vlan_client(vc);
}
}
@@ -1157,7 +1157,7 @@ void net_check_clients(void)
net_hub_check_clients();
- QTAILQ_FOREACH(vc, &non_vlan_clients, next) {
+ QTAILQ_FOREACH(vc, &net_clients, next) {
if (!vc->peer) {
fprintf(stderr, "Warning: %s %s has no peer\n",
vc->info->type == NET_CLIENT_TYPE_NIC ? "nic" : "netdev",
@@ -1204,7 +1204,7 @@ int net_init_clients(void)
#endif
}
- QTAILQ_INIT(&non_vlan_clients);
+ QTAILQ_INIT(&net_clients);
if (qemu_opts_foreach(qemu_find_opts("netdev"), net_init_netdev, NULL, 1) == -1)
return -1;
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 10/12] net: Rename VLANClientState to NetClientState
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
` (8 preceding siblings ...)
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 09/12] net: Rename non_vlan_clients to net_clients zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 11/12] net: Rename vc local variables to nc zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 12/12] net: Rename qemu_del_vlan_client() to qemu_del_net_client() zwu.kernel
11 siblings, 0 replies; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
The vlan feature is no longer part of net core. Rename VLANClientState
to NetClientState because net clients are not explicitly associated with
a vlan at all, instead they have a peer net client to which they are
connected.
This patch is a mechanical search-and-replace except for a few
whitespace fixups where changing VLANClientState to NetClientState
misaligned whitespace.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
hw/cadence_gem.c | 8 ++--
hw/dp8393x.c | 6 ++--
hw/e1000.c | 8 ++--
hw/eepro100.c | 6 ++--
hw/etraxfs_eth.c | 8 ++--
hw/lan9118.c | 8 ++--
hw/lance.c | 2 +-
hw/mcf_fec.c | 6 ++--
hw/milkymist-minimac2.c | 6 ++--
hw/mipsnet.c | 6 ++--
hw/musicpal.c | 6 ++--
hw/ne2000-isa.c | 2 +-
hw/ne2000.c | 6 ++--
hw/ne2000.h | 4 +-
hw/opencores_eth.c | 8 ++--
hw/pcnet-pci.c | 2 +-
hw/pcnet.c | 6 ++--
hw/pcnet.h | 6 ++--
hw/qdev-properties.c | 6 ++--
hw/qdev.h | 4 +-
hw/rtl8139.c | 8 ++--
hw/smc91c111.c | 6 ++--
hw/spapr_llan.c | 4 +-
hw/stellaris_enet.c | 6 ++--
hw/usb-net.c | 6 ++--
hw/vhost_net.c | 8 ++--
hw/vhost_net.h | 2 +-
hw/virtio-net.c | 10 +++---
hw/xen_nic.c | 4 +-
hw/xgmac.c | 6 ++--
hw/xilinx_axienet.c | 6 ++--
hw/xilinx_ethlite.c | 6 ++--
net.c | 85 +++++++++++++++++++++++------------------------
net.h | 60 ++++++++++++++++----------------
net/dump.c | 12 +++---
net/dump.h | 2 +-
net/hub.c | 22 ++++++------
net/hub.h | 8 ++--
net/queue.c | 16 ++++----
net/queue.h | 12 +++---
net/slirp.c | 14 ++++----
net/slirp.h | 2 +-
net/socket.c | 28 ++++++++--------
net/socket.h | 2 +-
net/tap-win32.c | 22 ++++++------
net/tap.c | 36 ++++++++++----------
net/tap.h | 18 +++++-----
net/vde.c | 12 +++---
net/vde.h | 2 +-
qemu-common.h | 2 +-
50 files changed, 270 insertions(+), 271 deletions(-)
diff --git a/hw/cadence_gem.c b/hw/cadence_gem.c
index e2140ae..60ee1fd 100644
--- a/hw/cadence_gem.c
+++ b/hw/cadence_gem.c
@@ -405,7 +405,7 @@ static void phy_update_link(GemState *s)
}
}
-static int gem_can_receive(VLANClientState *nc)
+static int gem_can_receive(NetClientState *nc)
{
GemState *s;
@@ -602,7 +602,7 @@ static int gem_mac_address_filter(GemState *s, const uint8_t *packet)
* gem_receive:
* Fit a packet handed to us by QEMU into the receive descriptor ring.
*/
-static ssize_t gem_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t gem_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
unsigned desc[2];
target_phys_addr_t packet_desc_addr, last_desc_addr;
@@ -1146,7 +1146,7 @@ static const MemoryRegionOps gem_ops = {
.endianness = DEVICE_LITTLE_ENDIAN,
};
-static void gem_cleanup(VLANClientState *nc)
+static void gem_cleanup(NetClientState *nc)
{
GemState *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -1154,7 +1154,7 @@ static void gem_cleanup(VLANClientState *nc)
s->nic = NULL;
}
-static void gem_set_link(VLANClientState *nc)
+static void gem_set_link(NetClientState *nc)
{
DB_PRINT("\n");
phy_update_link(DO_UPCAST(NICState, nc, nc)->opaque);
diff --git a/hw/dp8393x.c b/hw/dp8393x.c
index 017d074..86598b9 100644
--- a/hw/dp8393x.c
+++ b/hw/dp8393x.c
@@ -673,7 +673,7 @@ static const MemoryRegionOps dp8393x_ops = {
.endianness = DEVICE_NATIVE_ENDIAN,
};
-static int nic_can_receive(VLANClientState *nc)
+static int nic_can_receive(NetClientState *nc)
{
dp8393xState *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -722,7 +722,7 @@ static int receive_filter(dp8393xState *s, const uint8_t * buf, int size)
return -1;
}
-static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size)
+static ssize_t nic_receive(NetClientState *nc, const uint8_t * buf, size_t size)
{
dp8393xState *s = DO_UPCAST(NICState, nc, nc)->opaque;
uint16_t data[10];
@@ -858,7 +858,7 @@ static void nic_reset(void *opaque)
dp8393x_update_irq(s);
}
-static void nic_cleanup(VLANClientState *nc)
+static void nic_cleanup(NetClientState *nc)
{
dp8393xState *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/e1000.c b/hw/e1000.c
index 7babc0b..f8423e1 100644
--- a/hw/e1000.c
+++ b/hw/e1000.c
@@ -616,7 +616,7 @@ receive_filter(E1000State *s, const uint8_t *buf, int size)
}
static void
-e1000_set_link_status(VLANClientState *nc)
+e1000_set_link_status(NetClientState *nc)
{
E1000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
uint32_t old_status = s->mac_reg[STATUS];
@@ -652,7 +652,7 @@ static bool e1000_has_rxbufs(E1000State *s, size_t total_size)
}
static int
-e1000_can_receive(VLANClientState *nc)
+e1000_can_receive(NetClientState *nc)
{
E1000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -668,7 +668,7 @@ static uint64_t rx_desc_base(E1000State *s)
}
static ssize_t
-e1000_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+e1000_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
E1000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
struct e1000_rx_desc desc;
@@ -1105,7 +1105,7 @@ e1000_mmio_setup(E1000State *d)
}
static void
-e1000_cleanup(VLANClientState *nc)
+e1000_cleanup(NetClientState *nc)
{
E1000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/eepro100.c b/hw/eepro100.c
index e3ba719..5aee946 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -1610,7 +1610,7 @@ static const MemoryRegionOps eepro100_ops = {
.endianness = DEVICE_LITTLE_ENDIAN,
};
-static int nic_can_receive(VLANClientState *nc)
+static int nic_can_receive(NetClientState *nc)
{
EEPRO100State *s = DO_UPCAST(NICState, nc, nc)->opaque;
TRACE(RXTX, logout("%p\n", s));
@@ -1620,7 +1620,7 @@ static int nic_can_receive(VLANClientState *nc)
#endif
}
-static ssize_t nic_receive(VLANClientState *nc, const uint8_t * buf, size_t size)
+static ssize_t nic_receive(NetClientState *nc, const uint8_t * buf, size_t size)
{
/* TODO:
* - Magic packets should set bit 30 in power management driver register.
@@ -1825,7 +1825,7 @@ static const VMStateDescription vmstate_eepro100 = {
}
};
-static void nic_cleanup(VLANClientState *nc)
+static void nic_cleanup(NetClientState *nc)
{
EEPRO100State *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/etraxfs_eth.c b/hw/etraxfs_eth.c
index 16a0637..1ca5849 100644
--- a/hw/etraxfs_eth.c
+++ b/hw/etraxfs_eth.c
@@ -507,12 +507,12 @@ static int eth_match_groupaddr(struct fs_eth *eth, const unsigned char *sa)
return match;
}
-static int eth_can_receive(VLANClientState *nc)
+static int eth_can_receive(NetClientState *nc)
{
return 1;
}
-static ssize_t eth_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t eth_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
unsigned char sa_bcast[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
struct fs_eth *eth = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -549,7 +549,7 @@ static int eth_tx_push(void *opaque, unsigned char *buf, int len, bool eop)
return len;
}
-static void eth_set_link(VLANClientState *nc)
+static void eth_set_link(NetClientState *nc)
{
struct fs_eth *eth = DO_UPCAST(NICState, nc, nc)->opaque;
D(printf("%s %d\n", __func__, nc->link_down));
@@ -566,7 +566,7 @@ static const MemoryRegionOps eth_ops = {
}
};
-static void eth_cleanup(VLANClientState *nc)
+static void eth_cleanup(NetClientState *nc)
{
struct fs_eth *eth = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/lan9118.c b/hw/lan9118.c
index 7b4fe87..6a37895 100644
--- a/hw/lan9118.c
+++ b/hw/lan9118.c
@@ -384,7 +384,7 @@ static void phy_update_link(lan9118_state *s)
phy_update_irq(s);
}
-static void lan9118_set_link(VLANClientState *nc)
+static void lan9118_set_link(NetClientState *nc)
{
phy_update_link(DO_UPCAST(NICState, nc, nc)->opaque);
}
@@ -456,7 +456,7 @@ static void lan9118_reset(DeviceState *d)
lan9118_reload_eeprom(s);
}
-static int lan9118_can_receive(VLANClientState *nc)
+static int lan9118_can_receive(NetClientState *nc)
{
return 1;
}
@@ -509,7 +509,7 @@ static int lan9118_filter(lan9118_state *s, const uint8_t *addr)
}
}
-static ssize_t lan9118_receive(VLANClientState *nc, const uint8_t *buf,
+static ssize_t lan9118_receive(NetClientState *nc, const uint8_t *buf,
size_t size)
{
lan9118_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -1302,7 +1302,7 @@ static const MemoryRegionOps lan9118_16bit_mem_ops = {
.endianness = DEVICE_NATIVE_ENDIAN,
};
-static void lan9118_cleanup(VLANClientState *nc)
+static void lan9118_cleanup(NetClientState *nc)
{
lan9118_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/lance.c b/hw/lance.c
index ce3d46c..1aedb19 100644
--- a/hw/lance.c
+++ b/hw/lance.c
@@ -85,7 +85,7 @@ static const MemoryRegionOps lance_mem_ops = {
},
};
-static void lance_cleanup(VLANClientState *nc)
+static void lance_cleanup(NetClientState *nc)
{
PCNetState *d = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/mcf_fec.c b/hw/mcf_fec.c
index ae37bef..3d87c78 100644
--- a/hw/mcf_fec.c
+++ b/hw/mcf_fec.c
@@ -351,13 +351,13 @@ static void mcf_fec_write(void *opaque, target_phys_addr_t addr,
mcf_fec_update(s);
}
-static int mcf_fec_can_receive(VLANClientState *nc)
+static int mcf_fec_can_receive(NetClientState *nc)
{
mcf_fec_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
return s->rx_enabled;
}
-static ssize_t mcf_fec_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t mcf_fec_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
mcf_fec_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
mcf_fec_bd bd;
@@ -439,7 +439,7 @@ static const MemoryRegionOps mcf_fec_ops = {
.endianness = DEVICE_NATIVE_ENDIAN,
};
-static void mcf_fec_cleanup(VLANClientState *nc)
+static void mcf_fec_cleanup(NetClientState *nc)
{
mcf_fec_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/milkymist-minimac2.c b/hw/milkymist-minimac2.c
index 70bf336..0369894 100644
--- a/hw/milkymist-minimac2.c
+++ b/hw/milkymist-minimac2.c
@@ -278,7 +278,7 @@ static void update_rx_interrupt(MilkymistMinimac2State *s)
}
}
-static ssize_t minimac2_rx(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t minimac2_rx(NetClientState *nc, const uint8_t *buf, size_t size)
{
MilkymistMinimac2State *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -408,7 +408,7 @@ static const MemoryRegionOps minimac2_ops = {
.endianness = DEVICE_NATIVE_ENDIAN,
};
-static int minimac2_can_rx(VLANClientState *nc)
+static int minimac2_can_rx(NetClientState *nc)
{
MilkymistMinimac2State *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -422,7 +422,7 @@ static int minimac2_can_rx(VLANClientState *nc)
return 0;
}
-static void minimac2_cleanup(VLANClientState *nc)
+static void minimac2_cleanup(NetClientState *nc)
{
MilkymistMinimac2State *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/mipsnet.c b/hw/mipsnet.c
index 50d92f8..3e810fe 100644
--- a/hw/mipsnet.c
+++ b/hw/mipsnet.c
@@ -62,7 +62,7 @@ static int mipsnet_buffer_full(MIPSnetState *s)
return 0;
}
-static int mipsnet_can_receive(VLANClientState *nc)
+static int mipsnet_can_receive(NetClientState *nc)
{
MIPSnetState *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -71,7 +71,7 @@ static int mipsnet_can_receive(VLANClientState *nc)
return !mipsnet_buffer_full(s);
}
-static ssize_t mipsnet_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t mipsnet_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
MIPSnetState *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -209,7 +209,7 @@ static const VMStateDescription vmstate_mipsnet = {
}
};
-static void mipsnet_cleanup(VLANClientState *nc)
+static void mipsnet_cleanup(NetClientState *nc)
{
MIPSnetState *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/musicpal.c b/hw/musicpal.c
index 187a1ae..232b26f 100644
--- a/hw/musicpal.c
+++ b/hw/musicpal.c
@@ -182,12 +182,12 @@ static void eth_rx_desc_get(uint32_t addr, mv88w8618_rx_desc *desc)
le32_to_cpus(&desc->next);
}
-static int eth_can_receive(VLANClientState *nc)
+static int eth_can_receive(NetClientState *nc)
{
return 1;
}
-static ssize_t eth_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t eth_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
mv88w8618_eth_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
uint32_t desc_addr;
@@ -366,7 +366,7 @@ static const MemoryRegionOps mv88w8618_eth_ops = {
.endianness = DEVICE_NATIVE_ENDIAN,
};
-static void eth_cleanup(VLANClientState *nc)
+static void eth_cleanup(NetClientState *nc)
{
mv88w8618_eth_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/ne2000-isa.c b/hw/ne2000-isa.c
index a4a783a..ff4b885 100644
--- a/hw/ne2000-isa.c
+++ b/hw/ne2000-isa.c
@@ -36,7 +36,7 @@ typedef struct ISANE2000State {
NE2000State ne2000;
} ISANE2000State;
-static void isa_ne2000_cleanup(VLANClientState *nc)
+static void isa_ne2000_cleanup(NetClientState *nc)
{
NE2000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/ne2000.c b/hw/ne2000.c
index 71452e1..25a6d2f 100644
--- a/hw/ne2000.c
+++ b/hw/ne2000.c
@@ -189,7 +189,7 @@ static int ne2000_buffer_full(NE2000State *s)
return 0;
}
-int ne2000_can_receive(VLANClientState *nc)
+int ne2000_can_receive(NetClientState *nc)
{
NE2000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -200,7 +200,7 @@ int ne2000_can_receive(VLANClientState *nc)
#define MIN_BUF_SIZE 60
-ssize_t ne2000_receive(VLANClientState *nc, const uint8_t *buf, size_t size_)
+ssize_t ne2000_receive(NetClientState *nc, const uint8_t *buf, size_t size_)
{
NE2000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
int size = size_;
@@ -727,7 +727,7 @@ void ne2000_setup_io(NE2000State *s, unsigned size)
memory_region_init_io(&s->io, &ne2000_ops, s, "ne2000", size);
}
-static void ne2000_cleanup(VLANClientState *nc)
+static void ne2000_cleanup(NetClientState *nc)
{
NE2000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/ne2000.h b/hw/ne2000.h
index 5fee052..6c196a2 100644
--- a/hw/ne2000.h
+++ b/hw/ne2000.h
@@ -31,5 +31,5 @@ typedef struct NE2000State {
void ne2000_setup_io(NE2000State *s, unsigned size);
extern const VMStateDescription vmstate_ne2000;
void ne2000_reset(NE2000State *s);
-int ne2000_can_receive(VLANClientState *vc);
-ssize_t ne2000_receive(VLANClientState *vc, const uint8_t *buf, size_t size_);
+int ne2000_can_receive(NetClientState *vc);
+ssize_t ne2000_receive(NetClientState *vc, const uint8_t *buf, size_t size_);
diff --git a/hw/opencores_eth.c b/hw/opencores_eth.c
index 9b036cb..c4db418 100644
--- a/hw/opencores_eth.c
+++ b/hw/opencores_eth.c
@@ -311,7 +311,7 @@ static void open_eth_int_source_write(OpenEthState *s,
s->regs[INT_SOURCE] & s->regs[INT_MASK]);
}
-static void open_eth_set_link_status(VLANClientState *nc)
+static void open_eth_set_link_status(NetClientState *nc)
{
OpenEthState *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -342,7 +342,7 @@ static void open_eth_reset(void *opaque)
open_eth_set_link_status(&s->nic->nc);
}
-static int open_eth_can_receive(VLANClientState *nc)
+static int open_eth_can_receive(NetClientState *nc)
{
OpenEthState *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -376,7 +376,7 @@ static unsigned compute_mcast_idx(const uint8_t *ep)
return crc >> 26;
}
-static ssize_t open_eth_receive(VLANClientState *nc,
+static ssize_t open_eth_receive(NetClientState *nc,
const uint8_t *buf, size_t size)
{
OpenEthState *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -487,7 +487,7 @@ static ssize_t open_eth_receive(VLANClientState *nc,
return size;
}
-static void open_eth_cleanup(VLANClientState *nc)
+static void open_eth_cleanup(NetClientState *nc)
{
}
diff --git a/hw/pcnet-pci.c b/hw/pcnet-pci.c
index 34d73aa..8c82667 100644
--- a/hw/pcnet-pci.c
+++ b/hw/pcnet-pci.c
@@ -264,7 +264,7 @@ static void pci_physical_memory_read(void *dma_opaque, target_phys_addr_t addr,
pci_dma_read(dma_opaque, addr, buf, len);
}
-static void pci_pcnet_cleanup(VLANClientState *nc)
+static void pci_pcnet_cleanup(NetClientState *nc)
{
PCNetState *d = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/pcnet.c b/hw/pcnet.c
index c53f06e..cd19e2f 100644
--- a/hw/pcnet.c
+++ b/hw/pcnet.c
@@ -1003,7 +1003,7 @@ static int pcnet_tdte_poll(PCNetState *s)
return !!(CSR_CXST(s) & 0x8000);
}
-int pcnet_can_receive(VLANClientState *nc)
+int pcnet_can_receive(NetClientState *nc)
{
PCNetState *s = DO_UPCAST(NICState, nc, nc)->opaque;
if (CSR_STOP(s) || CSR_SPND(s))
@@ -1014,7 +1014,7 @@ int pcnet_can_receive(VLANClientState *nc)
#define MIN_BUF_SIZE 60
-ssize_t pcnet_receive(VLANClientState *nc, const uint8_t *buf, size_t size_)
+ssize_t pcnet_receive(NetClientState *nc, const uint8_t *buf, size_t size_)
{
PCNetState *s = DO_UPCAST(NICState, nc, nc)->opaque;
int is_padr = 0, is_bcast = 0, is_ladr = 0;
@@ -1196,7 +1196,7 @@ ssize_t pcnet_receive(VLANClientState *nc, const uint8_t *buf, size_t size_)
return size_;
}
-void pcnet_set_link_status(VLANClientState *nc)
+void pcnet_set_link_status(NetClientState *nc)
{
PCNetState *d = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/pcnet.h b/hw/pcnet.h
index edc81c9..60e904f 100644
--- a/hw/pcnet.h
+++ b/hw/pcnet.h
@@ -56,9 +56,9 @@ uint32_t pcnet_ioport_readw(void *opaque, uint32_t addr);
void pcnet_ioport_writel(void *opaque, uint32_t addr, uint32_t val);
uint32_t pcnet_ioport_readl(void *opaque, uint32_t addr);
uint32_t pcnet_bcr_readw(PCNetState *s, uint32_t rap);
-int pcnet_can_receive(VLANClientState *nc);
-ssize_t pcnet_receive(VLANClientState *nc, const uint8_t *buf, size_t size_);
-void pcnet_set_link_status(VLANClientState *nc);
+int pcnet_can_receive(NetClientState *nc);
+ssize_t pcnet_receive(NetClientState *nc, const uint8_t *buf, size_t size_);
+void pcnet_set_link_status(NetClientState *nc);
void pcnet_common_cleanup(PCNetState *d);
int pcnet_common_init(DeviceState *dev, PCNetState *s, NetClientInfo *info);
extern const VMStateDescription vmstate_pcnet;
diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index d10e9f5..5d40116 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -590,7 +590,7 @@ PropertyInfo qdev_prop_chr = {
static int parse_netdev(DeviceState *dev, const char *str, void **ptr)
{
- VLANClientState *netdev = qemu_find_netdev(str);
+ NetClientState *netdev = qemu_find_netdev(str);
if (netdev == NULL) {
return -ENOENT;
@@ -604,7 +604,7 @@ static int parse_netdev(DeviceState *dev, const char *str, void **ptr)
static const char *print_netdev(void *ptr)
{
- VLANClientState *netdev = ptr;
+ NetClientState *netdev = ptr;
return netdev->name ? netdev->name : "";
}
@@ -973,7 +973,7 @@ void qdev_prop_set_chr(DeviceState *dev, const char *name, CharDriverState *valu
assert_no_error(errp);
}
-void qdev_prop_set_netdev(DeviceState *dev, const char *name, VLANClientState *value)
+void qdev_prop_set_netdev(DeviceState *dev, const char *name, NetClientState *value)
{
Error *errp = NULL;
assert(!value || value->name);
diff --git a/hw/qdev.h b/hw/qdev.h
index d03bfb8..c638b98 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -273,7 +273,7 @@ extern PropertyInfo qdev_prop_pci_devfn;
#define DEFINE_PROP_STRING(_n, _s, _f) \
DEFINE_PROP(_n, _s, _f, qdev_prop_string, char*)
#define DEFINE_PROP_NETDEV(_n, _s, _f) \
- DEFINE_PROP(_n, _s, _f, qdev_prop_netdev, VLANClientState*)
+ DEFINE_PROP(_n, _s, _f, qdev_prop_netdev, NetClientState*)
#define DEFINE_PROP_DRIVE(_n, _s, _f) \
DEFINE_PROP(_n, _s, _f, qdev_prop_drive, BlockDriverState *)
#define DEFINE_PROP_MACADDR(_n, _s, _f) \
@@ -297,7 +297,7 @@ void qdev_prop_set_int32(DeviceState *dev, const char *name, int32_t value);
void qdev_prop_set_uint64(DeviceState *dev, const char *name, uint64_t value);
void qdev_prop_set_string(DeviceState *dev, const char *name, char *value);
void qdev_prop_set_chr(DeviceState *dev, const char *name, CharDriverState *value);
-void qdev_prop_set_netdev(DeviceState *dev, const char *name, VLANClientState *value);
+void qdev_prop_set_netdev(DeviceState *dev, const char *name, NetClientState *value);
int qdev_prop_set_drive(DeviceState *dev, const char *name, BlockDriverState *value) QEMU_WARN_UNUSED_RESULT;
void qdev_prop_set_drive_nofail(DeviceState *dev, const char *name, BlockDriverState *value);
void qdev_prop_set_macaddr(DeviceState *dev, const char *name, uint8_t *value);
diff --git a/hw/rtl8139.c b/hw/rtl8139.c
index 05b8e1e..c0fddc1 100644
--- a/hw/rtl8139.c
+++ b/hw/rtl8139.c
@@ -806,7 +806,7 @@ static inline dma_addr_t rtl8139_addr64(uint32_t low, uint32_t high)
#endif
}
-static int rtl8139_can_receive(VLANClientState *nc)
+static int rtl8139_can_receive(NetClientState *nc)
{
RTL8139State *s = DO_UPCAST(NICState, nc, nc)->opaque;
int avail;
@@ -828,7 +828,7 @@ static int rtl8139_can_receive(VLANClientState *nc)
}
}
-static ssize_t rtl8139_do_receive(VLANClientState *nc, const uint8_t *buf, size_t size_, int do_interrupt)
+static ssize_t rtl8139_do_receive(NetClientState *nc, const uint8_t *buf, size_t size_, int do_interrupt)
{
RTL8139State *s = DO_UPCAST(NICState, nc, nc)->opaque;
/* size is the length of the buffer passed to the driver */
@@ -1201,7 +1201,7 @@ static ssize_t rtl8139_do_receive(VLANClientState *nc, const uint8_t *buf, size_
return size_;
}
-static ssize_t rtl8139_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t rtl8139_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
return rtl8139_do_receive(nc, buf, size, 1);
}
@@ -3417,7 +3417,7 @@ static void rtl8139_timer(void *opaque)
rtl8139_set_next_tctr_time(s, qemu_get_clock_ns(vm_clock));
}
-static void rtl8139_cleanup(VLANClientState *nc)
+static void rtl8139_cleanup(NetClientState *nc)
{
RTL8139State *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/smc91c111.c b/hw/smc91c111.c
index 1a5213f..aaa2c60 100644
--- a/hw/smc91c111.c
+++ b/hw/smc91c111.c
@@ -628,7 +628,7 @@ static uint32_t smc91c111_readl(void *opaque, target_phys_addr_t offset)
return val;
}
-static int smc91c111_can_receive(VLANClientState *nc)
+static int smc91c111_can_receive(NetClientState *nc)
{
smc91c111_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -639,7 +639,7 @@ static int smc91c111_can_receive(VLANClientState *nc)
return 1;
}
-static ssize_t smc91c111_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t smc91c111_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
smc91c111_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
int status;
@@ -728,7 +728,7 @@ static const MemoryRegionOps smc91c111_mem_ops = {
.endianness = DEVICE_NATIVE_ENDIAN,
};
-static void smc91c111_cleanup(VLANClientState *nc)
+static void smc91c111_cleanup(NetClientState *nc)
{
smc91c111_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/spapr_llan.c b/hw/spapr_llan.c
index 77d4047..e9f1c87 100644
--- a/hw/spapr_llan.c
+++ b/hw/spapr_llan.c
@@ -83,14 +83,14 @@ typedef struct VIOsPAPRVLANDevice {
target_ulong rxq_ptr;
} VIOsPAPRVLANDevice;
-static int spapr_vlan_can_receive(VLANClientState *nc)
+static int spapr_vlan_can_receive(NetClientState *nc)
{
VIOsPAPRVLANDevice *dev = DO_UPCAST(NICState, nc, nc)->opaque;
return (dev->isopen && dev->rx_bufs > 0);
}
-static ssize_t spapr_vlan_receive(VLANClientState *nc, const uint8_t *buf,
+static ssize_t spapr_vlan_receive(NetClientState *nc, const uint8_t *buf,
size_t size)
{
VIOsPAPRDevice *sdev = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/stellaris_enet.c b/hw/stellaris_enet.c
index fbe99cb..fcc6cd0 100644
--- a/hw/stellaris_enet.c
+++ b/hw/stellaris_enet.c
@@ -78,7 +78,7 @@ static void stellaris_enet_update(stellaris_enet_state *s)
}
/* TODO: Implement MAC address filtering. */
-static ssize_t stellaris_enet_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t stellaris_enet_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
stellaris_enet_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
int n;
@@ -120,7 +120,7 @@ static ssize_t stellaris_enet_receive(VLANClientState *nc, const uint8_t *buf, s
return size;
}
-static int stellaris_enet_can_receive(VLANClientState *nc)
+static int stellaris_enet_can_receive(NetClientState *nc)
{
stellaris_enet_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -381,7 +381,7 @@ static int stellaris_enet_load(QEMUFile *f, void *opaque, int version_id)
return 0;
}
-static void stellaris_enet_cleanup(VLANClientState *nc)
+static void stellaris_enet_cleanup(NetClientState *nc)
{
stellaris_enet_state *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/usb-net.c b/hw/usb-net.c
index 22b8201..436e72b 100644
--- a/hw/usb-net.c
+++ b/hw/usb-net.c
@@ -1247,7 +1247,7 @@ static int usb_net_handle_data(USBDevice *dev, USBPacket *p)
return ret;
}
-static ssize_t usbnet_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t usbnet_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
USBNetState *s = DO_UPCAST(NICState, nc, nc)->opaque;
struct rndis_packet_msg_type *msg;
@@ -1285,7 +1285,7 @@ static ssize_t usbnet_receive(VLANClientState *nc, const uint8_t *buf, size_t si
return size;
}
-static int usbnet_can_receive(VLANClientState *nc)
+static int usbnet_can_receive(NetClientState *nc)
{
USBNetState *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -1296,7 +1296,7 @@ static int usbnet_can_receive(VLANClientState *nc)
return !s->in_len;
}
-static void usbnet_cleanup(VLANClientState *nc)
+static void usbnet_cleanup(NetClientState *nc)
{
USBNetState *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/vhost_net.c b/hw/vhost_net.c
index f672e9d..c3e6546 100644
--- a/hw/vhost_net.c
+++ b/hw/vhost_net.c
@@ -42,7 +42,7 @@ struct vhost_net {
struct vhost_dev dev;
struct vhost_virtqueue vqs[2];
int backend;
- VLANClientState *vc;
+ NetClientState *vc;
};
unsigned vhost_net_get_features(struct vhost_net *net, unsigned features)
@@ -80,7 +80,7 @@ void vhost_net_ack_features(struct vhost_net *net, unsigned features)
}
}
-static int vhost_net_get_fd(VLANClientState *backend)
+static int vhost_net_get_fd(NetClientState *backend)
{
switch (backend->info->type) {
case NET_CLIENT_TYPE_TAP:
@@ -91,7 +91,7 @@ static int vhost_net_get_fd(VLANClientState *backend)
}
}
-struct vhost_net *vhost_net_init(VLANClientState *backend, int devfd,
+struct vhost_net *vhost_net_init(NetClientState *backend, int devfd,
bool force)
{
int r;
@@ -214,7 +214,7 @@ void vhost_net_cleanup(struct vhost_net *net)
g_free(net);
}
#else
-struct vhost_net *vhost_net_init(VLANClientState *backend, int devfd,
+struct vhost_net *vhost_net_init(NetClientState *backend, int devfd,
bool force)
{
error_report("vhost-net support is not compiled in");
diff --git a/hw/vhost_net.h b/hw/vhost_net.h
index 91e40b1..a9db234 100644
--- a/hw/vhost_net.h
+++ b/hw/vhost_net.h
@@ -6,7 +6,7 @@
struct vhost_net;
typedef struct vhost_net VHostNetState;
-VHostNetState *vhost_net_init(VLANClientState *backend, int devfd, bool force);
+VHostNetState *vhost_net_init(NetClientState *backend, int devfd, bool force);
bool vhost_net_query(VHostNetState *net, VirtIODevice *dev);
int vhost_net_start(VHostNetState *net, VirtIODevice *dev);
diff --git a/hw/virtio-net.c b/hw/virtio-net.c
index bc5e3a8..3af1972 100644
--- a/hw/virtio-net.c
+++ b/hw/virtio-net.c
@@ -163,7 +163,7 @@ static void virtio_net_set_status(struct VirtIODevice *vdev, uint8_t status)
}
}
-static void virtio_net_set_link_status(VLANClientState *nc)
+static void virtio_net_set_link_status(NetClientState *nc)
{
VirtIONet *n = DO_UPCAST(NICState, nc, nc)->opaque;
uint16_t old_status = n->status;
@@ -453,7 +453,7 @@ static void virtio_net_handle_rx(VirtIODevice *vdev, VirtQueue *vq)
qemu_notify_event();
}
-static int virtio_net_can_receive(VLANClientState *nc)
+static int virtio_net_can_receive(NetClientState *nc)
{
VirtIONet *n = DO_UPCAST(NICState, nc, nc)->opaque;
if (!n->vdev.vm_running) {
@@ -593,7 +593,7 @@ static int receive_filter(VirtIONet *n, const uint8_t *buf, int size)
return 0;
}
-static ssize_t virtio_net_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t virtio_net_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
VirtIONet *n = DO_UPCAST(NICState, nc, nc)->opaque;
struct virtio_net_hdr_mrg_rxbuf *mhdr = NULL;
@@ -690,7 +690,7 @@ static ssize_t virtio_net_receive(VLANClientState *nc, const uint8_t *buf, size_
static int32_t virtio_net_flush_tx(VirtIONet *n, VirtQueue *vq);
-static void virtio_net_tx_complete(VLANClientState *nc, ssize_t len)
+static void virtio_net_tx_complete(NetClientState *nc, ssize_t len)
{
VirtIONet *n = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -976,7 +976,7 @@ static int virtio_net_load(QEMUFile *f, void *opaque, int version_id)
return 0;
}
-static void virtio_net_cleanup(VLANClientState *nc)
+static void virtio_net_cleanup(NetClientState *nc)
{
VirtIONet *n = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/xen_nic.c b/hw/xen_nic.c
index 85526fe..6391a04 100644
--- a/hw/xen_nic.c
+++ b/hw/xen_nic.c
@@ -236,7 +236,7 @@ static void net_rx_response(struct XenNetDev *netdev,
#define NET_IP_ALIGN 2
-static int net_rx_ok(VLANClientState *nc)
+static int net_rx_ok(NetClientState *nc)
{
struct XenNetDev *netdev = DO_UPCAST(NICState, nc, nc)->opaque;
RING_IDX rc, rp;
@@ -257,7 +257,7 @@ static int net_rx_ok(VLANClientState *nc)
return 1;
}
-static ssize_t net_rx_packet(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t net_rx_packet(NetClientState *nc, const uint8_t *buf, size_t size)
{
struct XenNetDev *netdev = DO_UPCAST(NICState, nc, nc)->opaque;
netif_rx_request_t rxreq;
diff --git a/hw/xgmac.c b/hw/xgmac.c
index dd4bdc4..b2cae49 100644
--- a/hw/xgmac.c
+++ b/hw/xgmac.c
@@ -308,7 +308,7 @@ static const MemoryRegionOps enet_mem_ops = {
.endianness = DEVICE_LITTLE_ENDIAN,
};
-static int eth_can_rx(VLANClientState *nc)
+static int eth_can_rx(NetClientState *nc)
{
struct XgmacState *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -316,7 +316,7 @@ static int eth_can_rx(VLANClientState *nc)
return s->regs[DMA_CONTROL] & DMA_CONTROL_SR;
}
-static ssize_t eth_rx(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t eth_rx(NetClientState *nc, const uint8_t *buf, size_t size)
{
struct XgmacState *s = DO_UPCAST(NICState, nc, nc)->opaque;
static const unsigned char sa_bcast[6] = {0xff, 0xff, 0xff,
@@ -364,7 +364,7 @@ out:
return ret;
}
-static void eth_cleanup(VLANClientState *nc)
+static void eth_cleanup(NetClientState *nc)
{
struct XgmacState *s = DO_UPCAST(NICState, nc, nc)->opaque;
s->nic = NULL;
diff --git a/hw/xilinx_axienet.c b/hw/xilinx_axienet.c
index 7526273..512bf05 100644
--- a/hw/xilinx_axienet.c
+++ b/hw/xilinx_axienet.c
@@ -612,7 +612,7 @@ static const MemoryRegionOps enet_ops = {
.endianness = DEVICE_LITTLE_ENDIAN,
};
-static int eth_can_rx(VLANClientState *nc)
+static int eth_can_rx(NetClientState *nc)
{
struct XilinxAXIEnet *s = DO_UPCAST(NICState, nc, nc)->opaque;
@@ -635,7 +635,7 @@ static int enet_match_addr(const uint8_t *buf, uint32_t f0, uint32_t f1)
return match;
}
-static ssize_t eth_rx(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t eth_rx(NetClientState *nc, const uint8_t *buf, size_t size)
{
struct XilinxAXIEnet *s = DO_UPCAST(NICState, nc, nc)->opaque;
static const unsigned char sa_bcast[6] = {0xff, 0xff, 0xff,
@@ -780,7 +780,7 @@ static ssize_t eth_rx(VLANClientState *nc, const uint8_t *buf, size_t size)
return size;
}
-static void eth_cleanup(VLANClientState *nc)
+static void eth_cleanup(NetClientState *nc)
{
/* FIXME. */
struct XilinxAXIEnet *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/hw/xilinx_ethlite.c b/hw/xilinx_ethlite.c
index 857b33d..57cf453 100644
--- a/hw/xilinx_ethlite.c
+++ b/hw/xilinx_ethlite.c
@@ -160,7 +160,7 @@ static const MemoryRegionOps eth_ops = {
}
};
-static int eth_can_rx(VLANClientState *nc)
+static int eth_can_rx(NetClientState *nc)
{
struct xlx_ethlite *s = DO_UPCAST(NICState, nc, nc)->opaque;
int r;
@@ -168,7 +168,7 @@ static int eth_can_rx(VLANClientState *nc)
return r;
}
-static ssize_t eth_rx(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t eth_rx(NetClientState *nc, const uint8_t *buf, size_t size)
{
struct xlx_ethlite *s = DO_UPCAST(NICState, nc, nc)->opaque;
unsigned int rxbase = s->rxbuf * (0x800 / 4);
@@ -194,7 +194,7 @@ static ssize_t eth_rx(VLANClientState *nc, const uint8_t *buf, size_t size)
return size;
}
-static void eth_cleanup(VLANClientState *nc)
+static void eth_cleanup(NetClientState *nc)
{
struct xlx_ethlite *s = DO_UPCAST(NICState, nc, nc)->opaque;
diff --git a/net.c b/net.c
index a510e27..06b174c 100644
--- a/net.c
+++ b/net.c
@@ -44,7 +44,7 @@
# define CONFIG_NET_BRIDGE
#endif
-static QTAILQ_HEAD(, VLANClientState) net_clients;
+static QTAILQ_HEAD(, NetClientState) net_clients;
int default_net = 1;
@@ -129,7 +129,7 @@ int parse_host_port(struct sockaddr_in *saddr, const char *str)
return 0;
}
-void qemu_format_nic_info_str(VLANClientState *vc, uint8_t macaddr[6])
+void qemu_format_nic_info_str(NetClientState *vc, uint8_t macaddr[6])
{
snprintf(vc->info_str, sizeof(vc->info_str),
"model=%s,macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
@@ -159,9 +159,9 @@ void qemu_macaddr_default_if_unset(MACAddr *macaddr)
* Only net clients created with the legacy -net option need this. Naming is
* mandatory for net clients created with -netdev.
*/
-static char *assign_name(VLANClientState *vc1, const char *model)
+static char *assign_name(NetClientState *vc1, const char *model)
{
- VLANClientState *vc;
+ NetClientState *vc;
char buf[256];
int id = 0;
@@ -181,25 +181,25 @@ static char *assign_name(VLANClientState *vc1, const char *model)
return g_strdup(buf);
}
-static ssize_t qemu_deliver_packet(VLANClientState *sender,
+static ssize_t qemu_deliver_packet(NetClientState *sender,
unsigned flags,
const uint8_t *data,
size_t size,
void *opaque);
-static ssize_t qemu_deliver_packet_iov(VLANClientState *sender,
+static ssize_t qemu_deliver_packet_iov(NetClientState *sender,
unsigned flags,
const struct iovec *iov,
int iovcnt,
void *opaque);
-VLANClientState *qemu_new_net_client(NetClientInfo *info,
- VLANClientState *peer,
- const char *model,
- const char *name)
+NetClientState *qemu_new_net_client(NetClientInfo *info,
+ NetClientState *peer,
+ const char *model,
+ const char *name)
{
- VLANClientState *vc;
+ NetClientState *vc;
- assert(info->size >= sizeof(VLANClientState));
+ assert(info->size >= sizeof(NetClientState));
vc = g_malloc0(info->size);
@@ -231,7 +231,7 @@ NICState *qemu_new_nic(NetClientInfo *info,
const char *name,
void *opaque)
{
- VLANClientState *nc;
+ NetClientState *nc;
NICState *nic;
assert(info->type == NET_CLIENT_TYPE_NIC);
@@ -246,7 +246,7 @@ NICState *qemu_new_nic(NetClientInfo *info,
return nic;
}
-static void qemu_cleanup_vlan_client(VLANClientState *vc)
+static void qemu_cleanup_vlan_client(NetClientState *vc)
{
QTAILQ_REMOVE(&net_clients, vc, next);
@@ -255,7 +255,7 @@ static void qemu_cleanup_vlan_client(VLANClientState *vc)
}
}
-static void qemu_free_vlan_client(VLANClientState *vc)
+static void qemu_free_vlan_client(NetClientState *vc)
{
if (vc->send_queue) {
qemu_del_net_queue(vc->send_queue);
@@ -268,7 +268,7 @@ static void qemu_free_vlan_client(VLANClientState *vc)
g_free(vc);
}
-void qemu_del_vlan_client(VLANClientState *vc)
+void qemu_del_vlan_client(NetClientState *vc)
{
/* If there is a peer NIC, delete and cleanup client, but do not free. */
if (vc->peer && vc->peer->info->type == NET_CLIENT_TYPE_NIC) {
@@ -300,7 +300,7 @@ void qemu_del_vlan_client(VLANClientState *vc)
void qemu_foreach_nic(qemu_nic_foreach func, void *opaque)
{
- VLANClientState *nc;
+ NetClientState *nc;
QTAILQ_FOREACH(nc, &net_clients, next) {
if (nc->info->type == NET_CLIENT_TYPE_NIC) {
@@ -309,7 +309,7 @@ void qemu_foreach_nic(qemu_nic_foreach func, void *opaque)
}
}
-int qemu_can_send_packet(VLANClientState *sender)
+int qemu_can_send_packet(NetClientState *sender)
{
if (!sender->peer) {
return 1;
@@ -324,13 +324,13 @@ int qemu_can_send_packet(VLANClientState *sender)
return 1;
}
-static ssize_t qemu_deliver_packet(VLANClientState *sender,
+static ssize_t qemu_deliver_packet(NetClientState *sender,
unsigned flags,
const uint8_t *data,
size_t size,
void *opaque)
{
- VLANClientState *vc = opaque;
+ NetClientState *vc = opaque;
ssize_t ret;
if (vc->link_down) {
@@ -354,7 +354,7 @@ static ssize_t qemu_deliver_packet(VLANClientState *sender,
return ret;
}
-void qemu_purge_queued_packets(VLANClientState *vc)
+void qemu_purge_queued_packets(NetClientState *vc)
{
if (!vc->peer) {
return;
@@ -363,14 +363,14 @@ void qemu_purge_queued_packets(VLANClientState *vc)
qemu_net_queue_purge(vc->peer->send_queue, vc);
}
-void qemu_flush_queued_packets(VLANClientState *vc)
+void qemu_flush_queued_packets(NetClientState *vc)
{
vc->receive_disabled = 0;
qemu_net_queue_flush(vc->send_queue);
}
-static ssize_t qemu_send_packet_async_with_flags(VLANClientState *sender,
+static ssize_t qemu_send_packet_async_with_flags(NetClientState *sender,
unsigned flags,
const uint8_t *buf, int size,
NetPacketSent *sent_cb)
@@ -391,7 +391,7 @@ static ssize_t qemu_send_packet_async_with_flags(VLANClientState *sender,
return qemu_net_queue_send(queue, sender, flags, buf, size, sent_cb);
}
-ssize_t qemu_send_packet_async(VLANClientState *sender,
+ssize_t qemu_send_packet_async(NetClientState *sender,
const uint8_t *buf, int size,
NetPacketSent *sent_cb)
{
@@ -399,18 +399,18 @@ ssize_t qemu_send_packet_async(VLANClientState *sender,
buf, size, sent_cb);
}
-void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size)
+void qemu_send_packet(NetClientState *vc, const uint8_t *buf, int size)
{
qemu_send_packet_async(vc, buf, size, NULL);
}
-ssize_t qemu_send_packet_raw(VLANClientState *vc, const uint8_t *buf, int size)
+ssize_t qemu_send_packet_raw(NetClientState *vc, const uint8_t *buf, int size)
{
return qemu_send_packet_async_with_flags(vc, QEMU_NET_PACKET_FLAG_RAW,
buf, size, NULL);
}
-static ssize_t vc_sendv_compat(VLANClientState *vc, const struct iovec *iov,
+static ssize_t vc_sendv_compat(NetClientState *vc, const struct iovec *iov,
int iovcnt)
{
uint8_t buffer[4096];
@@ -421,13 +421,13 @@ static ssize_t vc_sendv_compat(VLANClientState *vc, const struct iovec *iov,
return vc->info->receive(vc, buffer, offset);
}
-static ssize_t qemu_deliver_packet_iov(VLANClientState *sender,
+static ssize_t qemu_deliver_packet_iov(NetClientState *sender,
unsigned flags,
const struct iovec *iov,
int iovcnt,
void *opaque)
{
- VLANClientState *vc = opaque;
+ NetClientState *vc = opaque;
if (vc->link_down) {
return iov_size(iov, iovcnt);
@@ -440,7 +440,7 @@ static ssize_t qemu_deliver_packet_iov(VLANClientState *sender,
}
}
-ssize_t qemu_sendv_packet_async(VLANClientState *sender,
+ssize_t qemu_sendv_packet_async(NetClientState *sender,
const struct iovec *iov, int iovcnt,
NetPacketSent *sent_cb)
{
@@ -458,14 +458,14 @@ ssize_t qemu_sendv_packet_async(VLANClientState *sender,
}
ssize_t
-qemu_sendv_packet(VLANClientState *vc, const struct iovec *iov, int iovcnt)
+qemu_sendv_packet(NetClientState *vc, const struct iovec *iov, int iovcnt)
{
return qemu_sendv_packet_async(vc, iov, iovcnt, NULL);
}
-VLANClientState *qemu_find_netdev(const char *id)
+NetClientState *qemu_find_netdev(const char *id)
{
- VLANClientState *vc;
+ NetClientState *vc;
QTAILQ_FOREACH(vc, &net_clients, next) {
if (vc->info->type == NET_CLIENT_TYPE_NIC)
@@ -552,7 +552,7 @@ int net_handle_fd_param(Monitor *mon, const char *param)
static int net_init_nic(QemuOpts *opts,
Monitor *mon,
const char *name,
- VLANClientState *peer)
+ NetClientState *peer)
{
int idx;
NICInfo *nd;
@@ -627,7 +627,7 @@ static int net_init_nic(QemuOpts *opts,
typedef int NetClientInitFunc(QemuOpts *opts,
Monitor *mon,
const char *name,
- VLANClientState *peer);
+ NetClientState *peer);
/* magic number, but compiler will warn if too small */
#define NET_MAX_DESC 20
@@ -940,7 +940,7 @@ int net_client_init(Monitor *mon, QemuOpts *opts, int is_netdev)
for (i = 0; i < NET_CLIENT_TYPE_MAX; i++) {
if (net_client_types[i].type != NULL &&
!strcmp(net_client_types[i].type, type)) {
- VLANClientState *peer = NULL;
+ NetClientState *peer = NULL;
int ret;
if (qemu_opts_validate(opts, &net_client_types[i].desc[0]) == -1) {
@@ -1020,7 +1020,7 @@ void net_host_device_add(Monitor *mon, const QDict *qdict)
void net_host_device_remove(Monitor *mon, const QDict *qdict)
{
- VLANClientState *vc;
+ NetClientState *vc;
int vlan_id = qdict_get_int(qdict, "vlan_id");
const char *device = qdict_get_str(qdict, "device");
@@ -1056,7 +1056,7 @@ int do_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
int do_netdev_del(Monitor *mon, const QDict *qdict, QObject **ret_data)
{
const char *id = qdict_get_str(qdict, "id");
- VLANClientState *vc;
+ NetClientState *vc;
vc = qemu_find_netdev(id);
if (!vc) {
@@ -1068,7 +1068,7 @@ int do_netdev_del(Monitor *mon, const QDict *qdict, QObject **ret_data)
return 0;
}
-static void print_net_client(Monitor *mon, VLANClientState *vc)
+static void print_net_client(Monitor *mon, NetClientState *vc)
{
monitor_printf(mon, "%s: type=%s,%s\n", vc->name,
net_client_types[vc->info->type].type, vc->info_str);
@@ -1076,7 +1076,7 @@ static void print_net_client(Monitor *mon, VLANClientState *vc)
void do_info_network(Monitor *mon)
{
- VLANClientState *vc, *peer;
+ NetClientState *vc, *peer;
net_client_type type;
monitor_printf(mon, "Devices not on any VLAN:\n");
@@ -1105,7 +1105,6 @@ void qmp_set_link(const char *name, bool up, Error **errp)
}
}
done:
-
if (!vc) {
qerror_report(QERR_DEVICE_NOT_FOUND, name);
return;
@@ -1131,7 +1130,7 @@ done:
void net_cleanup(void)
{
- VLANClientState *vc, *next_vc;
+ NetClientState *vc, *next_vc;
QTAILQ_FOREACH_SAFE(vc, &net_clients, next, next_vc) {
qemu_del_vlan_client(vc);
@@ -1140,7 +1139,7 @@ void net_cleanup(void)
void net_check_clients(void)
{
- VLANClientState *vc;
+ NetClientState *vc;
int i;
/* Don't warn about the default network setup that you get if
diff --git a/net.h b/net.h
index efb6508..418d1d0 100644
--- a/net.h
+++ b/net.h
@@ -16,7 +16,7 @@ struct MACAddr {
typedef struct NICConf {
MACAddr macaddr;
- VLANClientState *peer;
+ NetClientState *peer;
int32_t bootindex;
} NICConf;
@@ -25,7 +25,7 @@ typedef struct NICConf {
DEFINE_PROP_NETDEV("netdev", _state, _conf.peer), \
DEFINE_PROP_INT32("bootindex", _state, _conf.bootindex, -1)
-/* VLANs support */
+/* Net clients */
typedef enum {
NET_CLIENT_TYPE_NONE,
@@ -41,12 +41,12 @@ typedef enum {
NET_CLIENT_TYPE_MAX
} net_client_type;
-typedef void (NetPoll)(VLANClientState *, bool enable);
-typedef int (NetCanReceive)(VLANClientState *);
-typedef ssize_t (NetReceive)(VLANClientState *, const uint8_t *, size_t);
-typedef ssize_t (NetReceiveIOV)(VLANClientState *, const struct iovec *, int);
-typedef void (NetCleanup) (VLANClientState *);
-typedef void (LinkStatusChanged)(VLANClientState *);
+typedef void (NetPoll)(NetClientState *, bool enable);
+typedef int (NetCanReceive)(NetClientState *);
+typedef ssize_t (NetReceive)(NetClientState *, const uint8_t *, size_t);
+typedef ssize_t (NetReceiveIOV)(NetClientState *, const struct iovec *, int);
+typedef void (NetCleanup) (NetClientState *);
+typedef void (LinkStatusChanged)(NetClientState *);
typedef struct NetClientInfo {
net_client_type type;
@@ -60,11 +60,11 @@ typedef struct NetClientInfo {
NetPoll *poll;
} NetClientInfo;
-struct VLANClientState {
+struct NetClientState {
NetClientInfo *info;
int link_down;
- QTAILQ_ENTRY(VLANClientState) next;
- VLANClientState *peer;
+ QTAILQ_ENTRY(NetClientState) next;
+ NetClientState *peer;
NetQueue *send_queue;
char *model;
char *name;
@@ -73,39 +73,39 @@ struct VLANClientState {
};
typedef struct NICState {
- VLANClientState nc;
+ NetClientState nc;
NICConf *conf;
void *opaque;
bool peer_deleted;
} NICState;
-VLANClientState *qemu_find_netdev(const char *id);
-VLANClientState *qemu_new_net_client(NetClientInfo *info,
- VLANClientState *peer,
- const char *model,
- const char *name);
+NetClientState *qemu_find_netdev(const char *id);
+NetClientState *qemu_new_net_client(NetClientInfo *info,
+ NetClientState *peer,
+ const char *model,
+ const char *name);
NICState *qemu_new_nic(NetClientInfo *info,
NICConf *conf,
const char *model,
const char *name,
void *opaque);
-void qemu_del_vlan_client(VLANClientState *vc);
-VLANClientState *qemu_find_vlan_client_by_name(Monitor *mon, int vlan_id,
- const char *client_str);
+void qemu_del_vlan_client(NetClientState *vc);
+NetClientState *qemu_find_vlan_client_by_name(Monitor *mon, int vlan_id,
+ const char *client_str);
typedef void (*qemu_nic_foreach)(NICState *nic, void *opaque);
void qemu_foreach_nic(qemu_nic_foreach func, void *opaque);
-int qemu_can_send_packet(VLANClientState *vc);
-ssize_t qemu_sendv_packet(VLANClientState *vc, const struct iovec *iov,
+int qemu_can_send_packet(NetClientState *vc);
+ssize_t qemu_sendv_packet(NetClientState *vc, const struct iovec *iov,
int iovcnt);
-ssize_t qemu_sendv_packet_async(VLANClientState *vc, const struct iovec *iov,
+ssize_t qemu_sendv_packet_async(NetClientState *vc, const struct iovec *iov,
int iovcnt, NetPacketSent *sent_cb);
-void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size);
-ssize_t qemu_send_packet_raw(VLANClientState *vc, const uint8_t *buf, int size);
-ssize_t qemu_send_packet_async(VLANClientState *vc, const uint8_t *buf,
+void qemu_send_packet(NetClientState *vc, const uint8_t *buf, int size);
+ssize_t qemu_send_packet_raw(NetClientState *vc, const uint8_t *buf, int size);
+ssize_t qemu_send_packet_async(NetClientState *vc, const uint8_t *buf,
int size, NetPacketSent *sent_cb);
-void qemu_purge_queued_packets(VLANClientState *vc);
-void qemu_flush_queued_packets(VLANClientState *vc);
-void qemu_format_nic_info_str(VLANClientState *vc, uint8_t macaddr[6]);
+void qemu_purge_queued_packets(NetClientState *vc);
+void qemu_flush_queued_packets(NetClientState *vc);
+void qemu_format_nic_info_str(NetClientState *vc, uint8_t macaddr[6]);
void qemu_macaddr_default_if_unset(MACAddr *macaddr);
int qemu_show_nic_models(const char *arg, const char *const *models);
void qemu_check_nic_model(NICInfo *nd, const char *model);
@@ -123,7 +123,7 @@ struct NICInfo {
char *model;
char *name;
char *devaddr;
- VLANClientState *netdev;
+ NetClientState *netdev;
int used; /* is this slot in nd_table[] being used? */
int instantiated; /* does this NICInfo correspond to an instantiated NIC? */
int nvectors;
diff --git a/net/dump.c b/net/dump.c
index 621f4e7..0f191d3 100644
--- a/net/dump.c
+++ b/net/dump.c
@@ -30,7 +30,7 @@
#include "hub.h"
typedef struct DumpState {
- VLANClientState nc;
+ NetClientState nc;
int64_t start_ts;
int fd;
int pcap_caplen;
@@ -57,7 +57,7 @@ struct pcap_sf_pkthdr {
uint32_t len;
};
-static ssize_t dump_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t dump_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
DumpState *s = DO_UPCAST(DumpState, nc, nc);
struct pcap_sf_pkthdr hdr;
@@ -86,7 +86,7 @@ static ssize_t dump_receive(VLANClientState *nc, const uint8_t *buf, size_t size
return size;
}
-static void dump_cleanup(VLANClientState *nc)
+static void dump_cleanup(NetClientState *nc)
{
DumpState *s = DO_UPCAST(DumpState, nc, nc);
@@ -100,11 +100,11 @@ static NetClientInfo net_dump_info = {
.cleanup = dump_cleanup,
};
-static int net_dump_init(VLANClientState *peer, const char *device,
+static int net_dump_init(NetClientState *peer, const char *device,
const char *name, const char *filename, int len)
{
struct pcap_file_hdr hdr;
- VLANClientState *nc;
+ NetClientState *nc;
DumpState *s;
struct tm tm;
int fd;
@@ -146,7 +146,7 @@ static int net_dump_init(VLANClientState *peer, const char *device,
}
int net_init_dump(QemuOpts *opts, Monitor *mon, const char *name,
- VLANClientState *peer)
+ NetClientState *peer)
{
int len;
const char *file;
diff --git a/net/dump.h b/net/dump.h
index 408c652..df22afe 100644
--- a/net/dump.h
+++ b/net/dump.h
@@ -28,6 +28,6 @@
#include "qemu-common.h"
int net_init_dump(QemuOpts *opts, Monitor *mon,
- const char *name, VLANClientState *peer);
+ const char *name, NetClientState *peer);
#endif /* QEMU_NET_DUMP_H */
diff --git a/net/hub.c b/net/hub.c
index fc305ac..a716e19 100644
--- a/net/hub.c
+++ b/net/hub.c
@@ -24,7 +24,7 @@
typedef struct NetHub NetHub;
typedef struct NetHubPort {
- VLANClientState nc;
+ NetClientState nc;
QLIST_ENTRY(NetHubPort) next;
NetHub *hub;
unsigned int id;
@@ -88,7 +88,7 @@ static NetHub *net_hub_new(unsigned int id)
return hub;
}
-static ssize_t net_hub_port_receive(VLANClientState *nc,
+static ssize_t net_hub_port_receive(NetClientState *nc,
const uint8_t *buf, size_t len)
{
NetHubPort *port = DO_UPCAST(NetHubPort, nc, nc);
@@ -96,7 +96,7 @@ static ssize_t net_hub_port_receive(VLANClientState *nc,
return net_hub_receive(port->hub, port, buf, len);
}
-static ssize_t net_hub_port_receive_iov(VLANClientState *nc,
+static ssize_t net_hub_port_receive_iov(NetClientState *nc,
const struct iovec *iov, int iovcnt)
{
NetHubPort *port = DO_UPCAST(NetHubPort, nc, nc);
@@ -104,7 +104,7 @@ static ssize_t net_hub_port_receive_iov(VLANClientState *nc,
return net_hub_receive_iov(port->hub, port, iov, iovcnt);
}
-static void net_hub_port_cleanup(VLANClientState *nc)
+static void net_hub_port_cleanup(NetClientState *nc)
{
NetHubPort *port = DO_UPCAST(NetHubPort, nc, nc);
@@ -121,7 +121,7 @@ static NetClientInfo net_hub_port_info = {
static NetHubPort *net_hub_port_new(NetHub *hub)
{
- VLANClientState *nc;
+ NetClientState *nc;
NetHubPort *port;
unsigned int id = hub->num_ports++;
char name[128];
@@ -143,7 +143,7 @@ static NetHubPort *net_hub_port_new(NetHub *hub)
*
* If there is no existing hub with the given id then a new hub is created.
*/
-VLANClientState *net_hub_add_port(unsigned int hub_id)
+NetClientState *net_hub_add_port(unsigned int hub_id)
{
NetHub *hub;
NetHubPort *port;
@@ -165,12 +165,12 @@ VLANClientState *net_hub_add_port(unsigned int hub_id)
/**
* Find a specific client on a hub
*/
-VLANClientState *net_hub_find_client_by_name(unsigned int hub_id,
- const char *name)
+NetClientState *net_hub_find_client_by_name(unsigned int hub_id,
+ const char *name)
{
NetHub *hub;
NetHubPort *port;
- VLANClientState *peer;
+ NetClientState *peer;
QLIST_FOREACH(hub, &hubs, next) {
if (hub->id == hub_id) {
@@ -208,7 +208,7 @@ void net_hub_info(Monitor *mon)
*
* @id Pointer for hub id output, may be NULL
*/
-int net_hub_id_for_client(VLANClientState *nc, unsigned int *id)
+int net_hub_id_for_client(NetClientState *nc, unsigned int *id)
{
NetHub *hub;
NetHubPort *port;
@@ -234,7 +234,7 @@ void net_hub_check_clients(void)
{
NetHub *hub;
NetHubPort *port;
- VLANClientState *peer;
+ NetClientState *peer;
QLIST_FOREACH(hub, &hubs, next) {
int has_nic = 0, has_host_dev = 0;
diff --git a/net/hub.h b/net/hub.h
index caa3b16..d04f1b1 100644
--- a/net/hub.h
+++ b/net/hub.h
@@ -16,11 +16,11 @@
#include "qemu-common.h"
-VLANClientState *net_hub_add_port(unsigned int hub_id);
-VLANClientState *net_hub_find_client_by_name(unsigned int hub_id,
- const char *name);
+NetClientState *net_hub_add_port(unsigned int hub_id);
+NetClientState *net_hub_find_client_by_name(unsigned int hub_id,
+ const char *name);
void net_hub_info(Monitor *mon);
-int net_hub_id_for_client(VLANClientState *nc, unsigned int *id);
+int net_hub_id_for_client(NetClientState *nc, unsigned int *id);
void net_hub_check_clients(void);
#endif /* NET_HUB_H */
diff --git a/net/queue.c b/net/queue.c
index 1ab5247..35c3463 100644
--- a/net/queue.c
+++ b/net/queue.c
@@ -40,7 +40,7 @@
struct NetPacket {
QTAILQ_ENTRY(NetPacket) entry;
- VLANClientState *sender;
+ NetClientState *sender;
unsigned flags;
int size;
NetPacketSent *sent_cb;
@@ -89,7 +89,7 @@ void qemu_del_net_queue(NetQueue *queue)
}
static ssize_t qemu_net_queue_append(NetQueue *queue,
- VLANClientState *sender,
+ NetClientState *sender,
unsigned flags,
const uint8_t *buf,
size_t size,
@@ -110,7 +110,7 @@ static ssize_t qemu_net_queue_append(NetQueue *queue,
}
static ssize_t qemu_net_queue_append_iov(NetQueue *queue,
- VLANClientState *sender,
+ NetClientState *sender,
unsigned flags,
const struct iovec *iov,
int iovcnt,
@@ -143,7 +143,7 @@ static ssize_t qemu_net_queue_append_iov(NetQueue *queue,
}
static ssize_t qemu_net_queue_deliver(NetQueue *queue,
- VLANClientState *sender,
+ NetClientState *sender,
unsigned flags,
const uint8_t *data,
size_t size)
@@ -158,7 +158,7 @@ static ssize_t qemu_net_queue_deliver(NetQueue *queue,
}
static ssize_t qemu_net_queue_deliver_iov(NetQueue *queue,
- VLANClientState *sender,
+ NetClientState *sender,
unsigned flags,
const struct iovec *iov,
int iovcnt)
@@ -173,7 +173,7 @@ static ssize_t qemu_net_queue_deliver_iov(NetQueue *queue,
}
ssize_t qemu_net_queue_send(NetQueue *queue,
- VLANClientState *sender,
+ NetClientState *sender,
unsigned flags,
const uint8_t *data,
size_t size,
@@ -197,7 +197,7 @@ ssize_t qemu_net_queue_send(NetQueue *queue,
}
ssize_t qemu_net_queue_send_iov(NetQueue *queue,
- VLANClientState *sender,
+ NetClientState *sender,
unsigned flags,
const struct iovec *iov,
int iovcnt,
@@ -220,7 +220,7 @@ ssize_t qemu_net_queue_send_iov(NetQueue *queue,
return ret;
}
-void qemu_net_queue_purge(NetQueue *queue, VLANClientState *from)
+void qemu_net_queue_purge(NetQueue *queue, NetClientState *from)
{
NetPacket *packet, *next;
diff --git a/net/queue.h b/net/queue.h
index a31958e..d8eac0b 100644
--- a/net/queue.h
+++ b/net/queue.h
@@ -29,15 +29,15 @@
typedef struct NetPacket NetPacket;
typedef struct NetQueue NetQueue;
-typedef void (NetPacketSent) (VLANClientState *sender, ssize_t ret);
+typedef void (NetPacketSent) (NetClientState *sender, ssize_t ret);
-typedef ssize_t (NetPacketDeliver) (VLANClientState *sender,
+typedef ssize_t (NetPacketDeliver) (NetClientState *sender,
unsigned flags,
const uint8_t *buf,
size_t size,
void *opaque);
-typedef ssize_t (NetPacketDeliverIOV) (VLANClientState *sender,
+typedef ssize_t (NetPacketDeliverIOV) (NetClientState *sender,
unsigned flags,
const struct iovec *iov,
int iovcnt,
@@ -52,20 +52,20 @@ NetQueue *qemu_new_net_queue(NetPacketDeliver *deliver,
void qemu_del_net_queue(NetQueue *queue);
ssize_t qemu_net_queue_send(NetQueue *queue,
- VLANClientState *sender,
+ NetClientState *sender,
unsigned flags,
const uint8_t *data,
size_t size,
NetPacketSent *sent_cb);
ssize_t qemu_net_queue_send_iov(NetQueue *queue,
- VLANClientState *sender,
+ NetClientState *sender,
unsigned flags,
const struct iovec *iov,
int iovcnt,
NetPacketSent *sent_cb);
-void qemu_net_queue_purge(NetQueue *queue, VLANClientState *from);
+void qemu_net_queue_purge(NetQueue *queue, NetClientState *from);
void qemu_net_queue_flush(NetQueue *queue);
#endif /* QEMU_NET_QUEUE_H */
diff --git a/net/slirp.c b/net/slirp.c
index 31c4d34..142b6b6 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -67,7 +67,7 @@ struct slirp_config_str {
};
typedef struct SlirpState {
- VLANClientState nc;
+ NetClientState nc;
QTAILQ_ENTRY(SlirpState) entry;
Slirp *slirp;
#ifndef _WIN32
@@ -110,7 +110,7 @@ void slirp_output(void *opaque, const uint8_t *pkt, int pkt_len)
qemu_send_packet(&s->nc, pkt, pkt_len);
}
-static ssize_t net_slirp_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t net_slirp_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
SlirpState *s = DO_UPCAST(SlirpState, nc, nc);
@@ -119,7 +119,7 @@ static ssize_t net_slirp_receive(VLANClientState *nc, const uint8_t *buf, size_t
return size;
}
-static void net_slirp_cleanup(VLANClientState *nc)
+static void net_slirp_cleanup(NetClientState *nc)
{
SlirpState *s = DO_UPCAST(SlirpState, nc, nc);
@@ -135,7 +135,7 @@ static NetClientInfo net_slirp_info = {
.cleanup = net_slirp_cleanup,
};
-static int net_slirp_init(VLANClientState *peer, const char *model,
+static int net_slirp_init(NetClientState *peer, const char *model,
const char *name, int restricted,
const char *vnetwork, const char *vhost,
const char *vhostname, const char *tftp_export,
@@ -152,7 +152,7 @@ static int net_slirp_init(VLANClientState *peer, const char *model,
#ifndef _WIN32
struct in_addr smbsrv = { .s_addr = 0 };
#endif
- VLANClientState *nc;
+ NetClientState *nc;
SlirpState *s;
char buf[20];
uint32_t addr;
@@ -283,7 +283,7 @@ static SlirpState *slirp_lookup(Monitor *mon, const char *vlan,
{
if (vlan) {
- VLANClientState *nc;
+ NetClientState *nc;
nc = net_hub_find_client_by_name(strtol(vlan, NULL, 0), stack);
if (!nc) {
return NULL;
@@ -679,7 +679,7 @@ static int net_init_slirp_configs(const char *name, const char *value, void *opa
int net_init_slirp(QemuOpts *opts,
Monitor *mon,
const char *name,
- VLANClientState *peer)
+ NetClientState *peer)
{
struct slirp_config_str *config;
const char *vhost;
diff --git a/net/slirp.h b/net/slirp.h
index 32041cb..e6000af 100644
--- a/net/slirp.h
+++ b/net/slirp.h
@@ -33,7 +33,7 @@
int net_init_slirp(QemuOpts *opts,
Monitor *mon,
const char *name,
- VLANClientState *peer);
+ NetClientState *peer);
void net_slirp_hostfwd_add(Monitor *mon, const QDict *qdict);
void net_slirp_hostfwd_remove(Monitor *mon, const QDict *qdict);
diff --git a/net/socket.c b/net/socket.c
index 5676bd5..55d9820 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -33,7 +33,7 @@
#include "qemu_socket.h"
typedef struct NetSocketState {
- VLANClientState nc;
+ NetClientState nc;
int fd;
int state; /* 0 = getting length, 1 = getting data */
unsigned int index;
@@ -43,14 +43,14 @@ typedef struct NetSocketState {
} NetSocketState;
typedef struct NetSocketListenState {
- VLANClientState *peer;
+ NetClientState *peer;
char *model;
char *name;
int fd;
} NetSocketListenState;
/* XXX: we consider we can send the whole packet without blocking */
-static ssize_t net_socket_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t net_socket_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
NetSocketState *s = DO_UPCAST(NetSocketState, nc, nc);
uint32_t len;
@@ -60,7 +60,7 @@ static ssize_t net_socket_receive(VLANClientState *nc, const uint8_t *buf, size_
return send_all(s->fd, buf, size);
}
-static ssize_t net_socket_receive_dgram(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t net_socket_receive_dgram(NetClientState *nc, const uint8_t *buf, size_t size)
{
NetSocketState *s = DO_UPCAST(NetSocketState, nc, nc);
@@ -230,7 +230,7 @@ fail:
return -1;
}
-static void net_socket_cleanup(VLANClientState *nc)
+static void net_socket_cleanup(NetClientState *nc)
{
NetSocketState *s = DO_UPCAST(NetSocketState, nc, nc);
qemu_set_fd_handler(s->fd, NULL, NULL, NULL);
@@ -244,7 +244,7 @@ static NetClientInfo net_dgram_socket_info = {
.cleanup = net_socket_cleanup,
};
-static NetSocketState *net_socket_fd_init_dgram(VLANClientState *peer,
+static NetSocketState *net_socket_fd_init_dgram(NetClientState *peer,
const char *model,
const char *name,
int fd, int is_connected)
@@ -252,7 +252,7 @@ static NetSocketState *net_socket_fd_init_dgram(VLANClientState *peer,
struct sockaddr_in saddr;
int newfd;
socklen_t saddr_len;
- VLANClientState *nc;
+ NetClientState *nc;
NetSocketState *s;
/* fd passed: multicast: "learn" dgram_dst address from bound address and save it
@@ -322,12 +322,12 @@ static NetClientInfo net_socket_info = {
.cleanup = net_socket_cleanup,
};
-static NetSocketState *net_socket_fd_init_stream(VLANClientState *peer,
+static NetSocketState *net_socket_fd_init_stream(NetClientState *peer,
const char *model,
const char *name,
int fd, int is_connected)
{
- VLANClientState *nc;
+ NetClientState *nc;
NetSocketState *s;
nc = qemu_new_net_client(&net_socket_info, peer, model, name);
@@ -346,7 +346,7 @@ static NetSocketState *net_socket_fd_init_stream(VLANClientState *peer,
return s;
}
-static NetSocketState *net_socket_fd_init(VLANClientState *peer,
+static NetSocketState *net_socket_fd_init(NetClientState *peer,
const char *model, const char *name,
int fd, int is_connected)
{
@@ -399,7 +399,7 @@ static void net_socket_accept(void *opaque)
}
}
-static int net_socket_listen_init(VLANClientState *peer,
+static int net_socket_listen_init(NetClientState *peer,
const char *model,
const char *name,
const char *host_str)
@@ -447,7 +447,7 @@ static int net_socket_listen_init(VLANClientState *peer,
return 0;
}
-static int net_socket_connect_init(VLANClientState *peer,
+static int net_socket_connect_init(NetClientState *peer,
const char *model,
const char *name,
const char *host_str)
@@ -497,7 +497,7 @@ static int net_socket_connect_init(VLANClientState *peer,
return 0;
}
-static int net_socket_mcast_init(VLANClientState *peer,
+static int net_socket_mcast_init(NetClientState *peer,
const char *model,
const char *name,
const char *host_str,
@@ -590,7 +590,7 @@ static int net_socket_udp_init(NetClientState *peer,
int net_init_socket(QemuOpts *opts,
Monitor *mon,
const char *name,
- VLANClientState *peer)
+ NetClientState *peer)
{
if (qemu_opt_get(opts, "fd")) {
int fd;
diff --git a/net/socket.h b/net/socket.h
index f6172bc..5edf17c 100644
--- a/net/socket.h
+++ b/net/socket.h
@@ -28,6 +28,6 @@
#include "qemu-common.h"
int net_init_socket(QemuOpts *opts, Monitor *mon,
- const char *name, VLANClientState *peer);
+ const char *name, NetClientState *peer);
#endif /* QEMU_NET_SOCKET_H */
diff --git a/net/tap-win32.c b/net/tap-win32.c
index c1f90c7..68243bb 100644
--- a/net/tap-win32.c
+++ b/net/tap-win32.c
@@ -630,11 +630,11 @@ static int tap_win32_open(tap_win32_overlapped_t **phandle,
/********************************************/
typedef struct TAPState {
- VLANClientState nc;
+ NetClientState nc;
tap_win32_overlapped_t *handle;
} TAPState;
-static void tap_cleanup(VLANClientState *nc)
+static void tap_cleanup(NetClientState *nc)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
@@ -645,7 +645,7 @@ static void tap_cleanup(VLANClientState *nc)
*/
}
-static ssize_t tap_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t tap_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
@@ -673,10 +673,10 @@ static NetClientInfo net_tap_win32_info = {
.cleanup = tap_cleanup,
};
-static int tap_win32_init(VLANClientState *peer, const char *model,
+static int tap_win32_init(NetClientState *peer, const char *model,
const char *name, const char *ifname)
{
- VLANClientState *nc;
+ NetClientState *nc;
TAPState *s;
tap_win32_overlapped_t *handle;
@@ -700,7 +700,7 @@ static int tap_win32_init(VLANClientState *peer, const char *model,
}
int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name,
- VLANClientState *peer)
+ NetClientState *peer)
{
const char *ifname;
@@ -718,12 +718,12 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name,
return 0;
}
-int tap_has_ufo(VLANClientState *vc)
+int tap_has_ufo(NetClientState *vc)
{
return 0;
}
-int tap_has_vnet_hdr(VLANClientState *vc)
+int tap_has_vnet_hdr(NetClientState *vc)
{
return 0;
}
@@ -737,16 +737,16 @@ void tap_fd_set_vnet_hdr_len(int fd, int len)
{
}
-void tap_using_vnet_hdr(VLANClientState *vc, int using_vnet_hdr)
+void tap_using_vnet_hdr(NetClientState *vc, int using_vnet_hdr)
{
}
-void tap_set_offload(VLANClientState *vc, int csum, int tso4,
+void tap_set_offload(NetClientState *vc, int csum, int tso4,
int tso6, int ecn, int ufo)
{
}
-struct vhost_net *tap_get_vhost_net(VLANClientState *nc)
+struct vhost_net *tap_get_vhost_net(NetClientState *nc)
{
return NULL;
}
diff --git a/net/tap.c b/net/tap.c
index 7dbf643..65f45b8 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -49,7 +49,7 @@
#define TAP_BUFSIZE (4096 + 65536)
typedef struct TAPState {
- VLANClientState nc;
+ NetClientState nc;
int fd;
char down_script[1024];
char down_script_arg[128];
@@ -114,7 +114,7 @@ static ssize_t tap_write_packet(TAPState *s, const struct iovec *iov, int iovcnt
return len;
}
-static ssize_t tap_receive_iov(VLANClientState *nc, const struct iovec *iov,
+static ssize_t tap_receive_iov(NetClientState *nc, const struct iovec *iov,
int iovcnt)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
@@ -133,7 +133,7 @@ static ssize_t tap_receive_iov(VLANClientState *nc, const struct iovec *iov,
return tap_write_packet(s, iovp, iovcnt);
}
-static ssize_t tap_receive_raw(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t tap_receive_raw(NetClientState *nc, const uint8_t *buf, size_t size)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
struct iovec iov[2];
@@ -153,7 +153,7 @@ static ssize_t tap_receive_raw(VLANClientState *nc, const uint8_t *buf, size_t s
return tap_write_packet(s, iov, iovcnt);
}
-static ssize_t tap_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t tap_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
struct iovec iov[1];
@@ -182,7 +182,7 @@ ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen)
}
#endif
-static void tap_send_completed(VLANClientState *nc, ssize_t len)
+static void tap_send_completed(NetClientState *nc, ssize_t len)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
tap_read_poll(s, 1);
@@ -213,7 +213,7 @@ static void tap_send(void *opaque)
} while (size > 0 && qemu_can_send_packet(&s->nc));
}
-int tap_has_ufo(VLANClientState *nc)
+int tap_has_ufo(NetClientState *nc)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
@@ -222,7 +222,7 @@ int tap_has_ufo(VLANClientState *nc)
return s->has_ufo;
}
-int tap_has_vnet_hdr(VLANClientState *nc)
+int tap_has_vnet_hdr(NetClientState *nc)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
@@ -231,7 +231,7 @@ int tap_has_vnet_hdr(VLANClientState *nc)
return !!s->host_vnet_hdr_len;
}
-int tap_has_vnet_hdr_len(VLANClientState *nc, int len)
+int tap_has_vnet_hdr_len(NetClientState *nc, int len)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
@@ -240,7 +240,7 @@ int tap_has_vnet_hdr_len(VLANClientState *nc, int len)
return tap_probe_vnet_hdr_len(s->fd, len);
}
-void tap_set_vnet_hdr_len(VLANClientState *nc, int len)
+void tap_set_vnet_hdr_len(NetClientState *nc, int len)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
@@ -252,7 +252,7 @@ void tap_set_vnet_hdr_len(VLANClientState *nc, int len)
s->host_vnet_hdr_len = len;
}
-void tap_using_vnet_hdr(VLANClientState *nc, int using_vnet_hdr)
+void tap_using_vnet_hdr(NetClientState *nc, int using_vnet_hdr)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
@@ -264,7 +264,7 @@ void tap_using_vnet_hdr(VLANClientState *nc, int using_vnet_hdr)
s->using_vnet_hdr = using_vnet_hdr;
}
-void tap_set_offload(VLANClientState *nc, int csum, int tso4,
+void tap_set_offload(NetClientState *nc, int csum, int tso4,
int tso6, int ecn, int ufo)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
@@ -275,7 +275,7 @@ void tap_set_offload(VLANClientState *nc, int csum, int tso4,
tap_fd_set_offload(s->fd, csum, tso4, tso6, ecn, ufo);
}
-static void tap_cleanup(VLANClientState *nc)
+static void tap_cleanup(NetClientState *nc)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
@@ -295,14 +295,14 @@ static void tap_cleanup(VLANClientState *nc)
s->fd = -1;
}
-static void tap_poll(VLANClientState *nc, bool enable)
+static void tap_poll(NetClientState *nc, bool enable)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
tap_read_poll(s, enable);
tap_write_poll(s, enable);
}
-int tap_get_fd(VLANClientState *nc)
+int tap_get_fd(NetClientState *nc)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
assert(nc->info->type == NET_CLIENT_TYPE_TAP);
@@ -321,13 +321,13 @@ static NetClientInfo net_tap_info = {
.cleanup = tap_cleanup,
};
-static TAPState *net_tap_fd_init(VLANClientState *peer,
+static TAPState *net_tap_fd_init(NetClientState *peer,
const char *model,
const char *name,
int fd,
int vnet_hdr)
{
- VLANClientState *nc;
+ NetClientState *nc;
TAPState *s;
nc = qemu_new_net_client(&net_tap_info, peer, model, name);
@@ -584,7 +584,7 @@ static int net_tap_init(QemuOpts *opts, int *vnet_hdr)
}
int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name,
- VLANClientState *peer)
+ NetClientState *peer)
{
TAPState *s;
int fd, vnet_hdr = 0;
@@ -709,7 +709,7 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name,
return 0;
}
-VHostNetState *tap_get_vhost_net(VLANClientState *nc)
+VHostNetState *tap_get_vhost_net(NetClientState *nc)
{
TAPState *s = DO_UPCAST(TAPState, nc, nc);
assert(nc->info->type == NET_CLIENT_TYPE_TAP);
diff --git a/net/tap.h b/net/tap.h
index 8d949cd..cf21d68 100644
--- a/net/tap.h
+++ b/net/tap.h
@@ -33,18 +33,18 @@
#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name,
- VLANClientState *peer);
+ NetClientState *peer);
int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required);
ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen);
-int tap_has_ufo(VLANClientState *vc);
-int tap_has_vnet_hdr(VLANClientState *vc);
-int tap_has_vnet_hdr_len(VLANClientState *vc, int len);
-void tap_using_vnet_hdr(VLANClientState *vc, int using_vnet_hdr);
-void tap_set_offload(VLANClientState *vc, int csum, int tso4, int tso6, int ecn, int ufo);
-void tap_set_vnet_hdr_len(VLANClientState *vc, int len);
+int tap_has_ufo(NetClientState *vc);
+int tap_has_vnet_hdr(NetClientState *vc);
+int tap_has_vnet_hdr_len(NetClientState *vc, int len);
+void tap_using_vnet_hdr(NetClientState *vc, int using_vnet_hdr);
+void tap_set_offload(NetClientState *vc, int csum, int tso4, int tso6, int ecn, int ufo);
+void tap_set_vnet_hdr_len(NetClientState *vc, int len);
int tap_set_sndbuf(int fd, QemuOpts *opts);
int tap_probe_vnet_hdr(int fd);
@@ -53,10 +53,10 @@ int tap_probe_has_ufo(int fd);
void tap_fd_set_offload(int fd, int csum, int tso4, int tso6, int ecn, int ufo);
void tap_fd_set_vnet_hdr_len(int fd, int len);
-int tap_get_fd(VLANClientState *vc);
+int tap_get_fd(NetClientState *vc);
struct vhost_net;
-struct vhost_net *tap_get_vhost_net(VLANClientState *vc);
+struct vhost_net *tap_get_vhost_net(NetClientState *vc);
int net_init_bridge(QemuOpts *opts, Monitor *mon, const char *name,
NetClientState *peer);
diff --git a/net/vde.c b/net/vde.c
index 24d12d4..8d9e1c6 100644
--- a/net/vde.c
+++ b/net/vde.c
@@ -33,7 +33,7 @@
#include "qemu-option.h"
typedef struct VDEState {
- VLANClientState nc;
+ NetClientState nc;
VDECONN *vde;
} VDEState;
@@ -49,7 +49,7 @@ static void vde_to_qemu(void *opaque)
}
}
-static ssize_t vde_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
+static ssize_t vde_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
VDEState *s = DO_UPCAST(VDEState, nc, nc);
ssize_t ret;
@@ -61,7 +61,7 @@ static ssize_t vde_receive(VLANClientState *nc, const uint8_t *buf, size_t size)
return ret;
}
-static void vde_cleanup(VLANClientState *nc)
+static void vde_cleanup(NetClientState *nc)
{
VDEState *s = DO_UPCAST(VDEState, nc, nc);
qemu_set_fd_handler(vde_datafd(s->vde), NULL, NULL, NULL);
@@ -75,11 +75,11 @@ static NetClientInfo net_vde_info = {
.cleanup = vde_cleanup,
};
-static int net_vde_init(VLANClientState *peer, const char *model,
+static int net_vde_init(NetClientState *peer, const char *model,
const char *name, const char *sock,
int port, const char *group, int mode)
{
- VLANClientState *nc;
+ NetClientState *nc;
VDEState *s;
VDECONN *vde;
char *init_group = (char *)group;
@@ -111,7 +111,7 @@ static int net_vde_init(VLANClientState *peer, const char *model,
}
int net_init_vde(QemuOpts *opts, Monitor *mon, const char *name,
- VLANClientState *peer)
+ NetClientState *peer)
{
const char *sock;
const char *group;
diff --git a/net/vde.h b/net/vde.h
index 69c4e92..276e1ff 100644
--- a/net/vde.h
+++ b/net/vde.h
@@ -30,7 +30,7 @@
#ifdef CONFIG_VDE
int net_init_vde(QemuOpts *opts, Monitor *mon, const char *name,
- VLANClientState *peer);
+ NetClientState *peer);
#endif /* CONFIG_VDE */
diff --git a/qemu-common.h b/qemu-common.h
index 45aeee0..48e9415 100644
--- a/qemu-common.h
+++ b/qemu-common.h
@@ -229,7 +229,7 @@ typedef struct TextConsole TextConsole;
typedef TextConsole QEMUConsole;
typedef struct CharDriverState CharDriverState;
typedef struct MACAddr MACAddr;
-typedef struct VLANClientState VLANClientState;
+typedef struct NetClientState NetClientState;
typedef struct i2c_bus i2c_bus;
typedef struct i2c_slave i2c_slave;
typedef struct ISABus ISABus;
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 11/12] net: Rename vc local variables to nc
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
` (9 preceding siblings ...)
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 10/12] net: Rename VLANClientState to NetClientState zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 12/12] net: Rename qemu_del_vlan_client() to qemu_del_net_client() zwu.kernel
11 siblings, 0 replies; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Now that VLANClientState has been renamed to NetClientState all 'vc'
local variables should be 'nc'. Much of the code already used 'nc' but
there are places where 'vc' needs to be renamed.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
hw/ne2000.h | 4 +-
hw/vhost_net.c | 18 +++---
net.c | 214 +++++++++++++++++++++++++++---------------------------
net.h | 20 +++---
net/tap-win32.c | 8 +-
net/tap.h | 16 ++--
6 files changed, 140 insertions(+), 140 deletions(-)
diff --git a/hw/ne2000.h b/hw/ne2000.h
index 6c196a2..1e7ab07 100644
--- a/hw/ne2000.h
+++ b/hw/ne2000.h
@@ -31,5 +31,5 @@ typedef struct NE2000State {
void ne2000_setup_io(NE2000State *s, unsigned size);
extern const VMStateDescription vmstate_ne2000;
void ne2000_reset(NE2000State *s);
-int ne2000_can_receive(NetClientState *vc);
-ssize_t ne2000_receive(NetClientState *vc, const uint8_t *buf, size_t size_);
+int ne2000_can_receive(NetClientState *nc);
+ssize_t ne2000_receive(NetClientState *nc, const uint8_t *buf, size_t size_);
diff --git a/hw/vhost_net.c b/hw/vhost_net.c
index c3e6546..c2d90df 100644
--- a/hw/vhost_net.c
+++ b/hw/vhost_net.c
@@ -42,7 +42,7 @@ struct vhost_net {
struct vhost_dev dev;
struct vhost_virtqueue vqs[2];
int backend;
- NetClientState *vc;
+ NetClientState *nc;
};
unsigned vhost_net_get_features(struct vhost_net *net, unsigned features)
@@ -104,7 +104,7 @@ struct vhost_net *vhost_net_init(NetClientState *backend, int devfd,
if (r < 0) {
goto fail;
}
- net->vc = backend;
+ net->nc = backend;
net->dev.backend_features = tap_has_vnet_hdr(backend) ? 0 :
(1 << VHOST_NET_F_VIRTIO_NET_HDR);
net->backend = r;
@@ -151,7 +151,7 @@ int vhost_net_start(struct vhost_net *net,
goto fail_notifiers;
}
if (net->dev.acked_features & (1 << VIRTIO_NET_F_MRG_RXBUF)) {
- tap_set_vnet_hdr_len(net->vc,
+ tap_set_vnet_hdr_len(net->nc,
sizeof(struct virtio_net_hdr_mrg_rxbuf));
}
@@ -160,7 +160,7 @@ int vhost_net_start(struct vhost_net *net,
goto fail_start;
}
- net->vc->info->poll(net->vc, false);
+ net->nc->info->poll(net->nc, false);
qemu_set_fd_handler(net->backend, NULL, NULL, NULL);
file.fd = net->backend;
for (file.index = 0; file.index < net->dev.nvqs; ++file.index) {
@@ -177,10 +177,10 @@ fail:
int r = ioctl(net->dev.control, VHOST_NET_SET_BACKEND, &file);
assert(r >= 0);
}
- net->vc->info->poll(net->vc, true);
+ net->nc->info->poll(net->nc, true);
vhost_dev_stop(&net->dev, dev);
if (net->dev.acked_features & (1 << VIRTIO_NET_F_MRG_RXBUF)) {
- tap_set_vnet_hdr_len(net->vc, sizeof(struct virtio_net_hdr));
+ tap_set_vnet_hdr_len(net->nc, sizeof(struct virtio_net_hdr));
}
fail_start:
vhost_dev_disable_notifiers(&net->dev, dev);
@@ -197,10 +197,10 @@ void vhost_net_stop(struct vhost_net *net,
int r = ioctl(net->dev.control, VHOST_NET_SET_BACKEND, &file);
assert(r >= 0);
}
- net->vc->info->poll(net->vc, true);
+ net->nc->info->poll(net->nc, true);
vhost_dev_stop(&net->dev, dev);
if (net->dev.acked_features & (1 << VIRTIO_NET_F_MRG_RXBUF)) {
- tap_set_vnet_hdr_len(net->vc, sizeof(struct virtio_net_hdr));
+ tap_set_vnet_hdr_len(net->nc, sizeof(struct virtio_net_hdr));
}
vhost_dev_disable_notifiers(&net->dev, dev);
}
@@ -209,7 +209,7 @@ void vhost_net_cleanup(struct vhost_net *net)
{
vhost_dev_cleanup(&net->dev);
if (net->dev.acked_features & (1 << VIRTIO_NET_F_MRG_RXBUF)) {
- tap_set_vnet_hdr_len(net->vc, sizeof(struct virtio_net_hdr));
+ tap_set_vnet_hdr_len(net->nc, sizeof(struct virtio_net_hdr));
}
g_free(net);
}
diff --git a/net.c b/net.c
index 06b174c..56cfc94 100644
--- a/net.c
+++ b/net.c
@@ -129,11 +129,11 @@ int parse_host_port(struct sockaddr_in *saddr, const char *str)
return 0;
}
-void qemu_format_nic_info_str(NetClientState *vc, uint8_t macaddr[6])
+void qemu_format_nic_info_str(NetClientState *nc, uint8_t macaddr[6])
{
- snprintf(vc->info_str, sizeof(vc->info_str),
+ snprintf(nc->info_str, sizeof(nc->info_str),
"model=%s,macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
- vc->model,
+ nc->model,
macaddr[0], macaddr[1], macaddr[2],
macaddr[3], macaddr[4], macaddr[5]);
}
@@ -159,19 +159,19 @@ void qemu_macaddr_default_if_unset(MACAddr *macaddr)
* Only net clients created with the legacy -net option need this. Naming is
* mandatory for net clients created with -netdev.
*/
-static char *assign_name(NetClientState *vc1, const char *model)
+static char *assign_name(NetClientState *nc1, const char *model)
{
- NetClientState *vc;
+ NetClientState *nc;
char buf[256];
int id = 0;
- QTAILQ_FOREACH(vc, &net_clients, next) {
- if (vc == vc1) {
+ QTAILQ_FOREACH(nc, &net_clients, next) {
+ if (nc == nc1) {
continue;
}
/* For compatibility only bump id for net clients on a vlan */
- if (strcmp(vc->model, model) == 0 &&
- net_hub_id_for_client(vc, NULL) == 0) {
+ if (strcmp(nc->model, model) == 0 &&
+ net_hub_id_for_client(nc, NULL) == 0) {
id++;
}
}
@@ -197,32 +197,32 @@ NetClientState *qemu_new_net_client(NetClientInfo *info,
const char *model,
const char *name)
{
- NetClientState *vc;
+ NetClientState *nc;
assert(info->size >= sizeof(NetClientState));
- vc = g_malloc0(info->size);
+ nc = g_malloc0(info->size);
- vc->info = info;
- vc->model = g_strdup(model);
+ nc->info = info;
+ nc->model = g_strdup(model);
if (name) {
- vc->name = g_strdup(name);
+ nc->name = g_strdup(name);
} else {
- vc->name = assign_name(vc, model);
+ nc->name = assign_name(nc, model);
}
if (peer) {
assert(!peer->peer);
- vc->peer = peer;
- peer->peer = vc;
+ nc->peer = peer;
+ peer->peer = nc;
}
- QTAILQ_INSERT_TAIL(&net_clients, vc, next);
+ QTAILQ_INSERT_TAIL(&net_clients, nc, next);
- vc->send_queue = qemu_new_net_queue(qemu_deliver_packet,
+ nc->send_queue = qemu_new_net_queue(qemu_deliver_packet,
qemu_deliver_packet_iov,
- vc);
+ nc);
- return vc;
+ return nc;
}
NICState *qemu_new_nic(NetClientInfo *info,
@@ -246,56 +246,56 @@ NICState *qemu_new_nic(NetClientInfo *info,
return nic;
}
-static void qemu_cleanup_vlan_client(NetClientState *vc)
+static void qemu_cleanup_vlan_client(NetClientState *nc)
{
- QTAILQ_REMOVE(&net_clients, vc, next);
+ QTAILQ_REMOVE(&net_clients, nc, next);
- if (vc->info->cleanup) {
- vc->info->cleanup(vc);
+ if (nc->info->cleanup) {
+ nc->info->cleanup(nc);
}
}
-static void qemu_free_vlan_client(NetClientState *vc)
+static void qemu_free_vlan_client(NetClientState *nc)
{
- if (vc->send_queue) {
- qemu_del_net_queue(vc->send_queue);
+ if (nc->send_queue) {
+ qemu_del_net_queue(nc->send_queue);
}
- if (vc->peer) {
- vc->peer->peer = NULL;
+ if (nc->peer) {
+ nc->peer->peer = NULL;
}
- g_free(vc->name);
- g_free(vc->model);
- g_free(vc);
+ g_free(nc->name);
+ g_free(nc->model);
+ g_free(nc);
}
-void qemu_del_vlan_client(NetClientState *vc)
+void qemu_del_vlan_client(NetClientState *nc)
{
/* If there is a peer NIC, delete and cleanup client, but do not free. */
- if (vc->peer && vc->peer->info->type == NET_CLIENT_TYPE_NIC) {
- NICState *nic = DO_UPCAST(NICState, nc, vc->peer);
+ if (nc->peer && nc->peer->info->type == NET_CLIENT_TYPE_NIC) {
+ NICState *nic = DO_UPCAST(NICState, nc, nc->peer);
if (nic->peer_deleted) {
return;
}
nic->peer_deleted = true;
/* Let NIC know peer is gone. */
- vc->peer->link_down = true;
- if (vc->peer->info->link_status_changed) {
- vc->peer->info->link_status_changed(vc->peer);
+ nc->peer->link_down = true;
+ if (nc->peer->info->link_status_changed) {
+ nc->peer->info->link_status_changed(nc->peer);
}
- qemu_cleanup_vlan_client(vc);
+ qemu_cleanup_vlan_client(nc);
return;
}
/* If this is a peer NIC and peer has already been deleted, free it now. */
- if (vc->peer && vc->info->type == NET_CLIENT_TYPE_NIC) {
- NICState *nic = DO_UPCAST(NICState, nc, vc);
+ if (nc->peer && nc->info->type == NET_CLIENT_TYPE_NIC) {
+ NICState *nic = DO_UPCAST(NICState, nc, nc);
if (nic->peer_deleted) {
- qemu_free_vlan_client(vc->peer);
+ qemu_free_vlan_client(nc->peer);
}
}
- qemu_cleanup_vlan_client(vc);
- qemu_free_vlan_client(vc);
+ qemu_cleanup_vlan_client(nc);
+ qemu_free_vlan_client(nc);
}
void qemu_foreach_nic(qemu_nic_foreach func, void *opaque)
@@ -330,44 +330,44 @@ static ssize_t qemu_deliver_packet(NetClientState *sender,
size_t size,
void *opaque)
{
- NetClientState *vc = opaque;
+ NetClientState *nc = opaque;
ssize_t ret;
- if (vc->link_down) {
+ if (nc->link_down) {
return size;
}
- if (vc->receive_disabled) {
+ if (nc->receive_disabled) {
return 0;
}
- if (flags & QEMU_NET_PACKET_FLAG_RAW && vc->info->receive_raw) {
- ret = vc->info->receive_raw(vc, data, size);
+ if (flags & QEMU_NET_PACKET_FLAG_RAW && nc->info->receive_raw) {
+ ret = nc->info->receive_raw(nc, data, size);
} else {
- ret = vc->info->receive(vc, data, size);
+ ret = nc->info->receive(nc, data, size);
}
if (ret == 0) {
- vc->receive_disabled = 1;
+ nc->receive_disabled = 1;
};
return ret;
}
-void qemu_purge_queued_packets(NetClientState *vc)
+void qemu_purge_queued_packets(NetClientState *nc)
{
- if (!vc->peer) {
+ if (!nc->peer) {
return;
}
- qemu_net_queue_purge(vc->peer->send_queue, vc);
+ qemu_net_queue_purge(nc->peer->send_queue, nc);
}
-void qemu_flush_queued_packets(NetClientState *vc)
+void qemu_flush_queued_packets(NetClientState *nc)
{
- vc->receive_disabled = 0;
+ nc->receive_disabled = 0;
- qemu_net_queue_flush(vc->send_queue);
+ qemu_net_queue_flush(nc->send_queue);
}
static ssize_t qemu_send_packet_async_with_flags(NetClientState *sender,
@@ -399,18 +399,18 @@ ssize_t qemu_send_packet_async(NetClientState *sender,
buf, size, sent_cb);
}
-void qemu_send_packet(NetClientState *vc, const uint8_t *buf, int size)
+void qemu_send_packet(NetClientState *nc, const uint8_t *buf, int size)
{
- qemu_send_packet_async(vc, buf, size, NULL);
+ qemu_send_packet_async(nc, buf, size, NULL);
}
-ssize_t qemu_send_packet_raw(NetClientState *vc, const uint8_t *buf, int size)
+ssize_t qemu_send_packet_raw(NetClientState *nc, const uint8_t *buf, int size)
{
- return qemu_send_packet_async_with_flags(vc, QEMU_NET_PACKET_FLAG_RAW,
+ return qemu_send_packet_async_with_flags(nc, QEMU_NET_PACKET_FLAG_RAW,
buf, size, NULL);
}
-static ssize_t vc_sendv_compat(NetClientState *vc, const struct iovec *iov,
+static ssize_t nc_sendv_compat(NetClientState *nc, const struct iovec *iov,
int iovcnt)
{
uint8_t buffer[4096];
@@ -418,7 +418,7 @@ static ssize_t vc_sendv_compat(NetClientState *vc, const struct iovec *iov,
offset = iov_to_buf(iov, iovcnt, buffer, 0, sizeof(buffer));
- return vc->info->receive(vc, buffer, offset);
+ return nc->info->receive(nc, buffer, offset);
}
static ssize_t qemu_deliver_packet_iov(NetClientState *sender,
@@ -427,16 +427,16 @@ static ssize_t qemu_deliver_packet_iov(NetClientState *sender,
int iovcnt,
void *opaque)
{
- NetClientState *vc = opaque;
+ NetClientState *nc = opaque;
- if (vc->link_down) {
+ if (nc->link_down) {
return iov_size(iov, iovcnt);
}
- if (vc->info->receive_iov) {
- return vc->info->receive_iov(vc, iov, iovcnt);
+ if (nc->info->receive_iov) {
+ return nc->info->receive_iov(nc, iov, iovcnt);
} else {
- return vc_sendv_compat(vc, iov, iovcnt);
+ return nc_sendv_compat(nc, iov, iovcnt);
}
}
@@ -458,20 +458,20 @@ ssize_t qemu_sendv_packet_async(NetClientState *sender,
}
ssize_t
-qemu_sendv_packet(NetClientState *vc, const struct iovec *iov, int iovcnt)
+qemu_sendv_packet(NetClientState *nc, const struct iovec *iov, int iovcnt)
{
- return qemu_sendv_packet_async(vc, iov, iovcnt, NULL);
+ return qemu_sendv_packet_async(nc, iov, iovcnt, NULL);
}
NetClientState *qemu_find_netdev(const char *id)
{
- NetClientState *vc;
+ NetClientState *nc;
- QTAILQ_FOREACH(vc, &net_clients, next) {
- if (vc->info->type == NET_CLIENT_TYPE_NIC)
+ QTAILQ_FOREACH(nc, &net_clients, next) {
+ if (nc->info->type == NET_CLIENT_TYPE_NIC)
continue;
- if (!strcmp(vc->name, id)) {
- return vc;
+ if (!strcmp(nc->name, id)) {
+ return nc;
}
}
@@ -1020,19 +1020,19 @@ void net_host_device_add(Monitor *mon, const QDict *qdict)
void net_host_device_remove(Monitor *mon, const QDict *qdict)
{
- NetClientState *vc;
+ NetClientState *nc;
int vlan_id = qdict_get_int(qdict, "vlan_id");
const char *device = qdict_get_str(qdict, "device");
- vc = net_hub_find_client_by_name(vlan_id, device);
- if (!vc) {
+ nc = net_hub_find_client_by_name(vlan_id, device);
+ if (!nc) {
return;
}
- if (!net_host_check_device(vc->model)) {
+ if (!net_host_check_device(nc->model)) {
monitor_printf(mon, "invalid host network device %s\n", device);
return;
}
- qemu_del_vlan_client(vc);
+ qemu_del_vlan_client(nc);
}
int do_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
@@ -1056,14 +1056,14 @@ int do_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
int do_netdev_del(Monitor *mon, const QDict *qdict, QObject **ret_data)
{
const char *id = qdict_get_str(qdict, "id");
- NetClientState *vc;
+ NetClientState *nc;
- vc = qemu_find_netdev(id);
- if (!vc) {
+ nc = qemu_find_netdev(id);
+ if (!nc) {
qerror_report(QERR_DEVICE_NOT_FOUND, id);
return -1;
}
- qemu_del_vlan_client(vc);
+ qemu_del_vlan_client(nc);
qemu_opts_del(qemu_opts_find(qemu_find_opts("netdev"), id));
return 0;
}
@@ -1076,16 +1076,16 @@ static void print_net_client(Monitor *mon, NetClientState *vc)
void do_info_network(Monitor *mon)
{
- NetClientState *vc, *peer;
+ NetClientState *nc, *peer;
net_client_type type;
monitor_printf(mon, "Devices not on any VLAN:\n");
- QTAILQ_FOREACH(vc, &net_clients, next) {
- peer = vc->peer;
- type = vc->info->type;
+ QTAILQ_FOREACH(nc, &net_clients, next) {
+ peer = nc->peer;
+ type = nc->info->type;
if (!peer || type == NET_CLIENT_TYPE_NIC) {
monitor_printf(mon, " ");
- print_net_client(mon, vc);
+ print_net_client(mon, nc);
} /* else it's a netdev connected to a NIC, printed with the NIC */
if (peer && type == NET_CLIENT_TYPE_NIC) {
monitor_printf(mon, " \\ ");
@@ -1097,23 +1097,23 @@ void do_info_network(Monitor *mon)
void qmp_set_link(const char *name, bool up, Error **errp)
{
- VLANClientState *vc = NULL;
+ NetClientState *nc = NULL;
- QTAILQ_FOREACH(vc, &non_vlan_clients, next) {
- if (!strcmp(vc->name, name)) {
+ QTAILQ_FOREACH(nc, &net_clients, next) {
+ if (!strcmp(nc->name, name)) {
goto done;
}
}
done:
- if (!vc) {
+ if (!nc) {
qerror_report(QERR_DEVICE_NOT_FOUND, name);
return;
}
- vc->link_down = !up;
+ nc->link_down = !up;
- if (vc->info->link_status_changed) {
- vc->info->link_status_changed(vc);
+ if (nc->info->link_status_changed) {
+ nc->info->link_status_changed(nc);
}
/* Notify peer. Don't update peer link status: this makes it possible to
@@ -1123,23 +1123,23 @@ done:
* Current behaviour is compatible with qemu vlans where there could be
* multiple clients that can still communicate with each other in
* disconnected mode. For now maintain this compatibility. */
- if (vc->peer && vc->peer->info->link_status_changed) {
- vc->peer->info->link_status_changed(vc->peer);
+ if (nc->peer && nc->peer->info->link_status_changed) {
+ nc->peer->info->link_status_changed(nc->peer);
}
}
void net_cleanup(void)
{
- NetClientState *vc, *next_vc;
+ NetClientState *nc, *next_vc;
- QTAILQ_FOREACH_SAFE(vc, &net_clients, next, next_vc) {
- qemu_del_vlan_client(vc);
+ QTAILQ_FOREACH_SAFE(nc, &net_clients, next, next_vc) {
+ qemu_del_vlan_client(nc);
}
}
void net_check_clients(void)
{
- NetClientState *vc;
+ NetClientState *nc;
int i;
/* Don't warn about the default network setup that you get if
@@ -1156,11 +1156,11 @@ void net_check_clients(void)
net_hub_check_clients();
- QTAILQ_FOREACH(vc, &net_clients, next) {
- if (!vc->peer) {
+ QTAILQ_FOREACH(nc, &net_clients, next) {
+ if (!nc->peer) {
fprintf(stderr, "Warning: %s %s has no peer\n",
- vc->info->type == NET_CLIENT_TYPE_NIC ? "nic" : "netdev",
- vc->name);
+ nc->info->type == NET_CLIENT_TYPE_NIC ? "nic" : "netdev",
+ nc->name);
}
}
diff --git a/net.h b/net.h
index 418d1d0..b8d11b8 100644
--- a/net.h
+++ b/net.h
@@ -89,23 +89,23 @@ NICState *qemu_new_nic(NetClientInfo *info,
const char *model,
const char *name,
void *opaque);
-void qemu_del_vlan_client(NetClientState *vc);
+void qemu_del_vlan_client(NetClientState *nc);
NetClientState *qemu_find_vlan_client_by_name(Monitor *mon, int vlan_id,
const char *client_str);
typedef void (*qemu_nic_foreach)(NICState *nic, void *opaque);
void qemu_foreach_nic(qemu_nic_foreach func, void *opaque);
-int qemu_can_send_packet(NetClientState *vc);
-ssize_t qemu_sendv_packet(NetClientState *vc, const struct iovec *iov,
+int qemu_can_send_packet(NetClientState *nc);
+ssize_t qemu_sendv_packet(NetClientState *nc, const struct iovec *iov,
int iovcnt);
-ssize_t qemu_sendv_packet_async(NetClientState *vc, const struct iovec *iov,
+ssize_t qemu_sendv_packet_async(NetClientState *nc, const struct iovec *iov,
int iovcnt, NetPacketSent *sent_cb);
-void qemu_send_packet(NetClientState *vc, const uint8_t *buf, int size);
-ssize_t qemu_send_packet_raw(NetClientState *vc, const uint8_t *buf, int size);
-ssize_t qemu_send_packet_async(NetClientState *vc, const uint8_t *buf,
+void qemu_send_packet(NetClientState *nc, const uint8_t *buf, int size);
+ssize_t qemu_send_packet_raw(NetClientState *nc, const uint8_t *buf, int size);
+ssize_t qemu_send_packet_async(NetClientState *nc, const uint8_t *buf,
int size, NetPacketSent *sent_cb);
-void qemu_purge_queued_packets(NetClientState *vc);
-void qemu_flush_queued_packets(NetClientState *vc);
-void qemu_format_nic_info_str(NetClientState *vc, uint8_t macaddr[6]);
+void qemu_purge_queued_packets(NetClientState *nc);
+void qemu_flush_queued_packets(NetClientState *nc);
+void qemu_format_nic_info_str(NetClientState *nc, uint8_t macaddr[6]);
void qemu_macaddr_default_if_unset(MACAddr *macaddr);
int qemu_show_nic_models(const char *arg, const char *const *models);
void qemu_check_nic_model(NICInfo *nd, const char *model);
diff --git a/net/tap-win32.c b/net/tap-win32.c
index 68243bb..3406717 100644
--- a/net/tap-win32.c
+++ b/net/tap-win32.c
@@ -718,12 +718,12 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name,
return 0;
}
-int tap_has_ufo(NetClientState *vc)
+int tap_has_ufo(NetClientState *nc)
{
return 0;
}
-int tap_has_vnet_hdr(NetClientState *vc)
+int tap_has_vnet_hdr(NetClientState *nc)
{
return 0;
}
@@ -737,11 +737,11 @@ void tap_fd_set_vnet_hdr_len(int fd, int len)
{
}
-void tap_using_vnet_hdr(NetClientState *vc, int using_vnet_hdr)
+void tap_using_vnet_hdr(NetClientState *nc, int using_vnet_hdr)
{
}
-void tap_set_offload(NetClientState *vc, int csum, int tso4,
+void tap_set_offload(NetClientState *nc, int csum, int tso4,
int tso6, int ecn, int ufo)
{
}
diff --git a/net/tap.h b/net/tap.h
index cf21d68..0e35e81 100644
--- a/net/tap.h
+++ b/net/tap.h
@@ -39,12 +39,12 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required
ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen);
-int tap_has_ufo(NetClientState *vc);
-int tap_has_vnet_hdr(NetClientState *vc);
-int tap_has_vnet_hdr_len(NetClientState *vc, int len);
-void tap_using_vnet_hdr(NetClientState *vc, int using_vnet_hdr);
-void tap_set_offload(NetClientState *vc, int csum, int tso4, int tso6, int ecn, int ufo);
-void tap_set_vnet_hdr_len(NetClientState *vc, int len);
+int tap_has_ufo(NetClientState *nc);
+int tap_has_vnet_hdr(NetClientState *nc);
+int tap_has_vnet_hdr_len(NetClientState *nc, int len);
+void tap_using_vnet_hdr(NetClientState *nc, int using_vnet_hdr);
+void tap_set_offload(NetClientState *nc, int csum, int tso4, int tso6, int ecn, int ufo);
+void tap_set_vnet_hdr_len(NetClientState *nc, int len);
int tap_set_sndbuf(int fd, QemuOpts *opts);
int tap_probe_vnet_hdr(int fd);
@@ -53,10 +53,10 @@ int tap_probe_has_ufo(int fd);
void tap_fd_set_offload(int fd, int csum, int tso4, int tso6, int ecn, int ufo);
void tap_fd_set_vnet_hdr_len(int fd, int len);
-int tap_get_fd(NetClientState *vc);
+int tap_get_fd(NetClientState *nc);
struct vhost_net;
-struct vhost_net *tap_get_vhost_net(NetClientState *vc);
+struct vhost_net *tap_get_vhost_net(NetClientState *nc);
int net_init_bridge(QemuOpts *opts, Monitor *mon, const char *name,
NetClientState *peer);
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [Qemu-devel] [PATCH v1 12/12] net: Rename qemu_del_vlan_client() to qemu_del_net_client()
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
` (10 preceding siblings ...)
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 11/12] net: Rename vc local variables to nc zwu.kernel
@ 2012-03-09 9:00 ` zwu.kernel
11 siblings, 0 replies; 19+ messages in thread
From: zwu.kernel @ 2012-03-09 9:00 UTC (permalink / raw)
To: qemu-devel
Cc: aliguori, stefanha, kvm, linuxram, zwu.kernel, ryanh, luowenj,
Zhi Yong Wu
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Another step in moving the vlan feature out of net core. Users only
deal with NetClientState and therefore qemu_del_vlan_client() should be
named qemu_del_net_client().
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
---
hw/e1000.c | 2 +-
hw/eepro100.c | 2 +-
hw/ne2000.c | 2 +-
hw/pcnet-pci.c | 2 +-
hw/rtl8139.c | 2 +-
hw/usb-net.c | 2 +-
hw/virtio-net.c | 2 +-
hw/xen_nic.c | 2 +-
net.c | 20 ++++++++++----------
net.h | 2 +-
net/slirp.c | 2 +-
11 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/hw/e1000.c b/hw/e1000.c
index f8423e1..5768cdf 100644
--- a/hw/e1000.c
+++ b/hw/e1000.c
@@ -1119,7 +1119,7 @@ pci_e1000_uninit(PCIDevice *dev)
memory_region_destroy(&d->mmio);
memory_region_destroy(&d->io);
- qemu_del_vlan_client(&d->nic->nc);
+ qemu_del_net_client(&d->nic->nc);
return 0;
}
diff --git a/hw/eepro100.c b/hw/eepro100.c
index 5aee946..27edb50 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -1841,7 +1841,7 @@ static int pci_nic_uninit(PCIDevice *pci_dev)
memory_region_destroy(&s->flash_bar);
vmstate_unregister(&pci_dev->qdev, s->vmstate, s);
eeprom93xx_free(&pci_dev->qdev, s->eeprom);
- qemu_del_vlan_client(&s->nic->nc);
+ qemu_del_net_client(&s->nic->nc);
return 0;
}
diff --git a/hw/ne2000.c b/hw/ne2000.c
index 25a6d2f..bda3727 100644
--- a/hw/ne2000.c
+++ b/hw/ne2000.c
@@ -774,7 +774,7 @@ static int pci_ne2000_exit(PCIDevice *pci_dev)
NE2000State *s = &d->ne2000;
memory_region_destroy(&s->io);
- qemu_del_vlan_client(&s->nic->nc);
+ qemu_del_net_client(&s->nic->nc);
return 0;
}
diff --git a/hw/pcnet-pci.c b/hw/pcnet-pci.c
index 8c82667..8bbad47 100644
--- a/hw/pcnet-pci.c
+++ b/hw/pcnet-pci.c
@@ -279,7 +279,7 @@ static int pci_pcnet_uninit(PCIDevice *dev)
memory_region_destroy(&d->io_bar);
qemu_del_timer(d->state.poll_timer);
qemu_free_timer(d->state.poll_timer);
- qemu_del_vlan_client(&d->state.nic->nc);
+ qemu_del_net_client(&d->state.nic->nc);
return 0;
}
diff --git a/hw/rtl8139.c b/hw/rtl8139.c
index c0fddc1..9f58e35 100644
--- a/hw/rtl8139.c
+++ b/hw/rtl8139.c
@@ -3436,7 +3436,7 @@ static int pci_rtl8139_uninit(PCIDevice *dev)
}
qemu_del_timer(s->timer);
qemu_free_timer(s->timer);
- qemu_del_vlan_client(&s->nic->nc);
+ qemu_del_net_client(&s->nic->nc);
return 0;
}
diff --git a/hw/usb-net.c b/hw/usb-net.c
index 436e72b..d0e33e3 100644
--- a/hw/usb-net.c
+++ b/hw/usb-net.c
@@ -1309,7 +1309,7 @@ static void usb_net_handle_destroy(USBDevice *dev)
/* TODO: remove the nd_table[] entry */
rndis_clear_responsequeue(s);
- qemu_del_vlan_client(&s->nic->nc);
+ qemu_del_net_client(&s->nic->nc);
}
static NetClientInfo net_usbnet_info = {
diff --git a/hw/virtio-net.c b/hw/virtio-net.c
index 3af1972..f8f67d6 100644
--- a/hw/virtio-net.c
+++ b/hw/virtio-net.c
@@ -1073,6 +1073,6 @@ void virtio_net_exit(VirtIODevice *vdev)
qemu_bh_delete(n->tx_bh);
}
- qemu_del_vlan_client(&n->nic->nc);
+ qemu_del_net_client(&n->nic->nc);
virtio_cleanup(&n->vdev);
}
diff --git a/hw/xen_nic.c b/hw/xen_nic.c
index 6391a04..ba4a45c 100644
--- a/hw/xen_nic.c
+++ b/hw/xen_nic.c
@@ -409,7 +409,7 @@ static void net_disconnect(struct XenDevice *xendev)
netdev->rxs = NULL;
}
if (netdev->nic) {
- qemu_del_vlan_client(&netdev->nic->nc);
+ qemu_del_net_client(&netdev->nic->nc);
netdev->nic = NULL;
}
}
diff --git a/net.c b/net.c
index 56cfc94..dd67d16 100644
--- a/net.c
+++ b/net.c
@@ -246,7 +246,7 @@ NICState *qemu_new_nic(NetClientInfo *info,
return nic;
}
-static void qemu_cleanup_vlan_client(NetClientState *nc)
+static void qemu_cleanup_net_client(NetClientState *nc)
{
QTAILQ_REMOVE(&net_clients, nc, next);
@@ -255,7 +255,7 @@ static void qemu_cleanup_vlan_client(NetClientState *nc)
}
}
-static void qemu_free_vlan_client(NetClientState *nc)
+static void qemu_free_net_client(NetClientState *nc)
{
if (nc->send_queue) {
qemu_del_net_queue(nc->send_queue);
@@ -268,7 +268,7 @@ static void qemu_free_vlan_client(NetClientState *nc)
g_free(nc);
}
-void qemu_del_vlan_client(NetClientState *nc)
+void qemu_del_net_client(NetClientState *nc)
{
/* If there is a peer NIC, delete and cleanup client, but do not free. */
if (nc->peer && nc->peer->info->type == NET_CLIENT_TYPE_NIC) {
@@ -282,7 +282,7 @@ void qemu_del_vlan_client(NetClientState *nc)
if (nc->peer->info->link_status_changed) {
nc->peer->info->link_status_changed(nc->peer);
}
- qemu_cleanup_vlan_client(nc);
+ qemu_cleanup_net_client(nc);
return;
}
@@ -290,12 +290,12 @@ void qemu_del_vlan_client(NetClientState *nc)
if (nc->peer && nc->info->type == NET_CLIENT_TYPE_NIC) {
NICState *nic = DO_UPCAST(NICState, nc, nc);
if (nic->peer_deleted) {
- qemu_free_vlan_client(nc->peer);
+ qemu_free_net_client(nc->peer);
}
}
- qemu_cleanup_vlan_client(nc);
- qemu_free_vlan_client(nc);
+ qemu_cleanup_net_client(nc);
+ qemu_free_net_client(nc);
}
void qemu_foreach_nic(qemu_nic_foreach func, void *opaque)
@@ -1032,7 +1032,7 @@ void net_host_device_remove(Monitor *mon, const QDict *qdict)
monitor_printf(mon, "invalid host network device %s\n", device);
return;
}
- qemu_del_vlan_client(nc);
+ qemu_del_net_client(nc);
}
int do_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
@@ -1063,7 +1063,7 @@ int do_netdev_del(Monitor *mon, const QDict *qdict, QObject **ret_data)
qerror_report(QERR_DEVICE_NOT_FOUND, id);
return -1;
}
- qemu_del_vlan_client(nc);
+ qemu_del_net_client(nc);
qemu_opts_del(qemu_opts_find(qemu_find_opts("netdev"), id));
return 0;
}
@@ -1133,7 +1133,7 @@ void net_cleanup(void)
NetClientState *nc, *next_vc;
QTAILQ_FOREACH_SAFE(nc, &net_clients, next, next_vc) {
- qemu_del_vlan_client(nc);
+ qemu_del_net_client(nc);
}
}
diff --git a/net.h b/net.h
index b8d11b8..60837ab 100644
--- a/net.h
+++ b/net.h
@@ -89,7 +89,7 @@ NICState *qemu_new_nic(NetClientInfo *info,
const char *model,
const char *name,
void *opaque);
-void qemu_del_vlan_client(NetClientState *nc);
+void qemu_del_net_client(NetClientState *nc);
NetClientState *qemu_find_vlan_client_by_name(Monitor *mon, int vlan_id,
const char *client_str);
typedef void (*qemu_nic_foreach)(NICState *nic, void *opaque);
diff --git a/net/slirp.c b/net/slirp.c
index 142b6b6..d3e56fc 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -274,7 +274,7 @@ static int net_slirp_init(NetClientState *peer, const char *model,
return 0;
error:
- qemu_del_vlan_client(nc);
+ qemu_del_net_client(nc);
return -1;
}
--
1.7.6
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [PATCH v1 01/12] net: Add a hub net client
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 01/12] net: Add a hub net client zwu.kernel
@ 2012-03-09 10:33 ` Paolo Bonzini
2012-03-12 8:59 ` Zhi Yong Wu
0 siblings, 1 reply; 19+ messages in thread
From: Paolo Bonzini @ 2012-03-09 10:33 UTC (permalink / raw)
To: zwu.kernel
Cc: aliguori, stefanha, kvm, linuxram, qemu-devel, ryanh, luowenj,
Zhi Yong Wu
Il 09/03/2012 10:00, zwu.kernel@gmail.com ha scritto:
> + /* TODO use qemu_send_packet() or need to call *_deliver_* directly? */
> + /* TODO ignore return value? */
> + qemu_send_packet(&port->nc, buf, len);
Did you see my message at
http://permalink.gmane.org/gmane.comp.emulators.qemu/134998
?
Paolo
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [PATCH v1 01/12] net: Add a hub net client
2012-03-09 10:33 ` Paolo Bonzini
@ 2012-03-12 8:59 ` Zhi Yong Wu
2012-03-12 9:12 ` Paolo Bonzini
0 siblings, 1 reply; 19+ messages in thread
From: Zhi Yong Wu @ 2012-03-12 8:59 UTC (permalink / raw)
To: Paolo Bonzini
Cc: aliguori, stefanha, kvm, linuxram, qemu-devel, ryanh, luowenj,
Zhi Yong Wu
On Fri, Mar 9, 2012 at 6:33 PM, Paolo Bonzini <pbonzini@redhat.com> wrote:
> Il 09/03/2012 10:00, zwu.kernel@gmail.com ha scritto:
>> + /* TODO use qemu_send_packet() or need to call *_deliver_* directly? */
>> + /* TODO ignore return value? */
>> + qemu_send_packet(&port->nc, buf, len);
>
> Did you see my message at
>
> http://permalink.gmane.org/gmane.comp.emulators.qemu/134998
Yeah, i ever saw this, but read it just now. In your comments,
there're some places where i have not completely understand.
> This means VLANs will wait for all receivers to be ready and then do N-1
> synchronous sends. Your code will queue N-1 asynchronous sends.
> However, then I noticed that qemu_can_send_packet is not called very
> much, and I do not understand why qemu_net_queue_send and
> qemu_net_queue_send_iov do not call qemu_can_send_packet before calling
> deliver/deliver_iov.
> If they did, hubs could then do their own flow control via can_receive.
> When qemu_send_packet returns zero you increment a count of in-flight
> packets, and a sent-packet callback would decrement the same count.
sent-packet callback is sent_cb here? i noticed that sent_cb is currently NULL.
> When the count is non-zero, can_receive returns false (and vice versa).
>Can you elaborate this? since can_receive is called finally by qemu_send_packet, how can can_receive return false or true based on the count?
> The sent_cb also needs to call qemu_flush_queued_packets when the
> count drop to zero.
When sent_cb is called, it means that the packet has been sent out, right?
> With this in place, I think the other TODO about the return value is
> easily solved; receive/receive_iov callbacks can simply return immediate
> success, and later block further sends.
> Due to the separate per-port send queues, when many sends are blocking
> many ports might linearize the same packet multiple times in
> qemu_net_queue_append_iov. The limit however is packet size * number of
I think that when one packet need to be enqueued, we should at first
determine if it has existed in send queue.
> ports, which is not more than a few KB; it's more of a performance
> problem and VLANs/hubs should only be used when performance doesn't
> matter (as with the dump client).
> BTW, an additional cleanup that you can do on top is to remove the
> deliver/deliver_iov function pointers in net/queue.c and
> qemu_new_net_queue, because they will always be qemu_deliver_packet and
> qemu_deliver_packet_iov.
>
> ?
>
> Paolo
--
Regards,
Zhi Yong Wu
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [PATCH v1 01/12] net: Add a hub net client
2012-03-12 8:59 ` Zhi Yong Wu
@ 2012-03-12 9:12 ` Paolo Bonzini
2012-03-12 12:13 ` Zhi Yong Wu
0 siblings, 1 reply; 19+ messages in thread
From: Paolo Bonzini @ 2012-03-12 9:12 UTC (permalink / raw)
To: Zhi Yong Wu
Cc: aliguori, stefanha, kvm, linuxram, qemu-devel, ryanh, luowenj,
Zhi Yong Wu
Il 12/03/2012 09:59, Zhi Yong Wu ha scritto:
>> However, then I noticed that qemu_can_send_packet is not called very
>> much, and I do not understand why qemu_net_queue_send and
>> qemu_net_queue_send_iov do not call qemu_can_send_packet before calling
>> deliver/deliver_iov.
>
>> If they did, hubs could then do their own flow control via can_receive.
>> When qemu_send_packet returns zero you increment a count of in-flight
>> packets, and a sent-packet callback would decrement the same count.
>
> sent-packet callback is sent_cb here? i noticed that sent_cb is currently NULL.
Yes.
>> When the count is non-zero, can_receive returns false (and vice versa).
>> Can you elaborate this? since can_receive is called finally by qemu_send_packet,
>> how can can_receive return false or true based on the count?
Based on counts from the previous sends.
Paolo
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [PATCH v1 01/12] net: Add a hub net client
2012-03-12 9:12 ` Paolo Bonzini
@ 2012-03-12 12:13 ` Zhi Yong Wu
0 siblings, 0 replies; 19+ messages in thread
From: Zhi Yong Wu @ 2012-03-12 12:13 UTC (permalink / raw)
To: Paolo Bonzini
Cc: aliguori, stefanha, kvm, linuxram, qemu-devel, ryanh, luowenj,
Zhi Yong Wu
On Mon, Mar 12, 2012 at 5:12 PM, Paolo Bonzini <pbonzini@redhat.com> wrote:
> Il 12/03/2012 09:59, Zhi Yong Wu ha scritto:
>>> However, then I noticed that qemu_can_send_packet is not called very
>>> much, and I do not understand why qemu_net_queue_send and
>>> qemu_net_queue_send_iov do not call qemu_can_send_packet before calling
>>> deliver/deliver_iov.
>>
>>> If they did, hubs could then do their own flow control via can_receive.
>>> When qemu_send_packet returns zero you increment a count of in-flight
>>> packets, and a sent-packet callback would decrement the same count.
>>
>> sent-packet callback is sent_cb here? i noticed that sent_cb is currently NULL.
>
> Yes.
>
>>> When the count is non-zero, can_receive returns false (and vice versa).
>>> Can you elaborate this? since can_receive is called finally by qemu_send_packet,
>>> how can can_receive return false or true based on the count?
>
> Based on counts from the previous sends.
thanks.
I agree with your opition, but hope to get stefan's comments.
>
> Paolo
--
Regards,
Zhi Yong Wu
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [PATCH v1 09/12] net: Rename non_vlan_clients to net_clients
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 09/12] net: Rename non_vlan_clients to net_clients zwu.kernel
@ 2012-03-13 9:23 ` Mark Wu
2012-03-13 9:27 ` Zhi Yong Wu
0 siblings, 1 reply; 19+ messages in thread
From: Mark Wu @ 2012-03-13 9:23 UTC (permalink / raw)
To: zwu.kernel
Cc: aliguori, stefanha, kvm, linuxram, qemu-devel, ryanh, luowenj,
Zhi Yong Wu
On 03/09/2012 05:00 PM, zwu.kernel@gmail.com wrote:
> From: Stefan Hajnoczi<stefanha@linux.vnet.ibm.com>
>
> There is no longer a distinction between vlan clients and non-vlan
> clients in the net core. The net core only knows about point-to-point
> clients which are connected to a peer. It's time to rename the global
> list of net clients since it no longer refers to vlans at all.
>
> Signed-off-by: Stefan Hajnoczi<stefanha@linux.vnet.ibm.com>
> Signed-off-by: Zhi Yong Wu<wuzhy@linux.vnet.ibm.com>
> ---
> net.c | 20 ++++++++++----------
> 1 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/net.c b/net.c
> index e09b7a7..a510e27 100644
> --- a/net.c
> +++ b/net.c
> @@ -44,7 +44,7 @@
> # define CONFIG_NET_BRIDGE
> #endif
>
> -static QTAILQ_HEAD(, VLANClientState) non_vlan_clients;
> +static QTAILQ_HEAD(, VLANClientState) net_clients;
>
> int default_net = 1;
>
> @@ -165,7 +165,7 @@ static char *assign_name(VLANClientState *vc1, const char *model)
> char buf[256];
> int id = 0;
>
> - QTAILQ_FOREACH(vc,&non_vlan_clients, next) {
> + QTAILQ_FOREACH(vc,&net_clients, next) {
> if (vc == vc1) {
> continue;
> }
> @@ -216,7 +216,7 @@ VLANClientState *qemu_new_net_client(NetClientInfo *info,
> vc->peer = peer;
> peer->peer = vc;
> }
> - QTAILQ_INSERT_TAIL(&non_vlan_clients, vc, next);
> + QTAILQ_INSERT_TAIL(&net_clients, vc, next);
>
> vc->send_queue = qemu_new_net_queue(qemu_deliver_packet,
> qemu_deliver_packet_iov,
> @@ -248,7 +248,7 @@ NICState *qemu_new_nic(NetClientInfo *info,
>
> static void qemu_cleanup_vlan_client(VLANClientState *vc)
> {
> - QTAILQ_REMOVE(&non_vlan_clients, vc, next);
> + QTAILQ_REMOVE(&net_clients, vc, next);
>
> if (vc->info->cleanup) {
> vc->info->cleanup(vc);
> @@ -302,7 +302,7 @@ void qemu_foreach_nic(qemu_nic_foreach func, void *opaque)
> {
> VLANClientState *nc;
>
> - QTAILQ_FOREACH(nc,&non_vlan_clients, next) {
> + QTAILQ_FOREACH(nc,&net_clients, next) {
> if (nc->info->type == NET_CLIENT_TYPE_NIC) {
> func(DO_UPCAST(NICState, nc, nc), opaque);
> }
> @@ -467,7 +467,7 @@ VLANClientState *qemu_find_netdev(const char *id)
> {
> VLANClientState *vc;
>
> - QTAILQ_FOREACH(vc,&non_vlan_clients, next) {
> + QTAILQ_FOREACH(vc,&net_clients, next) {
> if (vc->info->type == NET_CLIENT_TYPE_NIC)
> continue;
> if (!strcmp(vc->name, id)) {
> @@ -1080,7 +1080,7 @@ void do_info_network(Monitor *mon)
> net_client_type type;
>
> monitor_printf(mon, "Devices not on any VLAN:\n");
^^^^^^^^^^^^
I think we should remove the line above.
The output of "info network"
(qemu) info network
Devices not on any VLAN:
e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:56
\ hub0port1: type=(null),
hub 0
port 1 peer e1000.0
port 0 peer bridge.0
The original output:
(qemu) info network
VLAN 0 devices:
bridge.0: type=tap,helper=./qemu-bridge-helper,br=virbr0
e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:56
Devices not on any VLAN:
> - QTAILQ_FOREACH(vc,&non_vlan_clients, next) {
> + QTAILQ_FOREACH(vc,&net_clients, next) {
> peer = vc->peer;
> type = vc->info->type;
> if (!peer || type == NET_CLIENT_TYPE_NIC) {
> @@ -1133,7 +1133,7 @@ void net_cleanup(void)
> {
> VLANClientState *vc, *next_vc;
>
> - QTAILQ_FOREACH_SAFE(vc,&non_vlan_clients, next, next_vc) {
> + QTAILQ_FOREACH_SAFE(vc,&net_clients, next, next_vc) {
> qemu_del_vlan_client(vc);
> }
> }
> @@ -1157,7 +1157,7 @@ void net_check_clients(void)
>
> net_hub_check_clients();
>
> - QTAILQ_FOREACH(vc,&non_vlan_clients, next) {
> + QTAILQ_FOREACH(vc,&net_clients, next) {
> if (!vc->peer) {
> fprintf(stderr, "Warning: %s %s has no peer\n",
> vc->info->type == NET_CLIENT_TYPE_NIC ? "nic" : "netdev",
> @@ -1204,7 +1204,7 @@ int net_init_clients(void)
> #endif
> }
>
> - QTAILQ_INIT(&non_vlan_clients);
> + QTAILQ_INIT(&net_clients);
>
> if (qemu_opts_foreach(qemu_find_opts("netdev"), net_init_netdev, NULL, 1) == -1)
> return -1;
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [PATCH v1 09/12] net: Rename non_vlan_clients to net_clients
2012-03-13 9:23 ` Mark Wu
@ 2012-03-13 9:27 ` Zhi Yong Wu
0 siblings, 0 replies; 19+ messages in thread
From: Zhi Yong Wu @ 2012-03-13 9:27 UTC (permalink / raw)
To: Mark Wu
Cc: aliguori, stefanha, kvm, linuxram, qemu-devel, ryanh, luowenj,
Zhi Yong Wu
On Tue, Mar 13, 2012 at 5:23 PM, Mark Wu <wudxw@linux.vnet.ibm.com> wrote:
> On 03/09/2012 05:00 PM, zwu.kernel@gmail.com wrote:
>>
>> From: Stefan Hajnoczi<stefanha@linux.vnet.ibm.com>
>>
>> There is no longer a distinction between vlan clients and non-vlan
>> clients in the net core. The net core only knows about point-to-point
>> clients which are connected to a peer. It's time to rename the global
>> list of net clients since it no longer refers to vlans at all.
>>
>> Signed-off-by: Stefan Hajnoczi<stefanha@linux.vnet.ibm.com>
>> Signed-off-by: Zhi Yong Wu<wuzhy@linux.vnet.ibm.com>
>> ---
>> net.c | 20 ++++++++++----------
>> 1 files changed, 10 insertions(+), 10 deletions(-)
>>
>> diff --git a/net.c b/net.c
>> index e09b7a7..a510e27 100644
>> --- a/net.c
>> +++ b/net.c
>> @@ -44,7 +44,7 @@
>> # define CONFIG_NET_BRIDGE
>> #endif
>>
>> -static QTAILQ_HEAD(, VLANClientState) non_vlan_clients;
>> +static QTAILQ_HEAD(, VLANClientState) net_clients;
>>
>> int default_net = 1;
>>
>> @@ -165,7 +165,7 @@ static char *assign_name(VLANClientState *vc1, const
>> char *model)
>> char buf[256];
>> int id = 0;
>>
>> - QTAILQ_FOREACH(vc,&non_vlan_clients, next) {
>> + QTAILQ_FOREACH(vc,&net_clients, next) {
>>
>> if (vc == vc1) {
>> continue;
>> }
>> @@ -216,7 +216,7 @@ VLANClientState *qemu_new_net_client(NetClientInfo
>> *info,
>> vc->peer = peer;
>> peer->peer = vc;
>> }
>> - QTAILQ_INSERT_TAIL(&non_vlan_clients, vc, next);
>> + QTAILQ_INSERT_TAIL(&net_clients, vc, next);
>>
>> vc->send_queue = qemu_new_net_queue(qemu_deliver_packet,
>> qemu_deliver_packet_iov,
>> @@ -248,7 +248,7 @@ NICState *qemu_new_nic(NetClientInfo *info,
>>
>> static void qemu_cleanup_vlan_client(VLANClientState *vc)
>> {
>> - QTAILQ_REMOVE(&non_vlan_clients, vc, next);
>> + QTAILQ_REMOVE(&net_clients, vc, next);
>>
>> if (vc->info->cleanup) {
>> vc->info->cleanup(vc);
>> @@ -302,7 +302,7 @@ void qemu_foreach_nic(qemu_nic_foreach func, void
>> *opaque)
>> {
>> VLANClientState *nc;
>>
>> - QTAILQ_FOREACH(nc,&non_vlan_clients, next) {
>> + QTAILQ_FOREACH(nc,&net_clients, next) {
>>
>> if (nc->info->type == NET_CLIENT_TYPE_NIC) {
>> func(DO_UPCAST(NICState, nc, nc), opaque);
>> }
>> @@ -467,7 +467,7 @@ VLANClientState *qemu_find_netdev(const char *id)
>> {
>> VLANClientState *vc;
>>
>> - QTAILQ_FOREACH(vc,&non_vlan_clients, next) {
>> + QTAILQ_FOREACH(vc,&net_clients, next) {
>>
>> if (vc->info->type == NET_CLIENT_TYPE_NIC)
>> continue;
>> if (!strcmp(vc->name, id)) {
>> @@ -1080,7 +1080,7 @@ void do_info_network(Monitor *mon)
>> net_client_type type;
>>
>> monitor_printf(mon, "Devices not on any VLAN:\n");
>
> ^^^^^^^^^^^^
> I think we should remove the line above.
Yeah, actually we have noticed this.
>
> The output of "info network"
> (qemu) info network
>
> Devices not on any VLAN:
> e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:56
> \ hub0port1: type=(null),
> hub 0
> port 1 peer e1000.0
> port 0 peer bridge.0
>
> The original output:
> (qemu) info network
> VLAN 0 devices:
> bridge.0: type=tap,helper=./qemu-bridge-helper,br=virbr0
> e1000.0: type=nic,model=e1000,macaddr=52:54:00:12:34:56
>
> Devices not on any VLAN:
>
>> - QTAILQ_FOREACH(vc,&non_vlan_clients, next) {
>> + QTAILQ_FOREACH(vc,&net_clients, next) {
>>
>> peer = vc->peer;
>> type = vc->info->type;
>> if (!peer || type == NET_CLIENT_TYPE_NIC) {
>> @@ -1133,7 +1133,7 @@ void net_cleanup(void)
>> {
>> VLANClientState *vc, *next_vc;
>>
>> - QTAILQ_FOREACH_SAFE(vc,&non_vlan_clients, next, next_vc) {
>> + QTAILQ_FOREACH_SAFE(vc,&net_clients, next, next_vc) {
>>
>> qemu_del_vlan_client(vc);
>> }
>> }
>> @@ -1157,7 +1157,7 @@ void net_check_clients(void)
>>
>> net_hub_check_clients();
>>
>> - QTAILQ_FOREACH(vc,&non_vlan_clients, next) {
>> + QTAILQ_FOREACH(vc,&net_clients, next) {
>>
>> if (!vc->peer) {
>> fprintf(stderr, "Warning: %s %s has no peer\n",
>> vc->info->type == NET_CLIENT_TYPE_NIC ? "nic" :
>> "netdev",
>> @@ -1204,7 +1204,7 @@ int net_init_clients(void)
>> #endif
>> }
>>
>> - QTAILQ_INIT(&non_vlan_clients);
>> + QTAILQ_INIT(&net_clients);
>>
>> if (qemu_opts_foreach(qemu_find_opts("netdev"), net_init_netdev,
>> NULL, 1) == -1)
>> return -1;
>
>
>
--
Regards,
Zhi Yong Wu
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2012-03-13 9:28 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-09 9:00 [Qemu-devel] [PATCH v1 00/12] net: hub implemention zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 01/12] net: Add a hub net client zwu.kernel
2012-03-09 10:33 ` Paolo Bonzini
2012-03-12 8:59 ` Zhi Yong Wu
2012-03-12 9:12 ` Paolo Bonzini
2012-03-12 12:13 ` Zhi Yong Wu
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 02/12] net: Use hubs for the vlan feature zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 03/12] net: Look up 'vlan' net clients using hubs zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 04/12] hub: Check that hubs are configured correctly zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 05/12] net: Drop vlan argument to qemu_new_net_client() zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 06/12] net: Remove vlan qdev property zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 07/12] net: Remove vlan code from net.c zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 08/12] net: Remove VLANState zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 09/12] net: Rename non_vlan_clients to net_clients zwu.kernel
2012-03-13 9:23 ` Mark Wu
2012-03-13 9:27 ` Zhi Yong Wu
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 10/12] net: Rename VLANClientState to NetClientState zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 11/12] net: Rename vc local variables to nc zwu.kernel
2012-03-09 9:00 ` [Qemu-devel] [PATCH v1 12/12] net: Rename qemu_del_vlan_client() to qemu_del_net_client() zwu.kernel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).