Hi, please don't use [dnsmasq]. use dnsmasq: instead. otherwise git am does not pick it up. i fixed this manually now so you dont need to send a v3
John On 01/04/2015 01:11, Stefan Tomanek wrote: > This patch backports the option --tftp-no-fail to dnsmasq and prevents the > service from aborting if the specified TFTP root directory is not available; > this might be the case if TFTP files are located on external media that might > occasionally not be present at startup. > > Signed-off-by: Stefan Tomanek <stefan.tomanek+open...@wertarbyte.de> > --- > .../network/services/dnsmasq/files/dnsmasq.init | 1 + > ...-tftp-no-fail-to-ignore-missing-tftp-root.patch | 193 > ++++++++++++++++++++ > 2 files changed, 194 insertions(+), 0 deletions(-) > create mode 100644 > package/network/services/dnsmasq/patches/120-add-tftp-no-fail-to-ignore-missing-tftp-root.patch > > diff --git a/package/network/services/dnsmasq/files/dnsmasq.init > b/package/network/services/dnsmasq/files/dnsmasq.init > index 2e7fb7b..9795d1a 100644 > --- a/package/network/services/dnsmasq/files/dnsmasq.init > +++ b/package/network/services/dnsmasq/files/dnsmasq.init > @@ -128,6 +128,7 @@ dnsmasq() { > append_bool "$cfg" boguspriv "--bogus-priv" > append_bool "$cfg" expandhosts "--expand-hosts" > append_bool "$cfg" enable_tftp "--enable-tftp" > + append_bool "$cfg" tftp_no_fail "--tftp-no-fail" > append_bool "$cfg" nonwildcard "--bind-interfaces" > append_bool "$cfg" fqdn "--dhcp-fqdn" > append_bool "$cfg" proxydnssec "--proxy-dnssec" > diff --git > a/package/network/services/dnsmasq/patches/120-add-tftp-no-fail-to-ignore-missing-tftp-root.patch > > b/package/network/services/dnsmasq/patches/120-add-tftp-no-fail-to-ignore-missing-tftp-root.patch > new file mode 100644 > index 0000000..c85e4e6 > --- /dev/null > +++ > b/package/network/services/dnsmasq/patches/120-add-tftp-no-fail-to-ignore-missing-tftp-root.patch > @@ -0,0 +1,193 @@ > +From 56920681eaf2c5eb08fc75baee4939d15d03b0ea Mon Sep 17 00:00:00 2001 > +From: Stefan Tomanek <stefan.tomanek+dnsm...@wertarbyte.de> > +Date: Tue, 31 Mar 2015 22:32:11 +0100 > +Subject: [PATCH] add --tftp-no-fail to ignore missing tftp root > + > +(cherry picked from commit 30d0879ed55cb67b1b735beab3d93f3bb3ef1dd2) > + > +Conflicts: > + CHANGELOG > + src/dnsmasq.c > + src/dnsmasq.h > + src/option.c > +--- > + dnsmasq.conf.example | 3 +++ > + man/dnsmasq.8 | 3 +++ > + src/dnsmasq.c | 42 +++++++++++++++++++++++++++++++----------- > + src/dnsmasq.h | 4 +++- > + src/option.c | 3 +++ > + 5 files changed, 43 insertions(+), 12 deletions(-) > + > +diff --git a/dnsmasq.conf.example b/dnsmasq.conf.example > +index 1bd305d..67be99a 100644 > +--- a/dnsmasq.conf.example > ++++ b/dnsmasq.conf.example > +@@ -486,6 +486,9 @@ > + # Set the root directory for files available via FTP. > + #tftp-root=/var/ftpd > + > ++# Do not abort if the tftp-root is unavailable > ++#tftp-no-fail > ++ > + # Make the TFTP server more secure: with this set, only files owned by > + # the user dnsmasq is running as will be send over the net. > + #tftp-secure > +diff --git a/man/dnsmasq.8 b/man/dnsmasq.8 > +index 0b8e04f..2ff4b96 100644 > +--- a/man/dnsmasq.8 > ++++ b/man/dnsmasq.8 > +@@ -1670,6 +1670,9 @@ Absolute paths (starting with /) are allowed, but they > must be within > + the tftp-root. If the optional interface argument is given, the > + directory is only used for TFTP requests via that interface. > + .TP > ++.B --tftp-no-fail > ++Do not abort startup if specified tftp root directories are inaccessible. > ++.TP > + .B --tftp-unique-root > + Add the IP address of the TFTP client as a path component on the end > + of the TFTP-root (in standard dotted-quad format). Only valid if a > +diff --git a/src/dnsmasq.c b/src/dnsmasq.c > +index 5c7750d..b6fa285 100644 > +--- a/src/dnsmasq.c > ++++ b/src/dnsmasq.c > +@@ -58,6 +58,9 @@ int main (int argc, char **argv) > + struct dhcp_context *context; > + struct dhcp_relay *relay; > + #endif > ++#ifdef HAVE_TFTP > ++ int tftp_prefix_missing = 0; > ++#endif > + > + #ifdef LOCALEDIR > + setlocale(LC_ALL, ""); > +@@ -623,7 +626,7 @@ int main (int argc, char **argv) > + #endif > + > + #ifdef HAVE_TFTP > +- if (option_bool(OPT_TFTP)) > ++ if (option_bool(OPT_TFTP)) > + { > + DIR *dir; > + struct tftp_prefix *p; > +@@ -632,24 +635,33 @@ int main (int argc, char **argv) > + { > + if (!((dir = opendir(daemon->tftp_prefix)))) > + { > +- send_event(err_pipe[1], EVENT_TFTP_ERR, errno, > daemon->tftp_prefix); > +- _exit(0); > ++ tftp_prefix_missing = 1; > ++ if (!option_bool(OPT_TFTP_NO_FAIL)) > ++ { > ++ send_event(err_pipe[1], EVENT_TFTP_ERR, errno, > daemon->tftp_prefix); > ++ _exit(0); > ++ } > + } > + closedir(dir); > + } > +- > ++ > + for (p = daemon->if_prefix; p; p = p->next) > + { > ++ p->missing = 0; > + if (!((dir = opendir(p->prefix)))) > +- { > +- send_event(err_pipe[1], EVENT_TFTP_ERR, errno, p->prefix); > +- _exit(0); > +- } > ++ { > ++ p->missing = 1; > ++ if (!option_bool(OPT_TFTP_NO_FAIL)) > ++ { > ++ send_event(err_pipe[1], EVENT_TFTP_ERR, errno, p->prefix); > ++ _exit(0); > ++ } > ++ } > + closedir(dir); > + } > + } > + #endif > +- > ++ > + if (daemon->port == 0) > + my_syslog(LOG_INFO, _("started, version %s DNS disabled"), VERSION); > + else if (daemon->cachesize != 0) > +@@ -743,8 +755,9 @@ int main (int argc, char **argv) > + #endif > + > + #ifdef HAVE_TFTP > +- if (option_bool(OPT_TFTP)) > +- { > ++ if (option_bool(OPT_TFTP)) > ++ { > ++ struct tftp_prefix *p; > + #ifdef FD_SETSIZE > + if (FD_SETSIZE < (unsigned)max_fd) > + max_fd = FD_SETSIZE; > +@@ -754,7 +767,14 @@ int main (int argc, char **argv) > + daemon->tftp_prefix ? _("root is ") : _("enabled"), > + daemon->tftp_prefix ? daemon->tftp_prefix: "", > + option_bool(OPT_TFTP_SECURE) ? _("secure mode") : ""); > ++ > ++ if (tftp_prefix_missing) > ++ my_syslog(MS_TFTP | LOG_WARNING, _("warning: %s inaccessible"), > daemon->tftp_prefix); > + > ++ for (p = daemon->if_prefix; p; p = p->next) > ++ if (p->missing) > ++ my_syslog(MS_TFTP | LOG_WARNING, _("warning: TFTP directory %s > inaccessible"), p->prefix); > ++ > + /* This is a guess, it assumes that for small limits, > + disjoint files might be served, but for large limits, > + a single file will be sent to may clients (the file only needs > +diff --git a/src/dnsmasq.h b/src/dnsmasq.h > +index 1dd61c5..086cb67 100644 > +--- a/src/dnsmasq.h > ++++ b/src/dnsmasq.h > +@@ -238,7 +238,8 @@ struct event_desc { > + #define OPT_DNSSEC_NO_SIGN 48 > + #define OPT_LOCAL_SERVICE 49 > + #define OPT_LOOP_DETECT 50 > +-#define OPT_LAST 51 > ++#define OPT_TFTP_NO_FAIL 51 > ++#define OPT_LAST 52 > + > + /* extra flags for my_syslog, we use a couple of facilities since they are > known > + not to occupy the same bits as priorities, no matter how syslog.h is set > up. */ > +@@ -888,6 +889,7 @@ struct addr_list { > + struct tftp_prefix { > + char *interface; > + char *prefix; > ++ int missing; > + struct tftp_prefix *next; > + }; > + > +diff --git a/src/option.c b/src/option.c > +index 209fa69..fa5e4d3 100644 > +--- a/src/option.c > ++++ b/src/option.c > +@@ -147,6 +147,7 @@ struct myoption { > + #define LOPT_LOCAL_SERVICE 335 > + #define LOPT_DNSSEC_TIME 336 > + #define LOPT_LOOP_DETECT 337 > ++#define LOPT_TFTP_NO_FAIL 338 > + > + #ifdef HAVE_GETOPT_LONG > + static const struct option opts[] = > +@@ -227,6 +228,7 @@ static const struct myoption opts[] = > + { "dhcp-ignore-names", 2, 0, LOPT_NO_NAMES }, > + { "enable-tftp", 2, 0, LOPT_TFTP }, > + { "tftp-secure", 0, 0, LOPT_SECURE }, > ++ { "tftp-no-fail", 0, 0, LOPT_TFTP_NO_FAIL }, > + { "tftp-unique-root", 0, 0, LOPT_APREF }, > + { "tftp-root", 1, 0, LOPT_PREFIX }, > + { "tftp-max", 1, 0, LOPT_TFTP_MAX }, > +@@ -402,6 +404,7 @@ static struct { > + { LOPT_PREFIX, ARG_DUP, "<dir>[,<iface>]", gettext_noop("Export files by > TFTP only from the specified subtree."), NULL }, > + { LOPT_APREF, OPT_TFTP_APREF, NULL, gettext_noop("Add client IP address > to tftp-root."), NULL }, > + { LOPT_SECURE, OPT_TFTP_SECURE, NULL, gettext_noop("Allow access only to > files owned by the user running dnsmasq."), NULL }, > ++ { LOPT_TFTP_NO_FAIL, OPT_TFTP_NO_FAIL, NULL, gettext_noop("Do not > terminate the service if TFTP directories are inaccessible."), NULL }, > + { LOPT_TFTP_MAX, ARG_ONE, "<integer>", gettext_noop("Maximum number of > conncurrent TFTP transfers (defaults to %s)."), "#" }, > + { LOPT_NOBLOCK, OPT_TFTP_NOBLOCK, NULL, gettext_noop("Disable the TFTP > blocksize extension."), NULL }, > + { LOPT_TFTP_LC, OPT_TFTP_LC, NULL, gettext_noop("Convert TFTP filenames > to lowercase"), NULL }, > +-- > +2.1.4 > + > _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel