chiark / gitweb /
: ${:=} not ${:=}
[autopkgtest.git] / xen / vif-route-adt
index 41ec6a023cbd5fadcdd8dadd5869cdec8be82802..dfa3df3a208b8815497b6e625b3752cb53819fc0 100755 (executable)
 #         this script).
 #============================================================================
 
-exec 2>>/var/log/xen-hotplug.log
-set -x
 case $0 in */*) dir=${0%/*};; *) dir=.;; esac
 . "$dir/vif-common.sh"
 
 main_ip=$(dom0_ip)
+mac=$(xenstore_read "$XENBUS_PATH/mac")
 
 case "$command" in
     online)
         ifconfig ${vif} ${main_ip} netmask 255.255.255.255 \
                broadcast ${main_ip} up
-       ip -f inet6 addr delete dev ${vif} local fe80::fcff:ffff:feff:ffff/64
-       ip -f inet neigh add \
-           to 172.18.45.66 \
-           dev ${vif} \
-           lladdr 00:16:3e:7c:aa:7f \
-           nud permanent
-       arp -i ${vif} -s 172.18.45.66 00:16:3e:7c:aa:7f pub
-        ipcmd='a'
+       ip -f inet6 addr delete dev $vif local fe80::fcff:ffff:feff:ffff/64 ||:
+        ipcmd='add'
        iptcmd='-A'
+       cmdprefix=''
+       add_only=''
         ;;
     offline)
         ifdown ${vif}
-        ipcmd='d'
+        ipcmd='del'
        iptcmd='-D'
+       cmdprefix='do_without_error'
+       add_only=:
         ;;
 esac
 
-iptables "$iptcmd" INPUT -i "$vif" -j AdtXenIn
-iptables "$iptcmd" FORWARD -i "$vif" -j AdtXenFwd
-
 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
-      ip r ${ipcmd} ${addr} dev ${vif} src ${main_ip}
+      ${cmdprefix} ip route ${ipcmd} ${addr} dev ${vif} src ${main_ip}
+      ${add_only} ip -f inet neigh add to ${addr} dev ${vif} lladdr ${mac} nud permanent
+      ${add_only} arp -i ${vif} -s ${addr} ${mac} pub
     done 
 fi
 
-#S log debug "Successful vif-route $command for $vif."
+iptables "$iptcmd" INPUT -i "$vif" -j AdtXenIn
+iptables "$iptcmd" FORWARD -i "$vif" -j AdtXenFwd
+
+log debug "Successful vif-route $command for $vif."
 if [ "$command" == "online" ]
 then
   success