--- 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);