浏览代码

HPA's Trivial File Transfer Protocol (tftp) server.

Eric Andersen 20 年之前
父节点
当前提交
cbe260d167
共有 5 个文件被更改,包括 181 次插入0 次删除
  1. 1 0
      package/Config.in
  2. 6 0
      package/tftpd/Config.in
  3. 3 0
      package/tftpd/default-tftpd
  4. 93 0
      package/tftpd/init-tftpd
  5. 78 0
      package/tftpd/tftpd.mk

+ 1 - 0
package/Config.in

@@ -89,6 +89,7 @@ source "package/slang/Config.in"
 source "package/socat/Config.in"
 source "package/strace/Config.in"
 source "package/tcpdump/Config.in"
+source "package/tftpd/Config.in"
 source "package/tinylogin/Config.in"
 source "package/tinyx/Config.in"
 source "package/tn5250/Config.in"

+ 6 - 0
package/tftpd/Config.in

@@ -0,0 +1,6 @@
+config BR2_PACKAGE_TFTPD
+	bool "tftpd"
+	default n
+	help
+	  HPA's Trivial File Transfer Protocol (tftp) server.
+

+ 3 - 0
package/tftpd/default-tftpd

@@ -0,0 +1,3 @@
+#Defaults for tftpd-hpa
+RUN_DAEMON="yes"
+OPTIONS="-l -s /var/lib/tftpboot"

+ 93 - 0
package/tftpd/init-tftpd

@@ -0,0 +1,93 @@
+#! /bin/sh
+#
+# Author:	Jaakko Niemi <liiwi@iki.fi>
+# Modified from skeleton file in sarge
+
+set -e
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DESC="HPA's tftpd"
+NAME=in.tftpd
+DAEMON=/usr/sbin/$NAME
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/tftpd-hpa
+
+# Gracefully exit if the package has been removed.
+test -x $DAEMON || exit 0
+
+# Read config file if it is present.
+if [ -r /etc/default/tftpd-hpa ]
+then
+	. /etc/default/tftpd-hpa
+fi
+
+if [ "$RUN_DAEMON" = "yes" ] ; then
+         echo "tftpd-hpa disabled in /etc/default/tftpd-hpa"
+	 exit 0
+fi
+
+#
+#	Function that starts the daemon/service.
+#
+d_start() {
+	start-stop-daemon --start --quiet --exec $DAEMON -- $OPTIONS
+}
+
+#
+#	Function that stops the daemon/service.
+#
+d_stop() {
+	start-stop-daemon --stop --quiet --name $NAME
+}
+
+#
+#	Function that sends a SIGHUP to the daemon/service.
+#
+d_reload() {
+	start-stop-daemon --stop --quiet --name $NAME --signal 1
+}
+
+case "$1" in
+  start)
+	echo -n "Starting $DESC: $NAME"
+	d_start
+	echo "."
+	;;
+  stop)
+	echo -n "Stopping $DESC: $NAME"
+	d_stop
+	echo "."
+	;;
+  #reload)
+	#
+	#	If the daemon can reload its configuration without
+	#	restarting (for example, when it is sent a SIGHUP),
+	#	then implement that here.
+	#
+	#	If the daemon responds to changes in its config file
+	#	directly anyway, make this an "exit 0".
+	#
+	# echo -n "Reloading $DESC configuration..."
+	# d_reload
+	# echo "done."
+  #;;
+  restart|force-reload)
+	#
+	#	If the "reload" option is implemented, move the "force-reload"
+	#	option to the "reload" entry above. If not, "force-reload" is
+	#	just the same as "restart".
+	#
+	echo -n "Restarting $DESC: $NAME"
+	d_stop
+	sleep 1
+	d_start
+	echo "."
+	;;
+  *)
+	# echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+	exit 1
+	;;
+esac
+
+exit 0

+ 78 - 0
package/tftpd/tftpd.mk

