aboutsummaryrefslogtreecommitdiff
path: root/eperd/readresolv.c
diff options
context:
space:
mode:
Diffstat (limited to 'eperd/readresolv.c')
-rw-r--r--eperd/readresolv.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/eperd/readresolv.c b/eperd/readresolv.c
index cd43bd3..0f68a37 100644
--- a/eperd/readresolv.c
+++ b/eperd/readresolv.c
@@ -110,3 +110,42 @@ void get_local_resolvers(char nslist[MAXNS][INET6_ADDRSTRLEN * 2],
*resolv_max = i;
return;
}
+
+void get_local_resolvers_nocache(char nslist[MAXNS][INET6_ADDRSTRLEN * 2],
+ int *resolv_max)
+{
+
+#ifndef RESOLV_CONF
+#define RESOLV_CONF "/etc/resolv.conf"
+#endif
+ FILE *R;
+ char buf[LINEL];
+ char *buf_start;
+ int i = 0;
+ int r;
+ struct stat sb;
+
+ r = stat(RESOLV_CONF, &sb);
+ if (r == -1)
+ {
+ crondlog(LVL8 "error accessing resolv.conf: %s",
+ strerror(errno));
+ return;
+ }
+
+ R = fopen (RESOLV_CONF, "r");
+ if (R != NULL) {
+ while ( (fgets (buf, LINEL, R)) && (i < MAXNS)) {
+ buf_start = buf;
+ if(resolv_conf_parse_line(nslist[i], buf) ) {
+ crondlog(LVL5 "parsed file %s , line %s i=%d", RESOLV_CONF, buf_start, i);
+ i++;
+ }
+ else
+ crondlog(LVL5 "ERROR failed to parse from %s i=%d, line %s", RESOLV_CONF, i, buf_start);
+ }
+ fclose (R);
+ }
+
+ *resolv_max = i;
+}