X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=adns.git;a=blobdiff_plain;f=src%2Fsetup.c;h=a0828703f8f55ddcc95c374a9f1b1cfd15844b15;hp=e853ab797e36139b015a3f1bb628fd6a38fa3377;hb=138722f000939e5a176b27d498c76681bdf04860;hpb=b582ca0f999ffd51e26c5543d2023ea137af3bec diff --git a/src/setup.c b/src/setup.c index e853ab7..a082870 100644 --- a/src/setup.c +++ b/src/setup.c @@ -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); } }