vm/network: use metric to allow multiple routes to same VM
This is required when VM has multiple interfaces (eg HVM: PV and stubdom). Prefer the later one.
This commit is contained in:
		
							parent
							
								
									4d0839d05b
								
							
						
					
					
						commit
						eed0b16174
					
				@ -29,7 +29,7 @@ case "$command" in
 | 
			
		||||
	online)
 | 
			
		||||
		ifconfig ${vif} up
 | 
			
		||||
		echo 1 >/proc/sys/net/ipv4/conf/${vif}/proxy_arp
 | 
			
		||||
		ipcmd='replace'
 | 
			
		||||
		ipcmd='add'
 | 
			
		||||
		iptables_cmd='-I PREROUTING 1'
 | 
			
		||||
		cmdprefix=''
 | 
			
		||||
		;;
 | 
			
		||||
@ -41,11 +41,17 @@ case "$command" in
 | 
			
		||||
		;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
domid=${vif/vif/}
 | 
			
		||||
domid=${domid/.*/}
 | 
			
		||||
# metric must be possitive, but prefer later interface
 | 
			
		||||
#  32752 is max XID aka domid
 | 
			
		||||
metric=$[ 32752 - $domid ]
 | 
			
		||||
 | 
			
		||||
if [ "${ip}" ] ; then
 | 
			
		||||
	# If we've been given a list of IP addresses, then add routes from dom0 to
 | 
			
		||||
	# the guest using those addresses.
 | 
			
		||||
	for addr in ${ip} ; do
 | 
			
		||||
		${cmdprefix} ip route ${ipcmd} ${addr} dev ${vif} || true
 | 
			
		||||
		${cmdprefix} ip route ${ipcmd} ${addr} dev ${vif} metric $metric
 | 
			
		||||
	done
 | 
			
		||||
		echo ${cmdprefix} iptables -t raw $iptables_cmd -i ${vif} \! -s ${ip} -j DROP
 | 
			
		||||
		${cmdprefix} iptables -t raw $iptables_cmd -i ${vif} \! -s ${ip} -j DROP
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user