[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [patch] Add support for "hostonly" xen bridges.



Add support for "hostonly" networking, i.e. create a bridge without a
physical network device linked in.  The virtual machines can see each
other and the host, but can't (directly) talk to the outside.  Pass
"netdev=none" to the network-bridge script to activate this.

I'm using this on a laptop which has different network connections at
different times (wired / wireless), so it is inconvinient to add the
physical device into the bridge.  In case the laptop is offline the
virtual network still works just fine.  It also avoids the problem that
bridging doesn't work with wireless due to being limited to one mac
address then.

dom0 on that laptop also runs a dhcp server for the virtual network.
Guests can talk to the internet via apache configured as http proxy.
Another possible approach for guest internet access is NATing the
virtual network.

---
 tools/examples/network-bridge |   37 +++++++++++++++++++++++++++++++++++--
 1 file changed, 35 insertions(+), 2 deletions(-)

Index: build-32-unstable-11624/tools/examples/network-bridge
===================================================================
--- build-32-unstable-11624.orig/tools/examples/network-bridge
+++ build-32-unstable-11624/tools/examples/network-bridge
@@ -269,6 +269,31 @@ op_stop () {
     brctl delbr ${bridge}
 }
 
+op_start_hostonly () {
+    if [ "${bridge}" = "null" ] ; then
+       return
+    fi
+    if link_exists "${bridge}"; then
+       return
+    fi
+
+    create_bridge ${bridge}
+    setup_bridge_port ${vif0}
+    add_to_bridge  ${bridge} ${vif0}
+}
+
+op_stop_hostonly () {
+    if [ "${bridge}" = "null" ]; then
+       return
+    fi
+    if ! link_exists "$bridge"; then
+       return
+    fi
+
+    brctl delbr ${bridge}
+}
+
+
 # adds $dev to $bridge but waits for $dev to be in running state first
 add_to_bridge2() {
     local bridge=$1
@@ -293,11 +318,19 @@ add_to_bridge2() {
 
 case "$command" in
     start)
-       op_start
+       if test "$netdev" = "none"; then
+               op_start_hostonly
+       else
+               op_start
+       fi
        ;;
     
     stop)
-       op_stop
+       if test "$netdev" = "none"; then
+               op_stop_hostonly
+       else
+               op_stop
+       fi
        ;;
 
     status)

--


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.