Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > c83e50267511ecff72557ff0fe13ba7b > files > 9

bootparamd-0.17-26.el5_7.1.src.rpm

--- netkit-bootparamd-0.17-pre20000412/rpc.bootparamd/main.c.old	1999-03-27 08:38:15.000000000 +0100
+++ netkit-bootparamd-0.17-pre20000412/rpc.bootparamd/main.c	2004-12-06 11:14:13.285156296 +0100
@@ -24,6 +24,7 @@
 int debug = 0;
 int dolog = 0;
 struct in_addr route_addr;
+int   dns_lookup = 1; // Default DNS lookup is ON 
 char *bootpfile = "/etc/bootparams";
 
 static char *progname;
@@ -77,9 +78,12 @@
 	    setlogmask(LOG_UPTO(LOG_NOTICE));
 #endif
 	    break;
+         case 'l':
+            dns_lookup = 0; // Turn off DNS look-up
+            break;
 	 default:
 	    fprintf(stderr, 
-		    "Usage: %s [-d] [-s] [-r router] [-f bootparmsfile]\n", 
+		    "Usage: %s [-d] [-s] [-r router] [-f bootparmsfile] [-l]\n", 
 		    argv[0]);
 	    exit(1);
 	}
--- netkit-bootparamd-0.17-pre20000412/rpc.bootparamd/rpc.bootparamd.c.old	2004-12-06 10:37:55.000000000 +0100
+++ netkit-bootparamd-0.17-pre20000412/rpc.bootparamd/rpc.bootparamd.c	2004-12-06 11:10:30.741988000 +0100
@@ -14,6 +14,8 @@
   "$Id: rpc.bootparamd.c,v 1.9 1999/09/14 11:01:16 dholland Exp $";
 
 extern int debug, dolog;
+extern int dns_lookup; // Turn off/on DNS look-up
+
 extern struct in_addr route_addr;
 extern char *bootpfile;
 
@@ -179,6 +181,7 @@
     FILE *bpf;
     char *where;
     int pass;
+    int pass_num;
 
     int ch, pch, fid_len, res = 0;
     int match = 0;
@@ -190,15 +193,17 @@
 	exit(1);
     }
 
+    pass_num = dns_lookup ? 2 : 1;
+
     /* Two passes; avoid unnecessary DNS lookups during the first one.  */
-    for (pass = 0; pass < 2; pass++) {
+    for (pass = 0; pass < pass_num; pass++) {
 	 rewind (bpf);
 	 while (fscanf(bpf, "%s", hostname) >  0  && !match) {
 	      if ( *hostname != '#' ) { /* comment */
 		   if (!strcmp(hostname, askname)) {
 			match = 1;
 		   } 
-		   else if (pass > 0) {
+		   else if (dns_lookup && pass > 0) {
 			he = gethostbyname(hostname);
 			if (he && !strcmp(he->h_name, askname)) match = 1;
 		   }
@@ -260,33 +265,41 @@
     int ch, pch;
     FILE *bpf;
     int res = 0;
-    
+    int pass, pass_num;
+ 
     bpf = fopen(bootpfile, "r");
     if (!bpf) {
 	fprintf(stderr, "No %s\n", bootpfile);
 	exit(1);
     }
 
-    while (fscanf(bpf, "%s", hostname) > 0) {
-	if (!strcmp(hostname, askname)) {
-	    /* return true for match of hostname */
-	    res = 1;
-	    break;
-	} 
-	else {
-	    /* check the alias list */
-	    he = gethostbyname(hostname);
-	    if (he && !strcmp(askname, he->h_name)) {
-		res = 1;
-		break;
-	    }
-	}
-	/* skip to next entry */
-	pch = ch = getc(bpf); 
-	while (!(ch == '\n' && pch != '\\') && ch != EOF) {
-	    pch = ch; ch = getc(bpf);
-	}
+    pass_num = dns_lookup ? 2 : 1;
+
+    /* Two passes; avoid unnecessary DNS lookups during the first one.  */
+    for (pass = 0; pass < pass_num; pass++) {
+	rewind (bpf);
+        while (fscanf(bpf, "%s", hostname) > 0) {
+ 	   if (!strcmp(hostname, askname)) {
+	      /* return true for match of hostname */
+	      res = 1;
+	      break;
+	   } 
+  	   else if(dns_lookup && pass > 0) {
+ 	      /* check the alias list */
+	      he = gethostbyname(hostname);
+	      if (he && !strcmp(askname, he->h_name)) {
+	  	  res = 1;
+		  break;
+	      }
+	   }
+	   /* skip to next entry */
+	   pch = ch = getc(bpf); 
+	   while (!(ch == '\n' && pch != '\\') && ch != EOF) {
+	      pch = ch; ch = getc(bpf);
+	   }
+        }
     }
+
     if (fclose(bpf)) { fprintf(stderr,"Could not close %s\n", bootpfile); }
     return(res);
 }
--- netkit-bootparamd-0.17-pre20000412/rpc.bootparamd/bootparamd.8.old	2004-12-06 10:37:55.000000000 +0100
+++ netkit-bootparamd-0.17-pre20000412/rpc.bootparamd/bootparamd.8	2004-12-06 11:13:00.599206240 +0100
@@ -14,6 +14,7 @@
 .Op Fl s
 .Op Fl r Ar router
 .Op Fl f Ar file
+.Op Fl l
 .Sh DESCRIPTION
 .Nm bootparamd
 is a server process that provides information to diskless clients
@@ -39,6 +40,8 @@
 This defaults to the machine running the server.
 .It Fl f Ar file
 The file to use as boot parameter file instead of /etc/bootparams.
+.It Fl l
+Turn off DNS lookup during host search.
 .El
 .Sh FILES
 .Pa /etc/bootparams