From 606c10e2bd5877e01f0ff1812d9abebf40fb522b Mon Sep 17 00:00:00 2001 From: Zhi Yong Wu Date: Tue, 24 Jul 2012 16:35:09 +0100 Subject: net: Convert qdev_prop_vlan to peer with hub Instead of using VLANState use net/hub.h to support the vlan qdev property. The vlan qdev property becomes an alias for the peer qdev property but is represented as a VLAN ID number. When a VLAN ID is selected the device will really peer with a hub port. Signed-off-by: Zhi Yong Wu Signed-off-by: Stefan Hajnoczi Reviewed-by: Laszlo Ersek --- net/hub.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'net/hub.c') diff --git a/net/hub.c b/net/hub.c index 97198a2..e80d131 100644 --- a/net/hub.c +++ b/net/hub.c @@ -188,6 +188,31 @@ VLANClientState *net_hub_find_client_by_name(int hub_id, const char *name) } /** + * Find a available port on a hub; otherwise create one new port + */ +VLANClientState *net_hub_port_find(int hub_id) +{ + NetHub *hub; + NetHubPort *port; + VLANClientState *nc; + + QLIST_FOREACH(hub, &hubs, next) { + if (hub->id == hub_id) { + QLIST_FOREACH(port, &hub->ports, next) { + nc = port->nc.peer; + if (!nc) { + return &(port->nc); + } + } + break; + } + } + + nc = net_hub_add_port(hub_id, NULL); + return nc; +} + +/** * Print hub configuration */ void net_hub_info(Monitor *mon) -- cgit v1.1