int main( int argc, char ** argv ) { char domain[ MYMAX ]; int len = 0; unsigned int res; int a, i, j, k, l, n, t; res_init(); len = res_query( argv[1], C_IN, T_MX, buff, MYMAX ); printf( "MX records for gmail.com len =%d\n", len ); a = ReadHeader(); if ( getAnswerRecordCount() > 0 ) { printf("\n;; Answer section:\n"); for ( i = 0; i < getAnswerRecordCount(); i++ ) { a = ReadRecord( a ); } } if ( getAuthRecordCount() > 0 ) { printf("\n;; Authority section:\n"); for ( i = 0; i < getAuthRecordCount(); i++ ) { a = ReadRecord( a ); } } if ( getAdditionalRecordCount() > 0 ) { printf("\n;; Additional section:\n"); for ( i = 0; i < getAdditionalRecordCount(); i++ ) { a = ReadRecord( a ); } } /* for( a=0; a < len; a++ ) { printf( "[ %d ] = %d, %c\n", a, buff[ a ], buff[ a ] ); } for( ; a < len; a++ ) { printf( "buff[ %d ] = %d, %c\n", a, buff[ a ], buff[ a ] ); } */ }
bool DnsLayer::removeAdditionalRecord(DnsResource* additionalRecordToRemove) { bool res = removeResource(additionalRecordToRemove); if (res) { // decrease number of additional records getDnsHeader()->numberOfAdditional = htons(getAdditionalRecordCount() - 1); } return res; }
DnsResource* DnsLayer::addAdditionalRecord(const std::string& name, DnsType dnsType, DnsClass dnsClass, uint32_t ttl, const std::string& data) { DnsResource* res = addResource(IDnsResource::DnsAdditional, name, dnsType, dnsClass, ttl, data); if (res != NULL) { // increase number of authority records getDnsHeader()->numberOfAdditional = htons(getAdditionalRecordCount() + 1); } return res; }
std::string DnsLayer::toString() { std::ostringstream tidAsString; tidAsString << ntohs(getDnsHeader()->transactionID); std::ostringstream queryCount; queryCount << getQueryCount(); std::ostringstream answerCount; answerCount << getAnswerCount(); std::ostringstream authorityCount; authorityCount << getAuthorityCount(); std::ostringstream additionalCount; additionalCount << getAdditionalRecordCount(); if (getAnswerCount() > 0) { return "DNS query response, ID: " + tidAsString.str() + ";" + " queries: " + queryCount.str() + ", answers: " + answerCount.str() + ", authorities: " + authorityCount.str() + ", additional record: " + additionalCount.str(); } else if (getQueryCount() > 0) { return "DNS query, ID: " + tidAsString.str() + ";" + " queries: " + queryCount.str() + ", answers: " + answerCount.str() + ", authorities: " + authorityCount.str() + ", additional record: " + additionalCount.str(); } else // not likely - a DNS with no answers and no queries { return "DNS record without queries and answers, ID: " + tidAsString.str() + ";" + " queries: " + queryCount.str() + ", answers: " + answerCount.str() + ", authorities: " + authorityCount.str() + ", additional record: " + additionalCount.str(); } }