Changeset 1932

Show
Ignore:
Timestamp:
01/30/11 13:49:13 (2 years ago)
Author:
ahu
Message:

silence a lot of debugging output at loglevel 9 (you did not see it, but it did slow things down)
fix up pre-signed zones in hybrid installations (bind + generic). Because the BIND Backend needs the DBDnssecKeeper,
while the dbdnsseckeeper needs the bindbackend to function, getting presignatures from the dbdnsseckeeper failed.
We now pass an explicit database connection for this purpose. Spotted by Christof Meerwaald.

Location:
trunk/pdns/pdns
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • trunk/pdns/pdns/backends/bind/bindbackend2.cc

    r1906 r1932  
    849849  NSEC3PARAMRecordContent ns3pr; 
    850850  string auth=state->id_zone_map[id].d_name; 
    851    
    852    
     851     
    853852  if(!dk.getNSEC3PARAM(auth, &ns3pr)) { 
    854853    cerr<<"in bind2backend::getBeforeAndAfterAbsolute: no nsec3 for "<<auth<<endl; 
  • trunk/pdns/pdns/dbdnsseckeeper.cc

    r1912 r1932  
    323323} 
    324324 
    325 bool DNSSECKeeper::getPreRRSIGs(const std::string& signer, const std::string& qname, const QType& qtype,  
     325bool DNSSECKeeper::getPreRRSIGs(DNSBackend& db, const std::string& signer, const std::string& qname, const QType& qtype,  
    326326        DNSPacketWriter::Place signPlace, vector<DNSResourceRecord>& rrsigs) 
    327327{ 
    328         d_db.lookup(QType(QType::RRSIG), qname); 
     328  // cerr<<"Doing DB lookup for precomputed RRSIGs for '"<<qname<<"'"<<endl; 
     329        db.lookup(QType(QType::RRSIG), qname); 
    329330        DNSResourceRecord rr; 
    330         while(d_db.get(rr)) {  
    331                 cerr<<"Considering for '"<<qtype.getName()<<"' RRSIG '"<<rr.content<<"'\n"; 
     331        while(db.get(rr)) {  
     332                // cerr<<"Considering for '"<<qtype.getName()<<"' RRSIG '"<<rr.content<<"'\n"; 
    332333                if(boost::starts_with(rr.content, qtype.getName()+" ")) { 
    333                         cerr<<"Got it"<<endl; 
     334                        // cerr<<"Got it"<<endl; 
    334335                        rr.d_place = (DNSResourceRecord::Place)signPlace; 
    335336                        rrsigs.push_back(rr); 
    336337                } 
    337                 else cerr<<"Skipping!"<<endl; 
     338                else ; // cerr<<"Skipping!"<<endl; 
    338339        } 
    339340        return true; 
  • trunk/pdns/pdns/dnspacket.cc

    r1903 r1932  
    231231    return; 
    232232  } 
    233    
    234   // do embedded-additional processing decapsulation 
     233 
    235234  DNSResourceRecord rr; 
    236235  vector<DNSResourceRecord>::iterator pos; 
     
    240239 
    241240  stable_sort(d_rrs.begin(),d_rrs.end(), rrcomp); 
    242  
    243241  static bool mustShuffle =::arg().mustDo("no-shuffle"); 
    244242 
     
    290288          } 
    291289          goto noCommit; 
    292        
    293           break; 
    294290        } 
    295291      } 
  • trunk/pdns/pdns/dnssecinfra.hh

    r1915 r1932  
    101101void fillOutRRSIG(DNSSECPrivateKey& dpk, const std::string& signQName, RRSIGRecordContent& rrc, vector<shared_ptr<DNSRecordContent> >& toSign); 
    102102uint32_t getCurrentInception(); 
    103 void addSignature(DNSSECKeeper& dk, const std::string signQName, const std::string& wildcardname, uint16_t signQType, uint32_t signTTL, DNSPacketWriter::Place signPlace,  
     103void addSignature(DNSSECKeeper& dk, DNSBackend& db, const std::string signQName, const std::string& wildcardname, uint16_t signQType, uint32_t signTTL, DNSPacketWriter::Place signPlace,  
    104104  vector<shared_ptr<DNSRecordContent> >& toSign, vector<DNSResourceRecord>& outsigned); 
    105105int getRRSIGsForRRSET(DNSSECKeeper& dk, const std::string& signer, const std::string signQName, uint16_t signQType, uint32_t signTTL,  
     
    109109void decodeDERIntegerSequence(const std::string& input, vector<string>& output); 
    110110class DNSPacket; 
    111 void addRRSigs(DNSSECKeeper& dk, const std::string& signer, DNSPacket& p); 
     111void addRRSigs(DNSSECKeeper& dk, DNSBackend& db, const std::string& signer, DNSPacket& p); 
    112112 
    113113 
  • trunk/pdns/pdns/dnsseckeeper.hh

    r1904 r1932  
    4848  void unsetNSEC3PARAM(const std::string& zname); 
    4949  void clearCaches(const std::string& name); 
    50   bool getPreRRSIGs(const std::string& signer, const std::string& qname, const QType& qtype, DNSPacketWriter::Place, vector<DNSResourceRecord>& rrsigs); 
     50  bool getPreRRSIGs(DNSBackend& db, const std::string& signer, const std::string& qname, const QType& qtype, DNSPacketWriter::Place, vector<DNSResourceRecord>& rrsigs); 
    5151  bool isPresigned(const std::string& zname); 
    5252  void setPresigned(const std::string& zname); 
  • trunk/pdns/pdns/dnssecsigner.cc

    r1905 r1932  
    7474 
    7575// this is the entrypoint from DNSPacket 
    76 void addSignature(DNSSECKeeper& dk, const std::string& signer, const std::string signQName, const std::string& wildcardname, uint16_t signQType,  
     76void addSignature(DNSSECKeeper& dk, DNSBackend& db, const std::string& signer, const std::string signQName, const std::string& wildcardname, uint16_t signQType,  
    7777  uint32_t signTTL, DNSPacketWriter::Place signPlace,  
    7878  vector<shared_ptr<DNSRecordContent> >& toSign, vector<DNSResourceRecord>& outsigned) 
    7979{ 
    80   // cerr<<"Asked to sign '"<<signQName<<"'|"<<DNSRecordContent::NumberToType(signQType)<<", "<<toSign.size()<<" records\n"; 
     80  //cerr<<"Asked to sign '"<<signQName<<"'|"<<DNSRecordContent::NumberToType(signQType)<<", "<<toSign.size()<<" records\n"; 
    8181  if(toSign.empty()) 
    8282    return; 
    8383  vector<RRSIGRecordContent> rrcs; 
    8484  if(dk.isPresigned(signer)) { 
    85     dk.getPreRRSIGs(signer, signQName, QType(signQType), signPlace, outsigned); // does it all 
     85    //cerr<<"Doing presignatures"<<endl; 
     86    dk.getPreRRSIGs(db, signer, signQName, QType(signQType), signPlace, outsigned); // does it all 
    8687  } 
    8788  else { 
     
    140141} 
    141142 
    142 void addRRSigs(DNSSECKeeper& dk, const std::string& signer, DNSPacket& p) 
     143void addRRSigs(DNSSECKeeper& dk, DNSBackend& db, const std::string& signer, DNSPacket& p) 
    143144{ 
    144145  vector<DNSResourceRecord>& rrs=p.getRRS(); 
     
    158159    signedRecords.push_back(*pos); 
    159160    if(pos != rrs.begin() && (signQType != pos->qtype.getCode()  || signQName != pos->qname)) { 
    160       addSignature(dk, signer, signQName, wildcardQName, signQType, signTTL, signPlace, toSign, signedRecords); 
     161      addSignature(dk, db, signer, signQName, wildcardQName, signQType, signTTL, signPlace, toSign, signedRecords); 
    161162    } 
    162163    signQName= pos->qname; 
     
    180181    } 
    181182  } 
    182   addSignature(dk, signer, signQName, wildcardQName, signQType, signTTL, signPlace, toSign, signedRecords); 
    183    
     183  addSignature(dk, db, signer, signQName, wildcardQName, signQType, signTTL, signPlace, toSign, signedRecords); 
    184184  rrs.swap(signedRecords); 
    185185} 
  • trunk/pdns/pdns/packethandler.cc

    r1930 r1932  
    3939#include "dnsproxy.hh" 
    4040 
    41 #if 1 
     41#if 0 
    4242#undef DLOG 
    4343#define DLOG(x) x 
     
    474474  rr.d_place = (mode == 2 ) ? DNSResourceRecord::ANSWER: DNSResourceRecord::AUTHORITY; 
    475475  rr.auth = true; 
     476   
    476477  r->addRecord(rr); 
    477478} 
     
    13561357 
    13571358    if(p->d_dnssecOk) 
    1358       addRRSigs(d_dk, sd.qname, *r); 
     1359      addRRSigs(d_dk, B, sd.qname, *r); 
    13591360    r->wrapup(); // needed for inserting in cache 
    13601361    PC.insert(p, r); // in the packet cache 
  • trunk/pdns/pdns/tcpreceiver.cc

    r1893 r1932  
    515515  outpacket->d_dnssecOk=true; // WRONG 
    516516  string keyname; 
     517  UeberBackend signatureDB; 
    517518  while(B->get(rr)) { 
    518519    if(rr.auth || rr.qtype.getCode() == QType::NS || rr.qtype.getCode() == QType::DS) { 
     
    533534    if(!((++count)%chunk)) { 
    534535      count=0; 
    535       addRRSigs(dk, sd.qname, *outpacket); 
     536      addRRSigs(dk, signatureDB, sd.qname, *outpacket); 
    536537      sendPacket(outpacket, outsock); 
    537538 
     
    595596   
    596597  if(count) { 
    597     addRRSigs(dk, sd.qname, *outpacket); 
     598    addRRSigs(dk, signatureDB, sd.qname, *outpacket); 
    598599    sendPacket(outpacket, outsock); 
    599600  } 
     
    603604  outpacket=shared_ptr<DNSPacket>(q->replyPacket()); 
    604605   
    605   addRRSigs(dk, sd.qname, *outpacket); // don't sign the SOA! 
     606  addRRSigs(dk, signatureDB, sd.qname, *outpacket); // don't sign the SOA! 
    606607  outpacket->addRecord(soa); 
    607608  sendPacket(outpacket, outsock); 
  • trunk/pdns/pdns/ueberbackend.hh

    r1796 r1932  
    11/* 
    22    PowerDNS Versatile Database Driven Nameserver 
    3     Copyright (C) 2002 PowerDNS.COM BV 
     3    Copyright (C) 2002 - 2011 PowerDNS.COM BV 
    44 
    55    This program is free software; you can redistribute it and/or modify