LCOV - code coverage report
Current view: top level - resolve - resolve.cc (source / functions) Hit Total Coverage
Test: report.info Lines: 23 23 100.0 %
Date: 2012-05-15 Functions: 5 5 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 1 2 50.0 %

           Branch data     Line data    Source code
       1                 :            : // Copyright (C) 2011  Internet Systems Consortium, Inc. ("ISC")
       2                 :            : //
       3                 :            : // Permission to use, copy, modify, and/or distribute this software for any
       4                 :            : // purpose with or without fee is hereby granted, provided that the above
       5                 :            : // copyright notice and this permission notice appear in all copies.
       6                 :            : //
       7                 :            : // THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
       8                 :            : // REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
       9                 :            : // AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
      10                 :            : // INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
      11                 :            : // LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
      12                 :            : // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
      13                 :            : // PERFORMANCE OF THIS SOFTWARE.
      14                 :            : 
      15                 :            : #include <resolve/resolve.h>
      16                 :            : 
      17                 :            : #include <dns/message.h>
      18                 :            : #include <dns/opcode.h>
      19                 :            : 
      20                 :            : using namespace isc::dns;
      21                 :            : 
      22                 :            : namespace {
      23                 :            :     class SectionInserter {
      24                 :            :     public:
      25                 :            :         SectionInserter(MessagePtr message, const Message::Section sect) :
      26                 :            :             message_(message), section_(sect)
      27                 :            :         {}
      28                 :            :         void operator()(const RRsetPtr rrset) {
      29                 :            :             message_->addRRset(section_, rrset, true);
      30                 :            :         }
      31                 :            :         MessagePtr message_;
      32                 :            :         const Message::Section section_;
      33                 :            :     };
      34                 :            : }
      35                 :            : 
      36                 :            : namespace isc {
      37                 :            : namespace resolve {
      38                 :            : 
      39                 :            : void
      40                 :          7 : makeErrorMessage(MessagePtr answer_message,
      41                 :            :                  const Rcode& error_code)
      42                 :            : {
      43                 :          7 :     answer_message->clearSection(Message::SECTION_ANSWER);
      44                 :          7 :     answer_message->clearSection(Message::SECTION_AUTHORITY);
      45                 :          7 :     answer_message->clearSection(Message::SECTION_ADDITIONAL);
      46                 :            : 
      47                 :          7 :     answer_message->setRcode(error_code);
      48                 :          7 : }
      49                 :            : 
      50                 :          2 : void initResponseMessage(const isc::dns::Message& query_message,
      51                 :            :                          isc::dns::Message& response_message)
      52                 :            : {
      53                 :          2 :     response_message.setOpcode(query_message.getOpcode());
      54                 :          1 :     response_message.setQid(query_message.getQid());
      55         [ -  + ]:          1 :     assert(response_message.getRRCount(Message::SECTION_QUESTION) == 0);
      56                 :            :     response_message.appendSection(Message::SECTION_QUESTION,
      57                 :          1 :         query_message);
      58                 :          1 : }
      59                 :            : 
      60                 :         12 : void initResponseMessage(const isc::dns::Question& question,
      61                 :            :                          isc::dns::Message& response_message)
      62                 :            : {
      63                 :         12 :     response_message.setOpcode(isc::dns::Opcode::QUERY());
      64                 :         11 :     response_message.addQuestion(question);
      65                 :         11 : }
      66                 :            : 
      67                 :          3 : void copyResponseMessage(const Message& source, MessagePtr target) {
      68                 :          3 :     target->setRcode(source.getRcode());
      69                 :            : 
      70                 :          3 :     target->appendSection(Message::SECTION_ANSWER, source);
      71                 :          3 :     target->appendSection(Message::SECTION_AUTHORITY, source);
      72                 :          3 :     target->appendSection(Message::SECTION_ADDITIONAL, source);
      73                 :          3 : }
      74                 :            : 
      75                 :            : 
      76                 :            : } // namespace resolve
      77                 :          2 : } // namespace isc
      78                 :            : 

Generated by: LCOV version 1.9