@@ -0,0 +1,78 @@
+#############################################################
+#
+# tftpd
+#
+#############################################################
+TFTP_HPA_VER:=0.40
+TFTP_HPA_SOURCE:=tftp-hpa-$(TFTP_HPA_VER).tar.bz2
+TFTP_HPA_SITE:=http://www.kernel.org/pub/software/network/tftp/
+TFTP_HPA_DIR:=$(BUILD_DIR)/tftp-hpa-$(TFTP_HPA_VER)
+TFTP_HPA_CAT:=bzcat
+TFTP_HPA_BINARY:=tftpd/tftpd
+TFTP_HPA_TARGET_BINARY:=usr/sbin/in.tftpd
+
+$(DL_DIR)/$(TFTP_HPA_SOURCE):
+	 $(WGET) -P $(DL_DIR) $(TFTP_HPA_SITE)/$(TFTP_HPA_SOURCE)
+
+tftpd-source: $(DL_DIR)/$(TFTP_HPA_SOURCE)
+
+$(TFTP_HPA_DIR)/.unpacked: $(DL_DIR)/$(TFTP_HPA_SOURCE)
+	$(TFTP_HPA_CAT) $(DL_DIR)/$(TFTP_HPA_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+	toolchain/patch-kernel.sh $(TFTP_HPA_DIR) package/tftpd/ tftpd*.patch
+	touch $(TFTP_HPA_DIR)/.unpacked
+
+$(TFTP_HPA_DIR)/.configured: $(TFTP_HPA_DIR)/.unpacked
+	(cd $(TFTP_HPA_DIR); rm -rf config.cache; \
+		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
+		./configure \
+		--target=$(GNU_TARGET_NAME) \
+		--host=$(GNU_TARGET_NAME) \
+		--build=$(GNU_HOST_NAME) \
+		--prefix=/usr \
+		--exec-prefix=/usr \
+		--bindir=/usr/bin \
+		--sbindir=/usr/sbin \
+		--libexecdir=/usr/lib \
+		--sysconfdir=/etc \
+		--datadir=/usr/share \
+		--localstatedir=/var \
+		--mandir=/usr/man \
+		--infodir=/usr/info \
+		$(DISABLE_LARGEFILE) \
+		--without-tcpwrappers \
+	);
+	touch  $(TFTP_HPA_DIR)/.configured
+
+$(TFTP_HPA_DIR)/$(TFTP_HPA_BINARY): $(TFTP_HPA_DIR)/.configured
+	$(MAKE) -C $(TFTP_HPA_DIR)
+
+# This stuff is needed to work around GNU make deficiencies
+$(TARGET_DIR)/$(TFTP_HPA_TARGET_BINARY): $(TFTP_HPA_DIR)/$(TFTP_HPA_BINARY)
+	@if [ -L $(TARGET_DIR)/$(TFTP_HPA_TARGET_BINARY) ] ; then \
+		rm -f $(TARGET_DIR)/$(TFTP_HPA_TARGET_BINARY); fi;
+	@if [ ! -f $(TFTP_HPA_DIR)/$(TFTP_HPA_BINARY) -o $(TARGET_DIR)/$(TFTP_HPA_TARGET_BINARY) \
+	-ot $(TFTP_HPA_DIR)/$(TFTP_HPA_BINARY) ] ; then \
+	    set -x; \
+	    rm -f $(TARGET_DIR)/$(TFTP_HPA_TARGET_BINARY); \
+	    cp -a $(TFTP_HPA_DIR)/$(TFTP_HPA_BINARY) $(TARGET_DIR)/$(TFTP_HPA_TARGET_BINARY); fi ;
+	$(INSTALL) -D -m 0755 package/tftpd/init-tftpd $(TARGET_DIR)/etc/init.d/S80tftpd-hpa
+	$(INSTALL) -D -m 0644 package/tftpd/default-tftpd $(TARGET_DIR)/etc/default/tftpd-hpa
+
+tftpd: uclibc $(TARGET_DIR)/$(TFTP_HPA_TARGET_BINARY)
+
+tftpd-clean:
+	$(MAKE) DESTDIR=$(TARGET_DIR) -C $(TFTP_HPA_DIR) uninstall
+	-$(MAKE) -C $(TFTP_HPA_DIR) clean
+
+tftpd-dirclean:
+	rm -rf $(TFTP_HPA_DIR)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_TFTPD)),y)
+TARGETS+=tftpd
+endif