コード例 #1
0
ファイル: dns.c プロジェクト: eariassoto/laboratoriosCI1321
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 ] );
   }
*/   

}
コード例 #2
0
ファイル: DnsLayer.cpp プロジェクト: kingjason/PcapPlusPlus
bool DnsLayer::removeAdditionalRecord(DnsResource* additionalRecordToRemove)
{
	bool res = removeResource(additionalRecordToRemove);
	if (res)
	{
		// decrease number of additional records
		getDnsHeader()->numberOfAdditional = htons(getAdditionalRecordCount() - 1);
	}

	return res;
}
コード例 #3
0
ファイル: DnsLayer.cpp プロジェクト: kingjason/PcapPlusPlus
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;
}
コード例 #4
0
ファイル: DnsLayer.cpp プロジェクト: kingjason/PcapPlusPlus
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();
	}
}