smooth renumbering events.
+invirt-xen-config (0.0.54) unstable; urgency=low
+
+ * invirt-database: pass through parameters for the "other" IP address,
+ if any, to vif-invirtroute.
+ * vif-invirtroute: if there is an "other" IP address, DNAT it to the
+ primary IP, set up routing to get it to the VM, and arp for it.
+ Also, cut out the nonsense with backgrounding arpspoof, sleeping, and
+ killing it; we have the technology for 'timeout'.
+
+ -- Mitchell Berger <mitchb@mit.edu> Tue, 15 Nay 2018 19:50:00 -0400
+
invirt-xen-config (0.0.53) unstable; urgency=low
* Fix machine UUID assignment after SQLAlchemy started returning Unicode
check(re.match('^[0-9a-fA-F:]+$', n.mac_addr) and re.match('^[0-9.]*$', n.ip))
if n.nic_type:
viftype = viftype.replace("pcnet", n.nic_type)
- d = ('%smac=%s, ip=%s, script=vif-invirtroute netdev=%s'
- % (viftype, n.mac_addr, n.ip, config.xen.iface))
+ other_netparams = ('other_ip=%s other_gateway=%s'
+ % (n.other_ip, n.other_gateway) if n.other_ip else '')
+ d = ('%smac=%s, ip=%s, script=vif-invirtroute netdev=%s gateway=%s %s'
+ % (viftype, n.mac_addr, n.ip, config.xen.iface, n.gateway, other_netparams))
vif.append(d)
for d in machine.disks:
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
${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