Patchwork [20/24] petitboot: Add udhcpc utility script

login
register
mail settings
Submitter Geoff Levand
Date April 13, 2009, 1:11 a.m.
Message ID <20090413011138.032695983@am.sony.com>
Download mbox | patch
Permalink /patch/25888/
State Accepted
Headers show

Comments

Geoff Levand - April 13, 2009, 1:11 a.m.
Add a udhcpc utility script.  udhcpc can be configured to run a
specified script when there is a change in the dhcp configuration.
This udhcpc utility script will write a petitboot netboot message
to the petitboot user event socket.

Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
---
 rules.mk     |    4 +++-
 utils/udhcpc |   38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 41 insertions(+), 1 deletion(-)

Patch

--- a/rules.mk
+++ b/rules.mk
@@ -30,6 +30,7 @@  endif
 # other to install
 artwork = background.jpg cdrom.png hdd.png usbpen.png tux.png cursor.gz
 rules = utils/99-petitboot.rules
+udhcpc = utils/udhcpc
 
 # client/daemon lib objs
 list_objs = lib/list/list.o
@@ -115,7 +116,7 @@  $(parser_test): $(parser_test_objs)
 
 parser-test: $(parser_test)
 
-install: all $(rules)
+install: all $(rules) $(udhcpc)
 	$(INSTALL) -d $(DESTDIR)$(sbindir)/
 	$(INSTALL) $(daemons) $(uis) $(utils) $(DESTDIR)$(sbindir)/
 	$(INSTALL) -d $(DESTDIR)$(pkgdatadir)/artwork/
@@ -123,6 +124,7 @@  install: all $(rules)
 		$(DESTDIR)$(pkgdatadir)/artwork/
 	$(INSTALL) -d $(DESTDIR)$(pkgdatadir)/utils
 	$(INSTALL) -m 644 $(top_srcdir)/$(rules) $(DESTDIR)$(pkgdatadir)/utils
+	$(INSTALL) -m 644 $(top_srcdir)/$(udhcpc) $(DESTDIR)$(pkgdatadir)/utils
 
 dist: $(PACKAGE)-$(VERSION).tar.gz
 
--- /dev/null
+++ b/utils/udhcpc
@@ -0,0 +1,38 @@ 
+#!/bin/sh
+#
+# Petitboot udhcpc user script.  Should be run by udhcpc when
+# there is a change in the dhcp configuration.  For more info
+# see the udhcpc man page and the Linux kernel source file
+# Documentation/filesystems/nfsroot.txt.
+#
+
+PBOOT_USER_EVENT_SOCKET="/tmp/petitboot.ev"
+log="pb-udhcpc.log"
+
+pb_add () {
+	k_server_ip=${rootpath%%:*}
+	k_root_dir=${rootpath#*:}
+
+	[ ${k_server_ip} != ${rootpath} ] || k_server_ip=${serverid}
+
+	echo -ne "add@/net/${interface}\0name=netboot\0image=tftp://${siaddr}${boot_file}\0args=root=/dev/nfs ip=any nfsroot=${k_server_ip}:${k_root_dir}\0" | pb-event
+}
+
+pb_remove () {
+	echo -ne "remove@/net/${interface}\0name=netboot\0" | pb-event
+}
+
+case "$1" in
+bound | renew)
+	pb_add
+	;;
+deconfig)
+	pb_remove
+	;;
+*)
+	;;
+esac
+
+echo "--- $1 ---" >> ${log}
+set >> ${log}
+echo "---------------" >> ${log}