utils/pb-udhcpc: Unify references to DHCP bootfile parameter
[petitboot] / utils / pb-udhcpc
index ff231780829630dd4823c7c56396acb8ab760e1a..7ed9035d5e9dad89f7880a0815e645320b8939d4 100644 (file)
@@ -10,23 +10,54 @@ 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=$(cat /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 pxepathprefix 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 boot file present. If there is, add it as
+       # an option directly.
+       if [ -z "${bootfile}" ]
+       then
+               return;
+       fi
+
+       paramstr=""
+
+       # Collect relevant parameters to add an option to the bootfile
+       # parameter
+       for name in rootpath siaddr bootfile
+        do
+                value=$(eval "echo \${$name}")
+                [ -n "$value" ] || continue;
+
+                paramstr="$paramstr $name=$value"
+        done
+
+       pb-event add@${interface} name="netboot $interface ($bootfile)" \
+               $paramstr
 }
 
 pb_remove () {
-       pb-event remove@/net/${interface} name=netboot
+       pb-event remove@${interface}
 }
 
 case "$1" in
-bound | renew)
+bound)
        pb_add
        ;;
 deconfig)