]> git.proxmox.com Git - qemu.git/commitdiff
net: introduce qemu_new_net_client()
authorMark McLoughlin <markmc@redhat.com>
Wed, 25 Nov 2009 18:49:02 +0000 (18:49 +0000)
committerAnthony Liguori <aliguori@us.ibm.com>
Thu, 3 Dec 2009 15:41:29 +0000 (09:41 -0600)
A replacement for qemu_new_vlan_client(), using NetClientInfo to
replace most arguments.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
net.c
net.h

diff --git a/net.c b/net.c
index 599e5b05144cdeb3befbcd5c48049d5c1c5d3755..355eb874a69b1ff32c087577088b8b3e956b498a 100644 (file)
--- a/net.c
+++ b/net.c
@@ -248,34 +248,31 @@ static ssize_t qemu_deliver_packet_iov(VLANClientState *sender,
                                        int iovcnt,
                                        void *opaque);
 
-VLANClientState *qemu_new_vlan_client(net_client_type type,
-                                      VLANState *vlan,
-                                      VLANClientState *peer,
-                                      const char *model,
-                                      const char *name,
-                                      NetCanReceive *can_receive,
-                                      NetReceive *receive,
-                                      NetReceive *receive_raw,
-                                      NetReceiveIOV *receive_iov,
-                                      NetCleanup *cleanup,
-                                      void *opaque)
+VLANClientState *qemu_new_net_client(NetClientInfo *info,
+                                     VLANState *vlan,
+                                     VLANClientState *peer,
+                                     const char *model,
+                                     const char *name)
 {
     VLANClientState *vc;
 
-    vc = qemu_mallocz(sizeof(VLANClientState));
+    assert(info->size >= sizeof(VLANClientState));
+
+    vc = qemu_mallocz(info->size);
 
-    vc->type = type;
+    vc->type = info->type;
     vc->model = qemu_strdup(model);
-    if (name)
+    if (name) {
         vc->name = qemu_strdup(name);
-    else
+    } else {
         vc->name = assign_name(vc, model);
-    vc->can_receive = can_receive;
-    vc->receive = receive;
-    vc->receive_raw = receive_raw;
-    vc->receive_iov = receive_iov;
-    vc->cleanup = cleanup;
-    vc->opaque = opaque;
+    }
+    vc->can_receive = info->can_receive;
+    vc->receive = info->receive;
+    vc->receive_raw = info->receive_raw;
+    vc->receive_iov = info->receive_iov;
+    vc->cleanup = info->cleanup;
+    vc->link_status_changed = info->link_status_changed;
 
     if (vlan) {
         assert(!peer);
@@ -296,6 +293,37 @@ VLANClientState *qemu_new_vlan_client(net_client_type type,
     return vc;
 }
 
+VLANClientState *qemu_new_vlan_client(net_client_type type,
+                                      VLANState *vlan,
+                                      VLANClientState *peer,
+                                      const char *model,
+                                      const char *name,
+                                      NetCanReceive *can_receive,
+                                      NetReceive *receive,
+                                      NetReceive *receive_raw,
+                                      NetReceiveIOV *receive_iov,
+                                      NetCleanup *cleanup,
+                                      void *opaque)
+{
+    VLANClientState *ret;
+    NetClientInfo info;
+
+    info.type = type;
+    info.size = sizeof(VLANClientState);
+    info.can_receive = can_receive;
+    info.receive = receive;
+    info.receive_raw = receive_raw;
+    info.receive_iov = receive_iov;
+    info.cleanup = cleanup;
+    info.link_status_changed = NULL;
+
+    ret = qemu_new_net_client(&info, vlan, peer, model, name);
+
+    ret->opaque = opaque;
+
+    return ret;
+}
+
 void qemu_del_vlan_client(VLANClientState *vc)
 {
     if (vc->vlan) {
diff --git a/net.h b/net.h
index 56c584944a1a109337161d4973db40ce6c054685..71a9a443e00fa5240cbd5b1c6d760483a2739fca 100644 (file)
--- a/net.h
+++ b/net.h
@@ -85,6 +85,11 @@ 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);
 VLANClientState *qemu_new_vlan_client(net_client_type type,
                                       VLANState *vlan,
                                       VLANClientState *peer,