Changeset 1359
- Timestamp:
- 05/16/09 17:33:21 (16 months ago)
- Location:
- trunk/pdns/pdns
- Files:
-
- 3 modified
-
dnsparser.cc (modified) (2 diffs)
-
dnsparser.hh (modified) (4 diffs)
-
dnswriter.hh (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/pdns/pdns/dnsparser.cc
r1353 r1359 221 221 dr.d_place=DNSRecord::Additional; 222 222 223 unsigned int recordStartPos=pr.d_pos; 224 223 225 string label=pr.getLabel(); 224 226 … … 233 235 dr.d_content=boost::shared_ptr<DNSRecordContent>(DNSRecordContent::mastermake(dr, pr)); 234 236 d_answers.push_back(make_pair(dr, pr.d_pos)); 237 238 if(dr.d_type == QType::TSIG && dr.d_class == 0xff) 239 d_tsigPos = recordStartPos + sizeof(struct dnsheader); 235 240 } 236 241 -
trunk/pdns/pdns/dnsparser.hh
r1232 r1359 201 201 } 202 202 203 static const string NumberToType(uint16_t num )204 { 205 if(!getNamemap().count(make_pair( 1,num)))203 static const string NumberToType(uint16_t num, uint16_t classnum=1) 204 { 205 if(!getNamemap().count(make_pair(classnum,num))) 206 206 return "#" + lexical_cast<string>(num); 207 207 // throw runtime_error("Unknown DNS type with numerical id "+lexical_cast<string>(num)); 208 return getNamemap()[make_pair( 1,num)];208 return getNamemap()[make_pair(classnum,num)]; 209 209 } 210 210 … … 267 267 268 268 //! This class can be used to parse incoming packets, and is copyable 269 class MOADNSParser 269 class MOADNSParser : public boost::noncopyable 270 270 { 271 271 public: 272 272 //! Parse from a string 273 MOADNSParser(const string& buffer) 273 MOADNSParser(const string& buffer) : d_tsigPos(0) 274 274 { 275 275 init(buffer.c_str(), (unsigned int)buffer.size()); … … 277 277 278 278 //! Parse from a pointer and length 279 MOADNSParser(const char *packet, unsigned int len) 279 MOADNSParser(const char *packet, unsigned int len) : d_tsigPos(0) 280 280 { 281 281 init(packet, len); … … 299 299 } 300 300 301 301 uint16_t getTSIGPos() 302 { 303 return d_tsigPos; 304 } 302 305 private: 303 306 void getDnsrecordheader(struct dnsrecordheader &ah); 304 307 void init(const char *packet, unsigned int len); 305 308 vector<uint8_t> d_content; 309 uint16_t d_tsigPos; 306 310 }; 307 311 -
trunk/pdns/pdns/dnswriter.hh
r1232 r1359 94 94 dnsheader* getHeader(); 95 95 void getRecords(string& records); 96 const vector<uint8_t>& getRecordBeingWritten() { return d_record; } 96 97 97 98 private: 98 vector <uint8_t>& d_content;99 vector <uint8_t>& d_content; 99 100 vector <uint8_t> d_record; 100 101 string d_qname;