X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=utils%2Fpb-udhcpc;h=4ff0dcf2dc9328d71cd8deaff2b69e4120a2dc58;hp=ff231780829630dd4823c7c56396acb8ab760e1a;hb=44e10d816427c001d60eb5e7b3e75b740e5a2823;hpb=48ac556c894f338abf567730a37976496913402c diff --git a/utils/pb-udhcpc b/utils/pb-udhcpc index ff23178..4ff0dcf 100644 --- a/utils/pb-udhcpc +++ b/utils/pb-udhcpc @@ -10,23 +10,51 @@ PBOOT_USER_EVENT_SOCKET="/tmp/petitboot.ev" log="/var/log/petitboot/pb-udhcpc.log" pb_add () { - k_server_ip=${rootpath%%:*} - k_root_dir=${rootpath#*:} + # Looks like udhcpc will give us different names, depending if the + # parameter was in the header, or specified by options + [ -z "$bootfile" ] && bootfile=${boot_file} - [ ${k_server_ip} != ${rootpath} ] || k_server_ip=${serverid} + mac=$(< /sys/class/net/$interface/address) + paramstr='' - pb-event add@/net/${interface} \ - name=netboot \ - image=tftp://${siaddr}/${boot_file} \ - args="root=/dev/nfs ip=any nfsroot=${k_server_ip}:${k_root_dir}" + # Collect relevant DHCP response parameters into $paramstr + for name in pxeconffile bootfile mac ip siaddr serverid tftp + do + value=$(eval "echo \${$name}") + [ -n "$value" ] || continue; + + paramstr="$paramstr $name=$value" + done + + pb-event dhcp@{interface} $paramstr + + # Check if an explicit config file present + if [ -n "${conffile}" ] + then + return; + fi + + # Finally, add an option for the boot_file parameter + paramstr='name=netboot' + + # Collect relevant parameters to add an option to the boot_file parameter + for name in rootpath siaddr boot_file + do + value=$(eval "echo \${$name}") + [ -n "$value" ] || continue; + + paramstr="$paramstr $name=$value" + done + + pb-event add@{interface} $paramstr } pb_remove () { - pb-event remove@/net/${interface} name=netboot + pb-event remove@${interface} name=netboot } case "$1" in -bound | renew) +bound) pb_add ;; deconfig)