]> xenbits.xensource.com Git - xenclient/build.git/commitdiff
Add tftp as a method by which the answerfile may be fetched
authorJames Mckenzie <jamesmck@taoand.(none)>
Thu, 10 Sep 2009 13:57:23 +0000 (14:57 +0100)
committerJames Mckenzie <jamesmck@taoand.(none)>
Thu, 10 Sep 2009 13:57:23 +0000 (14:57 +0100)
target/generic/target_xenclient_installer_skeleton/etc/dhcp-prefix [new file with mode: 0644]
target/generic/target_xenclient_installer_skeleton/install/stages/Get-answerfile
target/generic/target_xenclient_installer_skeleton/usr/share/udhcpc/default.script

diff --git a/target/generic/target_xenclient_installer_skeleton/etc/dhcp-prefix b/target/generic/target_xenclient_installer_skeleton/etc/dhcp-prefix
new file mode 100644 (file)
index 0000000..e69de29
index c813e21107230317ae2f7b8c88e117a5004adea2..e6c5830ca81dbf1e7b695d4cd650e7377d617d75 100755 (executable)
@@ -86,7 +86,7 @@ iface ${NIC} inet dhcp"
 }
 
 # Parse ${ANSWERFILE_OPT} variable to determine if the file is local or remote.
-PROTOCOL=$(echo ${ANSWERFILE_OPT} | sed -ne 's/^\(http\|ftp\|nfs\):\/\/.*$/\1/p')
+PROTOCOL=$(echo ${ANSWERFILE_OPT} | sed -ne 's/^\(http\|ftp\|nfs\|tftp\):\/\/.*$/\1/p')
 
 if [ -z "${PROTOCOL}" ] ; then
     LOCAL_ANSWERFILE="${ANSWERFILE_OPT}"
@@ -97,6 +97,16 @@ else
     network_up_for_answerfile || exit ${Abort}
 
     case "${PROTOCOL}" in
+    tftp) 
+           REMOTE_LEAF=$(echo ${ANSWERFILE_OPT} | sed -e 's/^tftp:\/\/[^\/]*\///g' )
+           REMOTE_HOST=$(echo ${ANSWERFILE_OPT} | sed -ne 's/^tftp:\/\/\([^\/]*\)\///p' )
+           if [ -z "$REMOTE_HOST ]; then
+               REMOTE_HOST="dhcp"
+           fi
+           REMOTE_PREFIX=$(cat /tmp/dhcp-prefix)
+            tftp -l "${LOCAL_ANSWERFILE}" -r "$(cat /tmp/dhcp-prefix)/$REMOTE_LEAF" -g "$REMOTE_HOST" || exit ${Abort}
+           break
+        ;;
     http|ftp)
             wget "${ANSWERFILE_OPT}" -O "${LOCAL_ANSWERFILE}" || exit ${Abort}
             break
index 70a7626ea1a195936f39b7c6d362e8589ac69e92..f5331f0e416601eed613f5aba1e50c9bfdd3eb19 100755 (executable)
@@ -37,6 +37,10 @@ case "$1" in
                if [ -n "$serverid" ]; then
                        echo $serverid dhcp >> /etc/hosts
                fi
+
+               if [ -n "$boot_file" ]; then
+                       dirname "$boot_file" > /etc/dhcp-prefix
+               fi
                ;;
 esac