[Dnsmasq-discuss] Inotify code & older linux

Simon Kelley simon at thekelleys.org.uk
Fri Jan 23 14:07:36 GMT 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Yes, that's fine. It'll be a couple of days before I have time to do
the work.


Cheers,

Simon.

On 22/01/15 09:09, Kevin Darbyshire-Bryant wrote:
> Hi Simon
> 
> I'm wondering if you'd consider putting the new 'inotify' related
> code as a compile time option please.  Unfortunately there are a
> few router based projects that rely on old kernels without inotify
> support.  I've included a patch that I've hopefully generated &
> coded correctly that wraps the inotify related code into
> 'HAVE_INOTIFY' blocks.  It probably requires some sanity checking
> on my behalf.  Thanks for your time.
> 
> Kevin
> 
> diff --git a/src/config.h b/src/config.h index aa0c21f..831c537
> 100644 --- a/src/config.h +++ b/src/config.h @@ -119,6 +119,8 @@
> HAVE_DNSSEC HAVE_LOOP include functionality to probe for and remove
> DNS forwarding loops.
> 
> +HAVE_INOTIFY +   use inotify instead of polling on linux
> 
> NO_IPV6 NO_TFTP @@ -161,6 +163,7 @@ RESOLVFILE #define HAVE_AUTH 
> #define HAVE_IPSET #define HAVE_LOOP +#define HAVE_INOTIFY
> 
> /* Build options which require external libraries.
> 
> @@ -363,6 +366,10 @@ HAVE_SOCKADDR_SA_LEN #define
> HAVE_LEASEFILE_EXPIRE #endif
> 
> +#if defined(NO_INOTIFY) || !defined(HAVE_LINUX_NETWORK) +#undef
> HAVE_INOTIFY +#endif + /* Define a string indicating which options
> are in use. DNSMASQP_COMPILE_OPTS is only defined in dnsmasq.c */
> 
> diff --git a/src/dnsmasq.c b/src/dnsmasq.c index 127ef8d..73e3139
> 100644 --- a/src/dnsmasq.c +++ b/src/dnsmasq.c @@ -359,7 +359,7 @@
> int main (int argc, char **argv) #endif }
> 
> -#ifdef HAVE_LINUX_NETWORK +#ifdef HAVE_INOTIFY if
> ((!option_bool(OPT_NO_POLL) && daemon->port != 0) || daemon->dhcp
> || daemon->doing_dhcp6) inotify_dnsmasq_init(); @@ -909,11 +909,13
> @@ int main (int argc, char **argv) #if
> defined(HAVE_LINUX_NETWORK) FD_SET(daemon->netlinkfd, &rset); 
> bump_maxfd(daemon->netlinkfd, &maxfd); +#ifdef HAVE_INOTIFY if
> (daemon->inotifyfd != -1) { FD_SET(daemon->inotifyfd, &rset); 
> bump_maxfd(daemon->inotifyfd, &maxfd); } +#endif #elif
> defined(HAVE_BSD_NETWORK) FD_SET(daemon->routefd, &rset); 
> bump_maxfd(daemon->routefd, &maxfd); @@ -981,8 +983,8 @@ int main
> (int argc, char **argv) route_sock(); #endif
> 
> -#ifdef HAVE_LINUX_NETWORK -      if  (daemon->inotifyfd != -1 &&
> FD_ISSET(daemon->inotifyfd, &rset) && inotify_check(now)) +#ifdef
> HAVE_INOTIFY +  if  (daemon->inotifyfd != -1 &&
> FD_ISSET(daemon->inotifyfd, &rset) && inotify_check(now)) { if
> (daemon->port != 0 && !option_bool(OPT_NO_POLL)) poll_resolv(1, 1,
> now); @@ -1003,6 +1005,7 @@ int main (int argc, char **argv)
> 
> if (FD_ISSET(piperead, &rset)) async_event(piperead, now); +#endif
> 
> #ifdef HAVE_DBUS /* if we didn't create a DBus connection, retry
> now. */ @@ -1446,7 +1449,7 @@ void clear_cache_and_reload(time_t
> now) if (option_bool(OPT_ETHERS)) dhcp_read_ethers(); 
> reread_dhcp(); -#ifdef HAVE_LINUX_NETWORK +#ifdef HAVE_INOTIFY 
> set_dhcp_inotify(); #endif dhcp_update_configs(daemon->dhcp_conf); 
> diff --git a/src/dnsmasq.h b/src/dnsmasq.h index bbda8ff..2755fc5
> 100644 --- a/src/dnsmasq.h +++ b/src/dnsmasq.h @@ -554,7 +554,7 @@
> struct hostsfile { struct hostsfile *next; int flags; char *fname; 
> -#ifdef HAVE_LINUX_NETWORK +#ifdef HAVE_INOTIFY int wd; /* inotify
> watch descriptor */ #endif unsigned int index; /* matches to cache
> entries for logging */ @@ -1011,6 +1011,9 @@ extern struct daemon
> { int dhcpfd, helperfd, pxefd; #if defined(HAVE_LINUX_NETWORK) int
> netlinkfd; +#if defined(HAVE_INOTIFY) +  int inotifyfd; +#endif 
> #elif defined(HAVE_BSD_NETWORK) int dhcp_raw_fd, dhcp_icmp_fd,
> routefd; #endif @@ -1492,7 +1495,7 @@ int detect_loop(char *query,
> int type); #endif
> 
> /* inotify.c */ -#ifdef HAVE_LINUX_NETWORK +#ifdef HAVE_INOTIFY 
> void inotify_dnsmasq_init(); int inotify_check(time_t now); #
> ifdef HAVE_DHCP diff --git a/src/inotify.c b/src/inotify.c index
> 52a30d7..818fe8e 100644 --- a/src/inotify.cEnigmail +++
> b/src/inotify.c @@ -15,7 +15,7 @@ */
> 
> #include "dnsmasq.h" -#ifdef HAVE_LINUX_NETWORK +#ifdef
> HAVE_INOTIFY
> 
> #include <sys/inotify.h>
> 
> @@ -216,5 +216,5 @@ static void check_for_dhcp_inotify(struct 
> inotify_event *in, time_t now)
> 
> #endif /* DHCP */
> 
> -#endif  /* LINUX_NETWORK */ +#endif  /* INOTIFY */
> 
> 
> 
> 
> 
> 
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEARECAAYFAlTCVagACgkQKPyGmiibgrcIKACbBvGdjK9gkVpkyt1rHcZma69i
ec0AnRkO6/xU22w6W8G10kN3CRfaVZFL
=SsCT
-----END PGP SIGNATURE-----



More information about the Dnsmasq-discuss mailing list