From: Aki Tuomi Date: Wed, 18 Feb 2015 19:22:57 +0000 (+0200) Subject: Add getTKEYRecord X-Git-Tag: dnsdist-1.0.0-alpha1~248^2~98^2~44^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4429ed623b6ff1bd0dd39a7637f2deeeb63e8670;p=thirdparty%2Fpdns.git Add getTKEYRecord --- diff --git a/pdns/dnspacket.cc b/pdns/dnspacket.cc index 67b6c3f4bf..c6a8e5f200 100644 --- a/pdns/dnspacket.cc +++ b/pdns/dnspacket.cc @@ -478,6 +478,27 @@ bool DNSPacket::getTSIGDetails(TSIGRecordContent* trc, string* keyname, string* return true; } +bool DNSPacket::getTKEYRecord(TKEYRecordContent *tr, string *keyname) const +{ + MOADNSParser mdp(d_rawpacket); + bool gotit=false; + + for(MOADNSParser::answers_t::const_iterator i=mdp.d_answers.begin(); i!=mdp.d_answers.end(); ++i) { + if (gotit) { + L<first.d_type == QType::TKEY) { + *tr = *boost::dynamic_pointer_cast(i->first.d_content); + *keyname = i->first.d_label; + gotit=true; + } + } + + return gotit; +} + /** This function takes data from the network, possibly received with recvfrom, and parses it into our class. Results of calling this function multiple times on one packet are unknown. Returns -1 if the packet cannot be parsed. diff --git a/pdns/dnspacket.hh b/pdns/dnspacket.hh index 62405d880f..84574be3dd 100644 --- a/pdns/dnspacket.hh +++ b/pdns/dnspacket.hh @@ -148,7 +148,8 @@ public: bool getTSIGDetails(TSIGRecordContent* tr, string* keyname, string* message) const; void setTSIGDetails(const TSIGRecordContent& tr, const string& keyname, const string& secret, const string& previous, bool timersonly=false); - + bool getTKEYRecord(TKEYRecordContent* tr, string* keyname) const; + vector& getRRS() { return d_rrs; } TSIGRecordContent d_trc; static bool s_doEDNSSubnetProcessing;