A few of these need clean-up (attribution, up-stream status, etc.) that Paul and I were discussing, forgot about, and are now focused on again.
I'm still sorting that part out, so there's an update coming from me for the tftp-hpa patches before they get merged. -J. [[oe] [meta-networking][PATCH 1/8] tftp-hpa: add from OE-Classic, update and tidy up] On 12.11.19 (Mon 17:11) Paul Eggleton wrote: > * Update to 5.2 > * Add patches > * Add DESCRIPTION and better SUMMARY > * Make LICENSE more accurate > * Add LIC_FILES_CHKSUM > * Update ALTERNATIVE_* definitions > > Much of this was done by Joe MacDonald <[email protected]>. > > Signed-off-by: Paul Eggleton <[email protected]> > --- > .../recipes-daemons/tftp-hpa/files/default | 3 + > .../recipes-daemons/tftp-hpa/files/init | 104 +++++++++++++ > .../tftp-hpa/files/tftp-0.40-remap.patch | 19 +++ > .../tftp-hpa/files/tftp-0.42-tftpboot.patch | 54 +++++++ > .../tftp-hpa/files/tftp-0.49-chk_retcodes.patch | 15 ++ > .../tftp-hpa/files/tftp-0.49-cmd_arg.patch | 159 > ++++++++++++++++++++ > .../tftp-hpa/files/tftp-hpa-0.39-tzfix.patch | 18 +++ > .../files/tftp-hpa-0.49-fortify-strcpy-crash.patch | 26 ++++ > .../tftp-hpa/files/tftp-hpa-0.49-stats.patch | 14 ++ > .../tftp-hpa/files/tftp-hpa-5.2-pktinfo.patch | 23 +++ > .../recipes-daemons/tftp-hpa/files/tftp-xinetd | 18 +++ > .../recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb | 66 ++++++++ > 12 files changed, 519 insertions(+) > create mode 100644 meta-networking/recipes-daemons/tftp-hpa/files/default > create mode 100644 meta-networking/recipes-daemons/tftp-hpa/files/init > create mode 100644 > meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.40-remap.patch > create mode 100644 > meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.42-tftpboot.patch > create mode 100644 > meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-chk_retcodes.patch > create mode 100644 > meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-cmd_arg.patch > create mode 100644 > meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.39-tzfix.patch > create mode 100644 > meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-fortify-strcpy-crash.patch > create mode 100644 > meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-stats.patch > create mode 100644 > meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-5.2-pktinfo.patch > create mode 100644 meta-networking/recipes-daemons/tftp-hpa/files/tftp-xinetd > create mode 100644 meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb > > diff --git a/meta-networking/recipes-daemons/tftp-hpa/files/default > b/meta-networking/recipes-daemons/tftp-hpa/files/default > new file mode 100644 > index 0000000..de2ed18 > --- /dev/null > +++ b/meta-networking/recipes-daemons/tftp-hpa/files/default > @@ -0,0 +1,3 @@ > +#Defaults for tftpd-hpa > +RUN_DAEMON="yes" > +OPTIONS="-l -s /srv/tftpboot" > diff --git a/meta-networking/recipes-daemons/tftp-hpa/files/init > b/meta-networking/recipes-daemons/tftp-hpa/files/init > new file mode 100644 > index 0000000..5ad8c52 > --- /dev/null > +++ b/meta-networking/recipes-daemons/tftp-hpa/files/init > @@ -0,0 +1,104 @@ > +#! /bin/sh > +# > +# Author: Jaakko Niemi <[email protected]> > +# Modified from skeleton file in sarge > + > +### BEGIN INIT INFO > +# Provides: tftp-hpa > +# Required-Start: $local_fs $remote_fs $syslog $network > +# Required-Stop: $local_fs $remote_fs $syslog $network > +# Default-Start: 2 3 4 5 > +# Default-Stop: 1 > +# Short-Description: HPA's tftp client > +# Description: tftp server to allow booting clients which support > +# the PXE protocol. > +### END INIT INFO > + > +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 "Starting $DESC: $NAME" > + d_start > + echo "." > + ;; > + stop) > + echo "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 "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 > diff --git > a/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.40-remap.patch > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.40-remap.patch > new file mode 100644 > index 0000000..755a307 > --- /dev/null > +++ b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.40-remap.patch > @@ -0,0 +1,19 @@ > +diff -up tftp-hpa-0.49/tftpd/remap.c.zero tftp-hpa-0.49/tftpd/remap.c > +--- tftp-hpa-0.49/tftpd/remap.c.zero 2008-10-20 18:08:31.000000000 -0400 > ++++ tftp-hpa-0.49/tftpd/remap.c 2008-11-25 11:41:09.000000000 -0500 > +@@ -286,6 +286,7 @@ struct rule *parserulefile(FILE * f) > + int lineno = 0; > + int err = 0; > + > ++ memset(this_rule, '\0', sizeof(struct rule)); > + while (lineno++, fgets(line, MAXLINE, f)) { > + rv = parseline(line, this_rule, lineno); > + if (rv < 0) > +@@ -294,6 +295,7 @@ struct rule *parserulefile(FILE * f) > + *last_rule = this_rule; > + last_rule = &this_rule->next; > + this_rule = tfmalloc(sizeof(struct rule)); > ++ memset(this_rule, '\0', sizeof(struct rule)); > + } > + } > + > diff --git > a/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.42-tftpboot.patch > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.42-tftpboot.patch > new file mode 100644 > index 0000000..a0de58d > --- /dev/null > +++ b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.42-tftpboot.patch > @@ -0,0 +1,54 @@ > +diff -up tftp-hpa-0.48/tftp-xinetd.tftpboot tftp-hpa-0.48/tftp-xinetd > +--- tftp-hpa-0.48/tftp-xinetd.tftpboot 2007-01-31 00:51:05.000000000 > +0100 > ++++ tftp-hpa-0.48/tftp-xinetd 2008-05-20 12:05:53.000000000 +0200 > +@@ -10,7 +10,7 @@ service tftp > + wait = yes > + user = root > + server = /usr/sbin/in.tftpd > +- server_args = -s /tftpboot > ++ server_args = -s /var/lib/tftpboot > + disable = yes > + per_source = 11 > + cps = 100 2 > +diff -up tftp-hpa-0.48/README.security.tftpboot tftp-hpa-0.48/README.security > +--- tftp-hpa-0.48/README.security.tftpboot 2008-05-29 17:36:32.000000000 > +0200 > ++++ tftp-hpa-0.48/README.security 2008-05-29 17:37:21.000000000 +0200 > +@@ -17,10 +17,10 @@ probably the following: > + > + 1. Create a separate "tftpd" user and group only used for tftpd; > + 2. Have all your boot files in a single directory tree (usually called > +- /tftpboot). > +-3. Specify "-p -u tftpd -s /tftpboot" on the tftpd command line; if > ++ /var/lib/tftpboot). > ++3. Specify "-p -u tftpd -s /var/lib/tftpboot" on the tftpd command line; if > + you want clients to be able to create files use > +- "-p -c -U 002 -u tftpd -s /tftpboot" (replace 002 with whatever > ++ "-p -c -U 002 -u tftpd -s /var/lib/tftpboot" (replace 002 with whatever > + umask is appropriate for your setup.) > + > + ======================================= > +@@ -40,12 +40,12 @@ directly. Thus, if your /etc/inetd.conf > + line): > + > + tftp dgram udp wait root /usr/sbin/tcpd > +-/usr/sbin/in.tftpd -s /tftpboot -r blksize > ++/usr/sbin/in.tftpd -s /var/lib/tftpboot -r blksize > + > + ... it's better to change to ... > + > + tftp dgram udp wait root /usr/sbin/in.tftpd > +-in.tftpd -s /tftpboot -r blksize > ++in.tftpd -s /var/lib/tftpboot -r blksize > + > + You should make sure that you are using "wait" option in tftpd; you > + also need to have tftpd spawned as root in order for chroot (-s) to > +diff -up tftp-hpa-0.48/tftpd/sample.rules.tftpboot > tftp-hpa-0.48/tftpd/sample.rules > +--- tftp-hpa-0.48/tftpd/sample.rules.tftpboot 2008-05-29 > 17:38:46.000000000 +0200 > ++++ tftp-hpa-0.48/tftpd/sample.rules 2008-05-29 17:38:05.000000000 +0200 > +@@ -30,5 +30,5 @@ rg \\ / # Convert backslashes > to slash > + rg \# @ # Convert hash marks to @ signs > + rg /../ /..no../ # Convert /../ to /..no../ > + e ^ok/ # These are always ok > +-r ^[^/] /tftpboot/\0 # Convert non-absolute files > ++r ^[^/] /var/lib/tftpboot/\0 # Convert non-absolute files > + a \.pvt$ # Reject requests for private files > diff --git > a/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-chk_retcodes.patch > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-chk_retcodes.patch > new file mode 100644 > index 0000000..6d63571 > --- /dev/null > +++ > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-chk_retcodes.patch > @@ -0,0 +1,15 @@ > +diff -up tftp-hpa-0.49/tftpd/tftpd.c.chk_retcodes tftp-hpa-0.49/tftpd/tftpd.c > +--- tftp-hpa-0.49/tftpd/tftpd.c.chk_retcodes 2009-01-15 15:28:50.000000000 > +0100 > ++++ tftp-hpa-0.49/tftpd/tftpd.c 2009-01-15 15:31:36.000000000 +0100 > +@@ -932,7 +932,10 @@ int main(int argc, char **argv) > + exit(EX_OSERR); > + } > + #ifdef __CYGWIN__ > +- chdir("/"); /* Cygwin chroot() bug workaround */ > ++ if (chdir("/") < 0) { /* > Cygwin chroot() bug workaround */ > ++ syslog(LOG_ERR, "chroot: %m"); > ++ exit(EX_OSERR); > ++ } > + #endif > + } > + #ifdef HAVE_SETREGID > diff --git > a/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-cmd_arg.patch > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-cmd_arg.patch > new file mode 100644 > index 0000000..2b9023a > --- /dev/null > +++ b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-0.49-cmd_arg.patch > @@ -0,0 +1,159 @@ > +diff -up tftp-hpa-0.49/config.h.cmd_arg tftp-hpa-0.49/config.h > +--- tftp-hpa-0.49/config.h.cmd_arg 2010-04-19 15:29:10.567331454 +0200 > ++++ tftp-hpa-0.49/config.h 2010-04-20 07:33:03.133232772 +0200 > +@@ -291,6 +291,7 @@ typedef int socklen_t; > + /* Prototypes for libxtra functions */ > + > + void *xmalloc(size_t); > ++void *xrealloc(void *, size_t); > + char *xstrdup(const char *); > + > + #ifndef HAVE_BSD_SIGNAL > +diff -up tftp-hpa-0.49/configure.in.cmd_arg tftp-hpa-0.49/configure.in > +--- tftp-hpa-0.49/configure.in.cmd_arg 2008-10-21 00:08:31.000000000 > +0200 > ++++ tftp-hpa-0.49/configure.in 2010-04-19 11:05:12.387340698 +0200 > +@@ -152,6 +152,7 @@ OBJROOT=`pwd` > + > + XTRA=false > + PA_SEARCH_LIBS_AND_ADD(xmalloc, iberty) > ++PA_SEARCH_LIBS_AND_ADD(xrealloc, iberty) > + PA_SEARCH_LIBS_AND_ADD(xstrdup, iberty) > + PA_SEARCH_LIBS_AND_ADD(bsd_signal, bsd, bsdsignal) > + PA_SEARCH_LIBS_AND_ADD(getopt_long, getopt, getopt_long) > +diff -up tftp-hpa-0.49/lib/xrealloc.c.cmd_arg tftp-hpa-0.49/lib/xrealloc.c > +--- tftp-hpa-0.49/lib/xrealloc.c.cmd_arg 2010-04-19 11:05:12.387340698 > +0200 > ++++ tftp-hpa-0.49/lib/xrealloc.c 2010-04-19 11:05:12.387340698 +0200 > +@@ -0,0 +1,20 @@ > ++/* > ++ * xrealloc.c > ++ * > ++ * Simple error-checking version of realloc() > ++ * > ++ */ > ++ > ++#include "config.h" > ++ > ++void *xrealloc(void *ptr, size_t size) > ++{ > ++ void *p = realloc(ptr, size); > ++ > ++ if (!p) { > ++ fprintf(stderr, "Out of memory!\n"); > ++ exit(128); > ++ } > ++ > ++ return p; > ++} > +diff -up tftp-hpa-0.49/tftp/main.c.cmd_arg tftp-hpa-0.49/tftp/main.c > +--- tftp-hpa-0.49/tftp/main.c.cmd_arg 2008-10-21 00:08:31.000000000 > +0200 > ++++ tftp-hpa-0.49/tftp/main.c 2010-04-19 11:05:12.389329337 +0200 > +@@ -89,11 +89,14 @@ int connected; > + const struct modes *mode; > + #ifdef WITH_READLINE > + char *line = NULL; > ++char *remote_pth = NULL; > + #else > + char line[LBUFLEN]; > ++char remote_pth[LBUFLEN]; > + #endif > + int margc; > +-char *margv[20]; > ++char **margv; > ++int sizeof_margv=0; > + const char *prompt = "tftp> "; > + sigjmp_buf toplevel; > + void intr(int); > +@@ -379,6 +382,10 @@ static void getmoreargs(const char *part > + free(line); > + line = NULL; > + } > ++ if (remote_pth) { > ++ free(remote_pth); > ++ remote_pth = NULL; > ++ } > + line = xmalloc(len + elen + 1); > + strcpy(line, partial); > + strcpy(line + len, eline); > +@@ -535,6 +542,7 @@ void put(int argc, char *argv[]) > + int fd; > + int n, err; > + char *cp, *targ; > ++ long dirlen, namelen, lastlen=0; > + > + if (argc < 2) { > + getmoreargs("send ", "(file) "); > +@@ -588,9 +596,22 @@ void put(int argc, char *argv[]) > + } > + /* this assumes the target is a directory */ > + /* on a remote unix system. hmmmm. */ > +- cp = strchr(targ, '\0'); > +- *cp++ = '/'; > ++ dirlen = strlen(targ)+1; > ++#ifdef WITH_READLINE > ++ remote_pth = xmalloc(dirlen+1); > ++#endif > ++ strcpy(remote_pth, targ); > ++ remote_pth[dirlen-1] = '/'; > ++ cp = remote_pth + dirlen; > + for (n = 1; n < argc - 1; n++) { > ++#ifdef WITH_READLINE > ++ namelen = strlen(tail(argv[n])) + 1; > ++ if (namelen > lastlen) { > ++ remote_pth = xrealloc(remote_pth, dirlen + namelen + 1); > ++ cp = remote_pth + dirlen; > ++ lastlen = namelen; > ++ } > ++#endif > + strcpy(cp, tail(argv[n])); > + fd = open(argv[n], O_RDONLY | mode->m_openflags); > + if (fd < 0) { > +@@ -600,9 +621,9 @@ void put(int argc, char *argv[]) > + } > + if (verbose) > + printf("putting %s to %s:%s [%s]\n", > +- argv[n], hostname, targ, mode->m_mode); > ++ argv[n], hostname, remote_pth, mode->m_mode); > + sa_set_port(&peeraddr, port); > +- tftp_sendfile(fd, targ, mode->m_mode); > ++ tftp_sendfile(fd, remote_pth, mode->m_mode); > + } > + } > + > +@@ -801,6 +822,10 @@ static void command(void) > + free(line); > + line = NULL; > + } > ++ if (remote_pth) { > ++ free(remote_pth); > ++ remote_pth = NULL; > ++ } > + line = readline(prompt); > + if (!line) > + exit(0); /* EOF */ > +@@ -872,7 +897,13 @@ struct cmd *getcmd(char *name) > + static void makeargv(void) > + { > + char *cp; > +- char **argp = margv; > ++ char **argp; > ++ > ++ if (!sizeof_margv) { > ++ sizeof_margv = 20; > ++ margv = xmalloc(sizeof_margv * sizeof(char *)); > ++ } > ++ argp = margv; > + > + margc = 0; > + for (cp = line; *cp;) { > +@@ -882,6 +913,11 @@ static void makeargv(void) > + break; > + *argp++ = cp; > + margc += 1; > ++ if (margc == sizeof_margv) { > ++ sizeof_margv += 20; > ++ margv = xrealloc(margv, sizeof_margv * sizeof(char *)); > ++ argp = margv + margc; > ++ } > + while (*cp != '\0' && !isspace(*cp)) > + cp++; > + if (*cp == '\0') > diff --git > a/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.39-tzfix.patch > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.39-tzfix.patch > new file mode 100644 > index 0000000..ded02ef > --- /dev/null > +++ b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.39-tzfix.patch > @@ -0,0 +1,18 @@ > +diff -up tftp-hpa-0.49/tftpd/tftpd.c.tzfix tftp-hpa-0.49/tftpd/tftpd.c > +--- tftp-hpa-0.49/tftpd/tftpd.c.tzfix 2008-10-20 18:08:31.000000000 > -0400 > ++++ tftp-hpa-0.49/tftpd/tftpd.c 2008-11-25 11:45:27.000000000 -0500 > +@@ -350,6 +350,14 @@ int main(int argc, char **argv) > + const char *pidfile = NULL; > + u_short tp_opcode; > + > ++ time_t my_time = 0; > ++ struct tm* p_tm; > ++ char envtz[10]; > ++ my_time = time(NULL); > ++ p_tm = localtime(&my_time); > ++ snprintf(envtz, sizeof(envtz) - 1, "UTC%+d", (p_tm->tm_gmtoff * > -1)/3600); > ++ setenv("TZ", envtz, 0); > ++ > + /* basename() is way too much of a pain from a portability standpoint */ > + > + p = strrchr(argv[0], '/'); > diff --git > a/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-fortify-strcpy-crash.patch > > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-fortify-strcpy-crash.patch > new file mode 100644 > index 0000000..e9b70d4 > --- /dev/null > +++ > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-fortify-strcpy-crash.patch > @@ -0,0 +1,26 @@ > +diff -urN tftp-hpa-0.49.orig/tftp/tftp.c tftp-hpa-0.49/tftp/tftp.c > +--- tftp-hpa-0.49.orig/tftp/tftp.c 2008-10-20 18:08:31.000000000 -0400 > ++++ tftp-hpa-0.49/tftp/tftp.c 2009-08-05 09:47:18.072585848 -0400 > +@@ -279,15 +279,16 @@ > + struct tftphdr *tp, const char *mode) > + { > + char *cp; > ++ size_t len; > + > + tp->th_opcode = htons((u_short) request); > + cp = (char *)&(tp->th_stuff); > +- strcpy(cp, name); > +- cp += strlen(name); > +- *cp++ = '\0'; > +- strcpy(cp, mode); > +- cp += strlen(mode); > +- *cp++ = '\0'; > ++ len = strlen(name) + 1; > ++ memcpy(cp, name, len); > ++ cp += len; > ++ len = strlen(mode) + 1; > ++ memcpy(cp, mode, len); > ++ cp += len; > + return (cp - (char *)tp); > + } > + > diff --git > a/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-stats.patch > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-stats.patch > new file mode 100644 > index 0000000..b6c9d05 > --- /dev/null > +++ b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-0.49-stats.patch > @@ -0,0 +1,14 @@ > +diff -up tftp-hpa-0.49/tftp/tftp.c.stats tftp-hpa-0.49/tftp/tftp.c > +--- tftp-hpa-0.49/tftp/tftp.c.stats 2011-01-03 15:38:34.217918067 +0100 > ++++ tftp-hpa-0.49/tftp/tftp.c 2011-01-03 15:38:37.498917014 +0100 > +@@ -400,8 +400,8 @@ static void printstats(const char *direc > + { > + double delta; > + > +- delta = (tstop.tv_sec + (tstop.tv_usec / 100000.0)) - > +- (tstart.tv_sec + (tstart.tv_usec / 100000.0)); > ++ delta = (tstop.tv_sec + (tstop.tv_usec / 1000000.0)) - > ++ (tstart.tv_sec + (tstart.tv_usec / 1000000.0)); > + if (verbose) { > + printf("%s %lu bytes in %.1f seconds", direction, amount, delta); > + printf(" [%.0f bit/s]", (amount * 8.) / delta); > diff --git > a/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-5.2-pktinfo.patch > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-5.2-pktinfo.patch > new file mode 100644 > index 0000000..d1fa75c > --- /dev/null > +++ > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-hpa-5.2-pktinfo.patch > @@ -0,0 +1,23 @@ > +diff -up tftp-hpa-5.2/tftpd/recvfrom.c.test tftp-hpa-5.2/tftpd/recvfrom.c > +--- tftp-hpa-5.2/tftpd/recvfrom.c.test 2011-12-11 23:13:52.000000000 > +0100 > ++++ tftp-hpa-5.2/tftpd/recvfrom.c 2012-01-04 10:05:17.852042256 +0100 > +@@ -149,16 +149,16 @@ myrecvfrom(int s, void *buf, int len, un > + > + /* Try to enable getting the return address */ > + #ifdef IP_RECVDSTADDR > +- if (from->sa_family == AF_INET) > ++ if (from->sa_family == AF_INET || !from->sa_family) > + setsockopt(s, IPPROTO_IP, IP_RECVDSTADDR, &on, sizeof(on)); > + #endif > + #ifdef IP_PKTINFO > +- if (from->sa_family == AF_INET) > ++ if (from->sa_family == AF_INET || !from->sa_family) > + setsockopt(s, IPPROTO_IP, IP_PKTINFO, &on, sizeof(on)); > + #endif > + #ifdef HAVE_IPV6 > + #ifdef IPV6_RECVPKTINFO > +- if (from->sa_family == AF_INET6) > ++ if (from->sa_family == AF_INET6 || !from->sa_family) > + setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on, sizeof(on)); > + #endif > + #endif > diff --git a/meta-networking/recipes-daemons/tftp-hpa/files/tftp-xinetd > b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-xinetd > new file mode 100644 > index 0000000..fe70163 > --- /dev/null > +++ b/meta-networking/recipes-daemons/tftp-hpa/files/tftp-xinetd > @@ -0,0 +1,18 @@ > +# default: off > +# description: The tftp server serves files using the trivial file transfer \ > +# protocol. The tftp protocol is often used to boot diskless \ > +# workstations, download configuration files to network-aware printers, \ > +# and to start the installation process for some operating systems. > +service tftp > +{ > + socket_type = dgram > + protocol = udp > + wait = yes > + user = root > + server = /usr/sbin/in.tftpd-hpa > + server_args = -s /var/lib/tftpboot > + disable = yes > + per_source = 11 > + cps = 100 2 > + flags = IPv6 > +} > diff --git a/meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb > b/meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb > new file mode 100644 > index 0000000..f09663d > --- /dev/null > +++ b/meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb > @@ -0,0 +1,66 @@ > +SUMMARY = "Client for the Trivial File Transfer Protocol" > +DESCRIPTION = \ > +"The Trivial File Transfer Protocol (TFTP) is normally used only for \ > +booting diskless workstations. The tftp package provides the user \ > +interface for TFTP, which allows users to transfer files to and from a \ > +remote machine. This program and TFTP provide very little security, \ > +and should not be enabled unless it is expressly needed." > +DEPENDS = "tcp-wrappers readline" > +SECTION = "network" > +LICENSE = "BSD-4-Clause" > +LIC_FILES_CHKSUM = > "file://MCONFIG.in;startline=1;endline=9;md5=c28ba5adb43041fae4629db05c83cbdd > \ > + > file://tftp/tftp.c;startline=1;endline=32;md5=988c1cba99d70858a26cd877209857f4" > + > +PR = "r0" > + > +SRC_URI = > "http://kernel.org/pub/software/network/tftp/tftp-hpa/tftp-hpa-${PV}.tar.bz2 \ > + file://tftp-0.40-remap.patch \ > + file://tftp-0.42-tftpboot.patch \ > + file://tftp-0.49-chk_retcodes.patch \ > + file://tftp-0.49-cmd_arg.patch \ > + file://tftp-hpa-0.39-tzfix.patch \ > + file://tftp-hpa-0.49-fortify-strcpy-crash.patch \ > + file://tftp-hpa-0.49-stats.patch \ > + file://tftp-hpa-5.2-pktinfo.patch \ > + file://default \ > + file://init" > + > +SRC_URI[md5sum] = "46c9bd20bbffa62f79c958c7b99aac21" > +SRC_URI[sha256sum] = > "0a9f88d4c1c02687b4853b02ab5dd8779d4de4ffdb9b2e5c9332841304d1a269" > + > +inherit autotools update-rc.d update-alternatives > + > +EXTRA_OECONF += "--disable-option-checking" > + > +# configure.in has errors > +do_configure() { > + oe_runconf > +} > + > +do_install() { > + oe_runmake install INSTALLROOT=${D} > + mv ${D}${bindir}/tftp ${D}${bindir}/tftp-hpa > + mv ${D}${sbindir}/in.tftpd ${D}${sbindir}/in.tftpd-hpa > + > + install -m 755 -d ${D}${localstatedir}/lib/tftpboot/ > + install -d ${D}${sysconfdir}/init.d > + install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/tftpd-hpa > + install -d ${D}${sysconfdir}/default > + install -m 0644 ${WORKDIR}/default ${D}${sysconfdir}/default/tftpd-hpa > +} > + > +FILES_${PN} = "${bindir}" > + > +PACKAGES += "tftp-hpa-server" > +SUMMARY_tftp-hpa-server = "Server for the Trivial File Transfer Protocol" > +FILES_tftp-hpa-server = "${sbindir} ${sysconfdir} ${localstatedir}" > +CONFFILES_tftp-hpa-server = "${sysconfdir}/default/tftpd-hpa" > + > +INITSCRIPT_PACKAGES = "tftp-hpa-server" > +INITSCRIPT_NAME = "tftpd-hpa" > +INITSCRIPT_PARAMS = "start 20 2 3 4 5 . stop 20 1 ." > + > +ALTERNATIVE_${PN} = "tftp" > +ALTERNATIVE_TARGET[tftp] = "${bindir}/tftp-hpa" > +ALTERNATIVE_PRIORITY = "50" > + -- -Joe MacDonald. :wq
signature.asc
Description: Digital signature
_______________________________________________ Openembedded-devel mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
