[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 05/19] hub: Check that hubs are configured correctly
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PATCH 05/19] hub: Check that hubs are configured correctly |
Date: |
Wed, 1 Aug 2012 13:54:37 +0100 |
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 <address@hidden>
Signed-off-by: Zhi Yong Wu <address@hidden>
Reviewed-by: Laszlo Ersek <address@hidden>
---
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 f88d38d..413dac4 100644
--- a/net.c
+++ b/net.c
@@ -1124,7 +1124,6 @@ void net_cleanup(void)
void net_check_clients(void)
{
- VLANState *vlan;
VLANClientState *vc;
int i;
@@ -1140,30 +1139,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_OPTIONS_KIND_NIC:
- has_nic = 1;
- break;
- case NET_CLIENT_OPTIONS_KIND_USER:
- case NET_CLIENT_OPTIONS_KIND_TAP:
- case NET_CLIENT_OPTIONS_KIND_SOCKET:
- case NET_CLIENT_OPTIONS_KIND_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 9806a59..5cdd8c9 100644
--- a/net/hub.c
+++ b/net/hub.c
@@ -244,3 +244,48 @@ int net_init_hubport(const NetClientOptions *opts, const
char *name,
net_hub_add_port(hubport->hubid, name);
return 0;
}
+
+/**
+ * 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_OPTIONS_KIND_NIC:
+ has_nic = 1;
+ break;
+ case NET_CLIENT_OPTIONS_KIND_USER:
+ case NET_CLIENT_OPTIONS_KIND_TAP:
+ case NET_CLIENT_OPTIONS_KIND_SOCKET:
+ case NET_CLIENT_OPTIONS_KIND_VDE:
+ has_host_dev = 1;
+ break;
+ default:
+ break;
+ }
+ }
+ if (has_host_dev && !has_nic) {
+ fprintf(stderr, "Warning: vlan %d with no nics\n", hub->id);
+ }
+ if (has_nic && !has_host_dev) {
+ fprintf(stderr,
+ "Warning: vlan %d is not connected to host network\n",
+ hub->id);
+ }
+ }
+}
diff --git a/net/hub.h b/net/hub.h
index 6770850..9973da3 100644
--- a/net/hub.h
+++ b/net/hub.h
@@ -23,5 +23,6 @@ VLANClientState *net_hub_add_port(int hub_id, const char
*name);
VLANClientState *net_hub_find_client_by_name(int hub_id, const char *name);
void net_hub_info(Monitor *mon);
int net_hub_id_for_client(VLANClientState *nc, int *id);
+void net_hub_check_clients(void);
#endif /* NET_HUB_H */
--
1.7.10.4
- [Qemu-devel] [PULL 00/19] Net patches for QEMU 1.2, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 03/19] net: Use hubs for the vlan feature, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 06/19] net: Drop vlan argument to qemu_new_net_client(), Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 17/19] hub: add the support for hub own flow control, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 05/19] hub: Check that hubs are configured correctly,
Stefan Hajnoczi <=
- [Qemu-devel] [PATCH 07/19] net: Convert qdev_prop_vlan to peer with hub, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 10/19] net: Rename non_vlan_clients to net_clients, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 01/19] net: Add interface to bridge when SIOCBRADDIF isn't available, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 14/19] net: Make "info network" output more readable info, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 16/19] net: determine if packets can be sent before net queue deliver packets, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 19/19] net: add the support for -netdev socket, listen, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 18/19] net: fix the coding style, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 08/19] net: Remove vlan code from net.c, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 12/19] net: Rename vc local variables to nc, Stefan Hajnoczi, 2012/08/01
- [Qemu-devel] [PATCH 13/19] net: Rename qemu_del_vlan_client() to qemu_del_net_client(), Stefan Hajnoczi, 2012/08/01