return (d_rrs.empty());
}
-static void shuffle(vector<DNSZoneRecord>& rrs)
-{
-}
-
/** Must be called before attempting to access getData(). This function stuffs all resource
* records found in rrs into the data buffer. It also frees resource records queued for us.
*/
}
// shuffle, maintaining some semblance of order
-void shuffle(vector<DNSResourceRecord>& rrs)
+void shuffle(vector<DNSZoneRecord>& rrs)
{
- vector<DNSResourceRecord>::iterator first, second;
+ vector<DNSZoneRecord>::iterator first, second;
for(first=rrs.begin();first!=rrs.end();++first)
- if(first->d_place==DNSResourceRecord::ANSWER && first->qtype.getCode() != QType::CNAME) // CNAME must come first
+ if(first->dr.d_place==DNSResourceRecord::ANSWER && first->dr.d_type != QType::CNAME) // CNAME must come first
break;
for(second=first;second!=rrs.end();++second)
- if(second->d_place!=DNSResourceRecord::ANSWER)
+ if(second->dr.d_place!=DNSResourceRecord::ANSWER)
break;
- if(second-first>1)
+ if(second-first > 1)
random_shuffle(first,second);
// now shuffle the additional records
for(first=second;first!=rrs.end();++first)
- if(first->d_place==DNSResourceRecord::ADDITIONAL && first->qtype.getCode() != QType::CNAME) // CNAME must come first
+ if(first->dr.d_place==DNSResourceRecord::ADDITIONAL && first->dr.d_type != QType::CNAME) // CNAME must come first
break;
for(second=first;second!=rrs.end();++second)
- if(second->d_place!=DNSResourceRecord::ADDITIONAL)
+ if(second->dr.d_place!=DNSResourceRecord::ADDITIONAL)
break;
if(second-first>1)
#include <boost/tuple/tuple_comparison.hpp>
#include <boost/multi_index/key_extractors.hpp>
#include <boost/multi_index/sequenced_index.hpp>
+
using namespace ::boost::multi_index;
#include "dns.hh"
string makeHexDump(const string& str);
void shuffle(vector<DNSRecord>& rrs);
-void shuffle(vector<DNSResourceRecord>& rrs);
+class DNSZoneRecord;
+void shuffle(vector<DNSZoneRecord>& rrs);
void orderAndShuffle(vector<DNSRecord>& rrs);
vector<uint8_t> packet;
DNSPacketWriter pw(packet, DNSName("www.google.com"), QType::A);
- shuffle(records);
+ // shuffle(records);
for(const auto& rec : records) {
pw.startRecord(rec.qname, rec.qtype.getCode(), rec.ttl, 1, rec.d_place);
auto drc = DNSRecordContent::mastermake(rec.qtype.getCode(), 1, rec.content);