diff --git a/share/examples/vm.schema b/share/examples/vm.schema index 35a310691c..b651975b3a 100644 --- a/share/examples/vm.schema +++ b/share/examples/vm.schema @@ -56,10 +56,12 @@ DISK = [ #--------------------------------------- NIC = [ - bridge = "name_of_bridge_to_bind_if", #Optional, XEN, KVM - target = "device_name_to_map_if", #Optional, KVM - mac = "HW_address", #Optional, XEN, KVM - script = "path_to_script_to_bring_up_if"] #Optional, KVM + network = "name_of_the_virtual_network", #Optional, XEN, KVM + ip = "ip_address", #Optional, XEN, KVM + bridge = "name_of_bridge_to_bind_if", #Optional, XEN, KVM + target = "device_name_to_map_if", #Optional, KVM + mac = "HW_address", #Optional, XEN, KVM + script = "path_to_script_to_bring_up_if"] #Optional, KVM #--------------------------------------- # I/O Interfaces diff --git a/share/scripts/vmcontext.sh b/share/scripts/vmcontext.sh new file mode 100755 index 0000000000..d1cd14ca07 --- /dev/null +++ b/share/scripts/vmcontext.sh @@ -0,0 +1,57 @@ +#! /bin/sh + +PATH=/sbin:/bin:/usr/bin + +mac2ip () +{ +let ip_a=0x`echo $1 | cut -d: -f 3` +let ip_b=0x`echo $1 | cut -d: -f 4` +let ip_c=0x`echo $1 | cut -d: -f 5` +let ip_d=0x`echo $1 | cut -d: -f 6` + +IP="$ip_a.$ip_b.$ip_c.$ip_d" +} + +do_start () +{ + +INTERFACES=`/sbin/ifconfig -a | grep ^eth | sed 's/\s*Link encap:Ethernet\s*HWaddr /-/g'` +rm -f /etc/network/interfaces > /dev/null 2>&1 +cat > /etc/network/interfaces << EOF +auto lo +iface lo inet loopback +EOF + +for i in $INTERFACES; do + DEV=`echo $i | cut -d'-' -f 1` + MAC=`echo $i | cut -d'-' -f 2` + mac2ip $MAC + NET=`echo $IP | cut -d'.' -f1,2,3` + +cat >> /etc/network/interfaces << EOF +auto $DEV +iface $DEV inet static + address $IP + gateway $NET.1 + netmask 255.255.255.0 +EOF +done + +} + +case "$1" in + start|"") + do_start + ;; + restart|reload|force-reload) + echo "Error: argument '$1' not supported" >&2 + exit 3 + ;; + stop) + # No-op + ;; + *) + echo "Usage: vmcontext.sh [start|stop]" >&2 + exit 3 + ;; +esac