Changeset 472

Show
Ignore:
Timestamp:
09/03/05 14:00:21 (8 years ago)
Author:
ahu
Message:

first stab at SPF support, which closes ticket #22
Please test!

Location:
trunk/pdns/pdns
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/pdns/pdns/dnspacket.cc

    r435 r472  
    781781} 
    782782 
    783  
    784  
    785783void DNSPacket::addTXTRecord(const DNSResourceRecord& rr) 
    786784{ 
    787   addTXTRecord(rr.qname, rr.content, rr.ttl); 
    788 } 
    789  
    790 void DNSPacket::addTXTRecord(string domain, string txt, u_int32_t ttl) 
     785  addTXTorSPFRecord(QType::TXT, rr.qname, rr.content, rr.ttl); 
     786} 
     787 
     788void DNSPacket::addSPFRecord(const DNSResourceRecord& rr) 
     789{ 
     790  addTXTorSPFRecord(QType::SPF, rr.qname, rr.content, rr.ttl); 
     791} 
     792 
     793 
     794void DNSPacket::addTXTorSPFRecord(uint16_t qtype, string domain, string txt, u_int32_t ttl) 
    791795{ 
    792796 string piece1; 
     
    794798 toqname(domain, &piece1); 
    795799 char p[10]; 
    796  makeHeader(p,QType::TXT,ttl); 
     800 makeHeader(p, qtype, ttl); 
    797801 string piece3; 
    798802 piece3.reserve(txt.length()+1); 
     
    10401044      break; 
    10411045 
    1042     case 16: // TXT 
     1046    case QType::TXT: // TXT 
     1047 
    10431048      addTXTRecord(rr); 
    10441049      break; 
     
    10631068    case QType::NAPTR: 
    10641069      addNAPTRRecord(rr); 
     1070      break; 
     1071 
     1072    case QType::SPF: // SPF 
     1073      addSPFRecord(rr); 
    10651074      break; 
    10661075 
  • trunk/pdns/pdns/dnspacket.hh

    r460 r472  
    195195  void addSOARecord(const DNSResourceRecord &); //!< add a SOA record to the packet 
    196196 
    197   void addTXTRecord(string domain, string, u_int32_t ttl); //!< add a TXT record to the packet 
     197  void addTXTorSPFRecord(uint16_t qtype, string domain, string, u_int32_t ttl); //!< add a TXT or SPF record to the packet 
     198 
    198199  void addTXTRecord(const DNSResourceRecord &); //!< add a TXT record to the packet 
     200  void addSPFRecord(const DNSResourceRecord &); //!< add a SPF record to the packet 
    199201 
    200202  void addHINFORecord(string domain, string, u_int32_t ttl); //!< add a HINFO record to the packet 
  • trunk/pdns/pdns/qtype.hh

    r320 r472  
    6060  static int chartocode(const char *p); //!< convert a character string to a code 
    6161   
    62   enum {A=1,NS=2,CNAME=5,SOA=6,PTR=12,HINFO=13,MX=15,TXT=16,RP=17,AAAA=28,LOC=29,SRV=33,NAPTR=35,AXFR=252, IXFR=254, ANY=255} types; 
     62  enum {A=1,NS=2,CNAME=5,SOA=6,PTR=12,HINFO=13,MX=15,TXT=16,RP=17,AAAA=28,LOC=29,SRV=33,NAPTR=35, SPF=99, AXFR=252, IXFR=254, ANY=255} types; 
    6363private: 
    6464  short int code;