X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-xen-config.git/blobdiff_plain/ae33cf776d263f7027adc9ec7ff3004fae72c9ff..eec0fc5b94f1bed727d1255dba2dc6cfd046a871:/vif-invirtroute

diff --git a/vif-invirtroute b/vif-invirtroute
index 4872758..ed2d072 100755
--- a/vif-invirtroute
+++ b/vif-invirtroute
@@ -39,11 +39,13 @@ case "$command" in
           ethtool -K ${dev} tx off
         fi
         ipcmd='add'
+	ipt_action='-A'
         cmdprefix=''
         ;;
     offline|remove)
         do_without_error ifdown ${vif}
         ipcmd='del'
+	ipt_action='-D'
         cmdprefix='do_without_error'
         ;;
 esac
@@ -88,12 +90,19 @@ if [  ${vif_type} != "ioemu"  -o  x${qemu_online} = xyes ] ; then
 	    ${cmdprefix} ip route ${ipcmd} ${addr} dev ${dev} src ${main_ip} $metric
 	    case "$command" in
 		online|add)
-		    arpspoof -i $(invirt-getconf xen.iface) -t 18.181.0.1 ${addr}&
-		    sleep 5
-		    kill %arpspoof
+		    timeout 5 arpspoof -i $(invirt-getconf xen.iface) -t ${gateway} ${addr} || :
 		    ;;
 	    esac
 	done 
+	if [ -n "$other_ip" ]; then
+	    ${cmdprefix} ip route ${ipcmd} ${other_ip} dev ${dev} src ${main_ip} $metric
+	    iptables -t nat ${ipt_action} PREROUTING -d ${other_ip} -j DNAT --to-destination ${addr}
+	    case "$command" in
+		online|add)
+		    timeout 5 arpspoof -i $(invirt-getconf xen.iface) -t ${other_gateway} ${other_ip} || :
+		    ;;
+	    esac
+	fi
     fi
 fi