chiark / gitweb /
Support IPv6 in addr queries.
[adns.git] / src / setup.c
index e853ab797e36139b015a3f1bb628fd6a38fa3377..a0828703f8f55ddcc95c374a9f1b1cfd15844b15 100644 (file)
@@ -264,7 +264,7 @@ static void ccf_options(adns_state ads, const char *fn,
   const char *word;
   char *ep;
   unsigned long v;
-  int l;
+  int i,l;
 
   if (!buf) return;
 
@@ -298,6 +298,26 @@ static void ccf_options(adns_state ads, const char *fn,
       }
       continue;
     }
+    if (l>=8 && !memcmp(word,"adns_af:",8)) {
+      word += 8;
+      ads->iflags &= ~adns_if_afmask;
+      if (strcmp(word,"any")) for (;;) {
+       i= strcspn(word,",");
+       if (i>=4 && !memcmp(word,"ipv4",4))
+         ads->iflags |= adns_if_permit_ipv4;
+       else if (i>=4 && !memcmp(word,"ipv6",4))
+         ads->iflags |= adns_if_permit_ipv6;
+       else {
+         configparseerr(ads,fn,lno, "option adns_af has bad value `%.*s' "
+                        "(must be `any' or list {`ipv4',`ipv6'},...)",
+                        i, word);
+         break;
+       }
+       if (!word[i]) break;
+       word= word + i + 1;
+      }
+      continue;
+    }
     adns__diag(ads,-1,0,"%s:%d: unknown option `%.*s'", fn,lno, l,word);
   }
 }