diff --git a/CHANGELOG b/CHANGELOG
index d709adf..941b56f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -30,6 +30,10 @@
 	    Include an RFC4191 route information option in router 
 	    advertisements for the prefix we're advertising. Thanks to 
 	    Ilya Ponetaev for the patch.
+
+	    Extend --conf-dir to allow filtering of files. So
+	    --conf-dir=/etc/dnsmasq.d,\*.conf
+	    will load all the files in /etc/dnsmasq.d which end in .conf
  
 
 version 2.71
diff --git a/dnsmasq.conf.example b/dnsmasq.conf.example
index 206f4d1..83924fc 100644
--- a/dnsmasq.conf.example
+++ b/dnsmasq.conf.example
@@ -640,3 +640,9 @@
 # Include another lot of configuration options.
 #conf-file=/etc/dnsmasq.more.conf
 #conf-dir=/etc/dnsmasq.d
+
+# Include all the files in a directory except those ending in .bak
+#conf-dir=/etc/dnsmasq.d,.bak
+
+# Include all files in a directory which end in .conf
+#conf-dir=/etc/dnsmasq.d/*.conf
\ No newline at end of file
diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
index 7b4cc98..0b8e04f 100644
--- a/man/dnsmasq.8
+++ b/man/dnsmasq.8
@@ -1725,12 +1725,16 @@
 configuration files, to include multiple configuration files. A
 filename of "-" causes dnsmasq to read configuration from stdin.
 .TP
-.B \-7, --conf-dir=<directory>[,<file-extension>......]
+.B \-7, --conf-dir=<directory>[,<file-extension>......],
 Read all the files in the given directory as configuration
 files. If extension(s) are given, any files which end in those
 extensions are skipped. Any files whose names end in ~ or start with . or start and end
-with # are always skipped. This flag may be given on the command
-line or in a configuration file.
+with # are always skipped. If the extension starts with * then only files 
+which have that extension are loaded. So
+.B --conf-dir=/path/to/dir,*.conf
+loads all files with the suffix .conf in /path/to/dir. This flag may be given on the command
+line or in a configuration file. If giving it on the command line, be sure to
+escape * characters.
 .TP
 .B --servers-file=<file>
 A special case of 
diff --git a/src/option.c b/src/option.c
index 07e7d36..45d8875 100644
--- a/src/option.c
+++ b/src/option.c
@@ -1465,7 +1465,7 @@
 	struct list {
 	  char *suffix;
 	  struct list *next;
-	} *ignore_suffix = NULL, *li;
+	} *ignore_suffix = NULL, *match_suffix = NULL, *li;
 	
 	comma = split(arg);
 	if (!(directory = opt_string_alloc(arg)))
@@ -1475,10 +1475,20 @@
 	  {
 	    comma = split(arg);
 	    li = opt_malloc(sizeof(struct list));
-	    li->next = ignore_suffix;
-	    ignore_suffix = li;
-	    /* Have to copy: buffer is overwritten */
-	    li->suffix = opt_string_alloc(arg);
+	    if (*arg == '*')
+	      {
+		li->next = match_suffix;
+		match_suffix = li;
+		/* Have to copy: buffer is overwritten */
+		li->suffix = opt_string_alloc(arg+1);
+	      }
+	    else
+	      {
+		li->next = ignore_suffix;
+		ignore_suffix = li;
+		/* Have to copy: buffer is overwritten */
+		li->suffix = opt_string_alloc(arg);
+	      }
 	  };
 	
 	if (!(dir_stream = opendir(directory)))
@@ -1496,6 +1506,20 @@
 		ent->d_name[0] == '.')
 	      continue;
 
+	    if (match_suffix)
+	      {
+		for (li = match_suffix; li; li = li->next)
+		  {
+		    /* check for required suffices */
+		    size_t ls = strlen(li->suffix);
+		    if (len > ls &&
+			strcmp(li->suffix, &ent->d_name[len - ls]) == 0)
+		      break;
+		  }
+		if (!li)
+		  continue;
+	      }
+	    
 	    for (li = ignore_suffix; li; li = li->next)
 	      {
 		/* check for proscribed suffices */
