aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net.c21
-rw-r--r--net.h2
2 files changed, 23 insertions, 0 deletions
diff --git a/net.c b/net.c
index c581dcc087..c61f66b76c 100644
--- a/net.c
+++ b/net.c
@@ -366,6 +366,19 @@ void qemu_del_vlan_client(VLANClientState *vc)
pvc = &(*pvc)->next;
}
+VLANClientState *qemu_find_vlan_client(VLANState *vlan, void *opaque)
+{
+ VLANClientState **pvc = &vlan->first_client;
+
+ while (*pvc != NULL)
+ if ((*pvc)->opaque == opaque)
+ return *pvc;
+ else
+ pvc = &(*pvc)->next;
+
+ return NULL;
+}
+
int qemu_can_send_packet(VLANClientState *vc1)
{
VLANState *vlan = vc1->vlan;
@@ -1713,6 +1726,14 @@ int net_client_init(const char *device, const char *p)
return ret;
}
+void net_client_uninit(NICInfo *nd)
+{
+ nd->vlan->nb_guest_devs--;
+ nb_nics--;
+ nd->used = 0;
+ free((void *)nd->model);
+}
+
int net_client_parse(const char *str)
{
const char *p;
diff --git a/net.h b/net.h
index 6ddd06fa1a..a982394ee7 100644
--- a/net.h
+++ b/net.h
@@ -42,6 +42,7 @@ VLANClientState *qemu_new_vlan_client(VLANState *vlan,
IOCanRWHandler *fd_can_read,
void *opaque);
void qemu_del_vlan_client(VLANClientState *vc);
+VLANClientState *qemu_find_vlan_client(VLANState *vlan, void *opaque);
int qemu_can_send_packet(VLANClientState *vc);
ssize_t qemu_sendv_packet(VLANClientState *vc, const struct iovec *iov,
int iovcnt);
@@ -94,6 +95,7 @@ void net_checksum_calculate(uint8_t *data, int length);
/* from net.c */
int net_client_init(const char *device, const char *p);
+void net_client_uninit(NICInfo *nd);
int net_client_parse(const char *str);
void net_slirp_smb(const char *exported_dir);
void net_slirp_redir(const char *redir_str);