diff --git a/net.c b/net.c index 38b65f49050869f672598f7c33d72ef647a02f16..509f074c3d079f927b7b48b4c8e597cfbd66fc45 100644 --- a/net.c +++ b/net.c @@ -812,9 +812,6 @@ static int net_init_nic(QemuOpts *opts, } nd->used = 1; - if (vlan) { - nd->vlan->nb_guest_devs++; - } nb_nics++; return idx; @@ -1278,13 +1275,27 @@ void net_cleanup(void) void net_check_clients(void) { VLANState *vlan; + VLANClientState *vc; + int has_nic, has_host_dev; QTAILQ_FOREACH(vlan, &vlans, next) { - if (vlan->nb_guest_devs == 0 && vlan->nb_host_devs == 0) - continue; - if (vlan->nb_guest_devs == 0) + QTAILQ_FOREACH(vc, &vlan->clients, next) { + switch (vc->info->type) { + case NET_CLIENT_TYPE_NIC: + has_nic = 1; + break; + case NET_CLIENT_TYPE_SLIRP: + 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 (vlan->nb_host_devs == 0) + if (has_nic && !has_host_dev) fprintf(stderr, "Warning: vlan %d is not connected to host network\n", vlan->id); diff --git a/net.h b/net.h index 3467c1087819de3330425ed94a7911847080981b..33a1eafaec227a8f097a62e767d9d84fcc168f08 100644 --- a/net.h +++ b/net.h @@ -79,7 +79,6 @@ struct VLANState { int id; QTAILQ_HEAD(, VLANClientState) clients; QTAILQ_ENTRY(VLANState) next; - unsigned int nb_guest_devs, nb_host_devs; NetQueue *send_queue; }; diff --git a/net/slirp.c b/net/slirp.c index 361899b8f225f5d054f3583a754224266aee132c..317cca7f63f2598703c04ba2a97f16f6f358ae4a 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -738,10 +738,6 @@ int net_init_slirp(QemuOpts *opts, qemu_free(config); } - if (ret != -1 && vlan) { - vlan->nb_host_devs++; - } - qemu_free(vnet); return ret; diff --git a/net/socket.c b/net/socket.c index 5533737e4b7d3e0989e957a547249e6947c46625..442a9c790c337d5a98862133349ec398b6396b60 100644 --- a/net/socket.c +++ b/net/socket.c @@ -569,9 +569,5 @@ int net_init_socket(QemuOpts *opts, return -1; } - if (vlan) { - vlan->nb_host_devs++; - } - return 0; } diff --git a/net/tap-win32.c b/net/tap-win32.c index b717c17243e0764e5ac09a86bd4a7398af4eb64e..8370c803bf4373ba8237e6018ef3019e0a1c317c 100644 --- a/net/tap-win32.c +++ b/net/tap-win32.c @@ -714,10 +714,6 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan return -1; } - if (vlan) { - vlan->nb_host_devs++; - } - return 0; } diff --git a/net/tap.c b/net/tap.c index d3492de1164d9b30cb6fb9b9e6151a84b8541b1d..7a7320c1a223e47cba3c0be94f0aba32d9dd0365 100644 --- a/net/tap.c +++ b/net/tap.c @@ -449,9 +449,5 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan } } - if (vlan) { - vlan->nb_host_devs++; - } - return 0; } diff --git a/net/vde.c b/net/vde.c index 42b4633501a7e9462667142ba00fc817cb080afa..0b46fa6405b2cd3d304ba5cd5709394c429584c0 100644 --- a/net/vde.c +++ b/net/vde.c @@ -127,9 +127,5 @@ int net_init_vde(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan return -1; } - if (vlan) { - vlan->nb_host_devs++; - } - return 0; }