X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-xen-config.git/blobdiff_plain/ae33cf776d263f7027adc9ec7ff3004fae72c9ff..eec0fc5b94f1bed727d1255dba2dc6cfd046a871:/vif-invirtroute?ds=inline 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