summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net.c21
-rw-r--r--net.h11
2 files changed, 32 insertions, 0 deletions
diff --git a/net.c b/net.c
index 355eb874a6..7195827cc4 100644
--- a/net.c
+++ b/net.c
@@ -293,6 +293,27 @@ VLANClientState *qemu_new_net_client(NetClientInfo *info,
return vc;
}
+NICState *qemu_new_nic(NetClientInfo *info,
+ NICConf *conf,
+ const char *model,
+ const char *name,
+ void *opaque)
+{
+ VLANClientState *nc;
+ NICState *nic;
+
+ assert(info->type == NET_CLIENT_TYPE_NIC);
+ assert(info->size >= sizeof(NICState));
+
+ nc = qemu_new_net_client(info, conf->vlan, conf->peer, model, name);
+
+ nic = DO_UPCAST(NICState, nc, nc);
+ nic->conf = conf;
+ nic->opaque = opaque;
+
+ return nic;
+}
+
VLANClientState *qemu_new_vlan_client(net_client_type type,
VLANState *vlan,
VLANClientState *peer,
diff --git a/net.h b/net.h
index 71a9a443e0..4de20de355 100644
--- a/net.h
+++ b/net.h
@@ -75,6 +75,12 @@ struct VLANClientState {
unsigned receive_disabled : 1;
};
+typedef struct NICState {
+ VLANClientState nc;
+ NICConf *conf;
+ void *opaque;
+} NICState;
+
struct VLANState {
int id;
QTAILQ_HEAD(, VLANClientState) clients;
@@ -90,6 +96,11 @@ VLANClientState *qemu_new_net_client(NetClientInfo *info,
VLANClientState *peer,
const char *model,
const char *name);
+NICState *qemu_new_nic(NetClientInfo *info,
+ NICConf *conf,
+ const char *model,
+ const char *name,
+ void *opaque);
VLANClientState *qemu_new_vlan_client(net_client_type type,
VLANState *vlan,
VLANClientState *peer,