Browse Source

add proper infrastructure for udhcpd

This is a bit hacky, as it creates a meta-package with no prompt and
boolean value of the busybox internal udhcpd config symbol. It's use is
only to get the required files into the image. I guess there is probably
a more elegant way of doing this.
Phil Sutter 15 years ago
parent
commit
21ed9fa0c1

+ 3 - 0
package/busybox/Config.in.manual

@@ -17,3 +17,6 @@ menu "Busybox Configuration"
 source "package/busybox/config/Config.in"
 endmenu
 
+config ADK_PACKAGE_UDHCPD
+	boolean
+	default BUSYBOX_APP_UDHCPD

+ 8 - 0
package/busybox/Makefile

@@ -12,9 +12,13 @@ PKG_SECTION:=		base
 PKG_URL:=		http://www.busybox.net
 PKG_SITES:=		http://www.busybox.net/downloads/
 
+PKG_DESCR_UDHCPD:=	uDHCPD meta package
+PKG_SECTION_UDHCPD:=	net
+
 include $(TOPDIR)/mk/package.mk
 
 $(eval $(call PKG_template,BUSYBOX,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+$(eval $(call PKG_template,UDHCPD,udhcpd,${PKG_VERSION}-${PKG_RELEASE},busybox,${PKG_DESCR_UDHCPD},${PKG_SECTION_UDHCPD}))
 
 CONFIG_STYLE:=		manual
 BUILD_STYLE:=		manual
@@ -63,6 +67,10 @@ ifeq ($(ADK_DEBUG),y)
 	${INSTALL_BIN} $(WRKBUILD)/busybox_unstripped \
 		$(IDIR_BUSYBOX)/bin/busybox
 endif
+ifeq ($(ADK_PACKAGE_UDHCPD),y)
+	${INSTALL_DIR} ${IDIR_UDHCPD}/etc/
+	${INSTALL_DATA} ./files/udhcpd.conf ${IDIR_UDHCPD}/etc/
+endif
 
 fake:	$(TOPDIR)/.busyboxcfg do-configure do-install
 

+ 28 - 0
package/busybox/files/udhcpd.conf

@@ -0,0 +1,28 @@
+# interface to bind to
+interface eth0
+
+# iprange to choose from
+start	192.168.1.100
+end	192.168.1.200
+
+# max number of leases
+#max_leases	100
+
+# period of auto lease file updates (in seconds)
+auto_time 7200
+
+# some timeouts
+#decline_time 3600
+#conflict_time 3600
+#offer_time 60
+#min_lease 60
+
+# do not change the path here
+leases_file /var/udhcpd.leases
+
+# call this script upon lease file write
+# (dumpleases may be useful for debugging)
+#notify_file dumpleases
+
+# static leases
+#static_lease 00:fe:ed:ba:be:00 192.168.1.2

+ 1 - 0
package/busybox/files/udhcpd.conffiles

@@ -0,0 +1 @@
+/etc/udhcpd.conf

+ 28 - 0
package/busybox/files/udhcpd.init

@@ -0,0 +1,28 @@
+#!/bin/sh
+#PKG udhcpd
+#INIT 50
+. /etc/rc.conf
+
+case $1 in
+autostop) ;;
+autostart)
+	[[ $udhcpd = NO ]] && exit 0
+	exec sh $0 start
+	;;
+start)
+	touch /var/udhcp.leases
+	udhcpd -S
+	;;
+stop)
+	pkill udhcpd
+	;;
+restart)
+	sh $0 stop
+	sh $0 start
+	;;
+*)
+	echo "Usage: $0 {start | stop | restart}"
+	exit 1
+	;;
+esac
+exit $?

+ 3 - 0
package/busybox/files/udhcpd.postinst

@@ -0,0 +1,3 @@
+#!/bin/sh
+. $IPKG_INSTROOT/etc/functions.sh
+add_rcconf udhcpd udhcpd 'NO'