From 07337318ec528c58779e6ca8f75bdaf343f5d3d6 Mon Sep 17 00:00:00 2001 From: James Mckenzie Date: Thu, 10 Sep 2009 14:57:23 +0100 Subject: [PATCH] Add tftp as a method by which the answerfile may be fetched --- .../etc/dhcp-prefix | 0 .../install/stages/Get-answerfile | 12 +++++++++++- .../usr/share/udhcpc/default.script | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 target/generic/target_xenclient_installer_skeleton/etc/dhcp-prefix 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 index 0000000..e69de29 diff --git a/target/generic/target_xenclient_installer_skeleton/install/stages/Get-answerfile b/target/generic/target_xenclient_installer_skeleton/install/stages/Get-answerfile index c813e21..e6c5830 100755 --- a/target/generic/target_xenclient_installer_skeleton/install/stages/Get-answerfile +++ b/target/generic/target_xenclient_installer_skeleton/install/stages/Get-answerfile @@ -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 diff --git a/target/generic/target_xenclient_installer_skeleton/usr/share/udhcpc/default.script b/target/generic/target_xenclient_installer_skeleton/usr/share/udhcpc/default.script index 70a7626..f5331f0 100755 --- a/target/generic/target_xenclient_installer_skeleton/usr/share/udhcpc/default.script +++ b/target/generic/target_xenclient_installer_skeleton/usr/share/udhcpc/default.script @@ -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 -- 2.39.5