X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-xen-config.git/blobdiff_plain/e65b5654a4a8163002c2c5b2e1d2fa411a7418c9..a44ef0ab0184ca00545e293427430608470fbee9:/files/etc/xen/scripts/vif-sipbroute diff --git a/files/etc/xen/scripts/vif-sipbroute b/files/etc/xen/scripts/vif-sipbroute index be2b93e..5cd0a88 100755 --- a/files/etc/xen/scripts/vif-sipbroute +++ b/files/etc/xen/scripts/vif-sipbroute @@ -3,6 +3,7 @@ + #============================================================================ # /etc/xen/vif-route # @@ -24,6 +25,7 @@ # V6PREFIX prefix of v6 address to use # Note that the v6 support is kind of broken because there's not really a way to populate the v6 prefix # This script will set up proxy arp for any ip addresses that are being routed +# type read to determine if the device is ioemu #============================================================================ @@ -31,12 +33,13 @@ dir=$(dirname "$0") . "$dir/vif-common.sh" main_ip=$(dom0_ip) +dev=${dev:-${vif}} case "$command" in online) - ifconfig ${vif} ${main_ip} netmask 255.255.255.255 up - echo 1 >/proc/sys/net/ipv4/conf/${vif}/proxy_arp - echo 1 >/proc/sys/net/ipv4/conf/${vif}/rp_filter + ifconfig ${dev} ${main_ip} netmask 255.255.255.255 up + echo 1 >/proc/sys/net/ipv4/conf/${dev}/proxy_arp + echo 1 >/proc/sys/net/ipv4/conf/${dev}/rp_filter ipcmd='add' cmdprefix='' ;; @@ -52,26 +55,28 @@ esac v6prefix=${v6prefix:-} v6prefix=$(xenstore_read_default "$XENBUS_PATH/v6prefix" "$v6prefix") - -if [ "${ip}" ] ; then +vif_type=$(xenstore_read_default "$XENBUS_PATH/type" "viffront") +if [ ${vif_type} != "ioemu" -o x${qemu_online} = xyes ] ; then + 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} src ${main_ip} - arpspoof -i eth0 ${addr}& - sleep 5 - kill %arpspoof - done -fi - -if [ x${v6prefix} != x ] ; then - sed -e "s/@interface@/${vif}/" -e "s+@prefix@+${v6prefix}+" /etc/xen/radvd.conf.template >/var/run/radvd.conf.${vif} - ${cmdprefix} ip -6 addr ${ipcmd} fe80::/64 scope link dev ${vif} - if [ $1 = online ] ; then - radvd -u radvd -C /var/run/radvd.conf.${vif} -p /var/run/radvd/radvd.pid.${vif} + for addr in ${ip} ; do + ${cmdprefix} ip route ${ipcmd} ${addr} dev ${dev} src ${main_ip} + arpspoof -i eth0 -t 18.181.0.1 ${addr}& + sleep 5 + kill %arpspoof + done fi - ${cmdprefix} ip -6 route ${ipcmd} ${v6prefix} dev ${vif} + + if [ x${v6prefix} != x ] ; then + sed -e "s/@interface@/${dev}/" -e "s+@prefix@+${v6prefix}+" /etc/xen/radvd.conf.template >/var/run/radvd.conf.${vif} + ${cmdprefix} ip -6 addr ${ipcmd} fe80::/64 scope link dev ${dev} + if [ $1 = online ] ; then + radvd -u radvd -C /var/run/radvd.conf.${vif} -p /var/run/radvd/radvd.pid.${vif} + fi + ${cmdprefix} ip -6 route ${ipcmd} ${v6prefix} dev ${dev} fi +fi handle_iptable