From: Aki Tuomi Date: Tue, 9 Jul 2013 09:23:53 +0000 (+0300) Subject: Support for multiple subnet options X-Git-Tag: rec-3.6.0-rc1~578^2~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e7e080be197fb4d060e6ed1d858ce5aa608a1113;p=pdns Support for multiple subnet options --- diff --git a/pdns/dnspacket.cc b/pdns/dnspacket.cc index e75bdaede..62e73e145 100644 --- a/pdns/dnspacket.cc +++ b/pdns/dnspacket.cc @@ -331,7 +331,9 @@ void DNSPacket::wrapup() eso.scope = Netmask(eso.source.getNetwork(), maxScopeMask); string opt = makeEDNSSubnetOptsString(eso); - opts.push_back(make_pair(::arg().asNum("edns-subnet-option-number"), opt)); + if (::arg().mustDo("edns-subnet-option-number") && ::arg().asNum("edns-subnet-option-number") != 8) + opts.push_back(make_pair(::arg().asNum("edns-subnet-option-number"), opt)); + opts.push_back(make_pair(8, opt)); // 'EDNS SUBNET' } if(!opts.empty() || d_haveednssection || d_dnssecOk) @@ -514,7 +516,7 @@ try else if(iter->first == 5) {// 'EDNS PING' d_ednsping = iter->second; } - else if(s_doEDNSSubnetProcessing && iter->first == ::arg().asNum("edns-subnet-option-number")) { // 'EDNS SUBNET' + else if(s_doEDNSSubnetProcessing && (iter->first == 8 || iter->first == ::arg().asNum("edns-subnet-option-number"))) { // 'EDNS SUBNET' if(getEDNSSubnetOptsFromString(iter->second, &d_eso)) { //cerr<<"Parsed, source: "<