--- netkit-bootparamd-0.17-pre20000412/rpc.bootparamd/rpc.bootparamd.c	2009-08-17 14:00:38.000000000 -0400
+++ netkit-bootparamd-0.17-pre20000412-real/rpc.bootparamd/rpc.bootparamd.c	2009-08-17 13:57:15.000000000 -0400
@@ -132,11 +132,16 @@
 	syslog(LOG_NOTICE,"getfile got question for \"%s\" and file \"%s\"\n",
 	       getfile->client_name, getfile->file_id);
     
-    he = gethostbyname(getfile->client_name);
-    if (!he) goto failed;
+    if (!strcmp(getfile->client_name, "*")) {
+        strncpy(askname, getfile->client_name, sizeof(askname));
+        askname[sizeof(askname)-1] = 0;
+    } else {
+        he = gethostbyname(getfile->client_name);
+	if (!he) goto failed;
     
-    strncpy(askname, he->h_name, sizeof(askname));
-    askname[sizeof(askname)-1] = 0;
+	strncpy(askname, he->h_name, sizeof(askname));
+	askname[sizeof(askname)-1] = 0;
+    }	
 
     if (getthefile(askname, getfile->file_id,buffer)) {
 	if ((where = strchr(buffer,':'))!=NULL) {
@@ -153,12 +158,12 @@
 	    res.server_address.address_type = IP_ADDR_TYPE;
 	}
 	else { /* special for dump, answer with null strings */
-	    if (!strcmp(getfile->file_id, "dump")) {
-		res.server_name[0] = '\0';
-		res.server_path[0] = '\0';	
-		bzero(&res.server_address.bp_address_u.ip_addr,4);
-	    } 
-	    else goto failed;
+	  if (!strcmp(getfile->file_id, "dump")) {
+	    res.server_name[0] = '\0';
+	    res.server_path[0] = '\0';	
+	    bzero(&res.server_address.bp_address_u.ip_addr,4);
+	  } 
+	  else goto failed;
 	}
 	if (debug) 
 	    fprintf(stderr, 
@@ -171,7 +176,7 @@
 		   res.server_name, res.server_path,
 		   my_ntoa(res.server_address.bp_address_u.ip_addr));
 	return(&res);
-    }
+      }
   failed:
     if (debug) fprintf(stderr, 
 		       "getfile failed for %s\n", getfile->client_name);
@@ -212,6 +217,10 @@
     for (pass = 0; pass < pass_num; pass++) {
 	 while (fscanf(bpf, "%s", hostname) >  0) {
 	      if ( *hostname != '#' ) { /* comment */
+		  if (!strcmp (hostname, "*")) { /* wildcard */
+			match = 1;
+                        break;
+		   } 
 		   if (!strcmp(hostname, askname)) {
 			match = 1;
                         break;
@@ -307,6 +316,11 @@
 	      res = 1;
 	      break;
 	   } 
+	   else if (!strcmp(hostname, "*")) {
+	      /* wildcard -- return true for match of hostname */
+	      res = 1;
+	      break;
+	   } 
   	   else if(dns_lookup && pass > 0) {
  	      /* check the alias list */
 	      he = gethostbyname(hostname);