5 #include "comboaddress.hh"
21 void xfrTxt(std::string& txt);
74 static std::unique_ptr<RRGen>
make(
const ComboAddress&);
75 static std::unique_ptr<RRGen>
make(
const std::string& s)
77 return make(ComboAddress(s));
80 std::string
toString()
const override;
82 ComboAddress
getIP()
const;
93 static std::unique_ptr<RRGen>
make(
const ComboAddress&);
94 static std::unique_ptr<RRGen>
make(
const std::string& s)
96 return make(ComboAddress(s));
99 std::string
toString()
const override;
102 ComboAddress
getIP()
const;
110 SOAGen(
const DNSName& mname,
const DNSName& rname, uint32_t serial, uint32_t refresh=10800, uint32_t retry=3600, uint32_t expire=604800, uint32_t minimum=3600) :
116 static std::unique_ptr<RRGen>
make(
const DNSName& mname,
const DNSName& rname, uint32_t serial, uint32_t refresh=10800, uint32_t retry=3600, uint32_t expire=604800, uint32_t minimum=3600)
118 return std::make_unique<SOAGen>(mname, rname, serial, refresh, retry, expire, minimum);
123 std::string
toString()
const override;
124 template<
typename X>
void doConv(X& x);
132 SRVGen(uint16_t preference, uint16_t weight, uint16_t port,
const DNSName& target) :
140 std::string
toString()
const override;
142 template<
typename X>
void doConv(X& x);
151 NAPTRGen(uint16_t order, uint16_t pref,
const std::string& flags,
152 const std::string& services,
const std::string& regexp,
161 std::string
toString()
const override;
162 template<
typename X>
void doConv(X& x);
177 return std::make_unique<CNAMEGen>(mname);
180 std::string
toString()
const override;
193 return std::make_unique<PTRGen>(mname);
196 std::string
toString()
const override;
208 return std::make_unique<NSGen>(mname);
211 std::string
toString()
const override;
222 static std::unique_ptr<RRGen>
make(uint16_t prio,
const DNSName& name)
224 return std::make_unique<MXGen>(prio, name);
227 std::string
toString()
const override;
237 uint32_t origttl, uint32_t expire, uint32_t inception, uint8_t algo, uint8_t labels) :
244 std::string
toString()
const override;
246 template<
typename X>
void doConv(X& x);
266 static std::unique_ptr<RRGen>
make(
const std::vector<std::string>& txts)
268 return std::make_unique<TXTGen>(txts);
271 std::string
toString()
const override;
283 std::string
toString()
const override;
291 static std::unique_ptr<RRGen>
make(
const std::string& format)
293 return std::make_unique<ClockTXTGen>(format);
void toMessage(DNSMessageWriter &dpw) override
This implements 'unknown record types'.
Definition: record-types.hh:277
std::string d_services
Definition: record-types.hh:165
std::string toString() const override
void toMessage(DNSMessageWriter &dpw) override
Definition: record-types.cc:336
std::string d_flags
Definition: record-types.hh:165
MXGen(uint16_t prio, const DNSName &name)
Definition: record-types.hh:219
DNSName d_name
Definition: record-types.hh:183
Generates a PTR Resource Record.
Definition: record-types.hh:187
DNSType d_type
Definition: record-types.hh:247
uint16_t d_tag
Definition: record-types.hh:248
uint32_t d_ip
the actual IP
Definition: record-types.hh:83
IP address, A record generator.
Definition: record-types.hh:69
uint16_t d_port
Definition: record-types.hh:144
This implements a fun dynamic TXT record type.
Definition: record-types.hh:288
CNAMEGen(const DNSName &name)
Definition: record-types.hh:173
void xfrType(DNSType &name)
Definition: record-types.cc:78
std::string toString() const override
Definition: record-types.cc:326
void doConv(X &x)
Definition: record-types.cc:241
AAAAGen(unsigned char ip[16])
Definition: record-types.hh:89
uint32_t d_minimum
Definition: record-types.hh:126
Generates a SOA Resource Record.
Definition: record-types.hh:108
DNSType d_type
Definition: record-types.hh:280
std::string toString() const override
DNSType getType() const override
Definition: record-types.hh:228
static std::unique_ptr< RRGen > make(const std::string &format)
Definition: record-types.hh:291
DNSType getType() const override
Definition: record-types.hh:272
void doConv(X &x)
Definition: record-types.cc:376
void toMessage(DNSMessageWriter &dpw) override
ComboAddress getIP() const
Definition: record-types.cc:184
DNSType getType() const override
Definition: record-types.hh:160
void toMessage(DNSMessageWriter &dpw) override
to packet/message
Definition: record-types.cc:137
DNSName d_name
Definition: record-types.hh:213
Defines DNSLabel, DNSType, DNSClass and DNSNode, which together store DNS details.
void xfrName(DNSName &name)
Definition: record-types.cc:65
Generates an AAAA (IPv6 address) record.
Definition: record-types.hh:86
std::string toString() const override
static std::unique_ptr< RRGen > make(const std::vector< std::string > &txts)
Definition: record-types.hh:266
DNSName d_replacement
Definition: record-types.hh:166
A class that parses a DNS Message.
Definition: dnsmessages.hh:13
Generates an TXT Resource Record.
Definition: record-types.hh:262
void toMessage(DNSMessageWriter &dpw) override
Definition: record-types.cc:283
DNSType getType() const override
Definition: record-types.hh:81
uint32_t d_refresh
Definition: record-types.hh:126
void skipSpaces()
Definition: record-types.cc:57
static std::unique_ptr< RRGen > make(const DNSName &mname)
Definition: record-types.hh:175
void toMessage(DNSMessageWriter &dpw) override
Definition: record-types.cc:320
DNSName d_mname
Definition: record-types.hh:125
static std::unique_ptr< RRGen > make(const std::string &s)
Definition: record-types.hh:75
Generates a SRV Resource Record.
Definition: record-types.hh:130
Generates an RRSIG Resource Record.
Definition: record-types.hh:234
uint16_t d_weight
Definition: record-types.hh:144
uint32_t d_expire
Definition: record-types.hh:251
void xfrUInt32(uint32_t &v)
Definition: record-types.cc:109
std::string d_regexp
Definition: record-types.hh:165
Generates a NAPTR Resource Record.
Definition: record-types.hh:149
TXTGen(const std::vector< std::string > &txts)
Definition: record-types.hh:264
Represents the contents of a resource record.
Definition: dns-storage.hh:180
DNSName d_name
Definition: record-types.hh:230
A DNS Message writer.
Definition: dnsmessages.hh:111
std::string toString() const override
Definition: record-types.hh:296
SOAGen(const DNSName &mname, const DNSName &rname, uint32_t serial, uint32_t refresh=10800, uint32_t retry=3600, uint32_t expire=604800, uint32_t minimum=3600)
Definition: record-types.hh:110
void xfrTxt(std::string &txt)
Definition: record-types.cc:118
PTRGen(const DNSName &name)
Definition: record-types.hh:189
Used by an RRGen to output record content to 'zone text' format.
Definition: record-types.cc:12
std::string toString() const override
to master zone format
Definition: record-types.cc:149
Class that reads a string in 'zonefile format' on behalf of an RRGen.
Definition: record-types.hh:11
std::string toString() const override
Definition: record-types.cc:258
void xfrUInt8(uint8_t &v)
Definition: record-types.cc:92
AGen(uint32_t ip)
Definition: record-types.hh:71
DNSName d_target
Definition: record-types.hh:145
uint32_t d_retry
Definition: record-types.hh:126
static std::unique_ptr< RRGen > make(const std::string &s)
Definition: record-types.hh:94
DNSType getType() const override
Definition: record-types.hh:297
Generates an MX Resource Record.
Definition: record-types.hh:217
void toMessage(DNSMessageWriter &dpw) override
Definition: record-types.cc:254
uint8_t d_labels
Definition: record-types.hh:252
Generates a CNAME Resource Record.
Definition: record-types.hh:171
void toMessage(DNSMessageWriter &dpw) override
Definition: record-types.cc:269
uint16_t d_preference
Definition: record-types.hh:144
static std::unique_ptr< RRGen > make(const DNSName &mname)
Definition: record-types.hh:191
DNSType getType() const override
Definition: record-types.hh:100
NAPTRGen(uint16_t order, uint16_t pref, const std::string &flags, const std::string &services, const std::string ®exp, const DNSName &replacement)
Definition: record-types.hh:151
DNSName d_rname
Definition: record-types.hh:125
static std::unique_ptr< RRGen > make(const DNSName &mname)
Definition: record-types.hh:206
void toMessage(DNSMessageWriter &dpw) override
uint16_t d_prio
Definition: record-types.hh:229
DNSType getType() const override
Definition: record-types.hh:139
uint16_t d_pref
Definition: record-types.hh:164
void doConv(X &x)
Definition: record-types.cc:232
std::string toString() const override
std::string toString() const override
Definition: record-types.cc:273
std::string d_format
Definition: record-types.hh:298
DNSType getType() const override
Definition: record-types.hh:284
static std::unique_ptr< RRGen > make(const DNSName &mname, const DNSName &rname, uint32_t serial, uint32_t refresh=10800, uint32_t retry=3600, uint32_t expire=604800, uint32_t minimum=3600)
Definition: record-types.hh:116
void doConv(X &x)
Definition: record-types.cc:221
A DNS Name with helpful methods. Inherits case insensitivity from DNSLabel.
Definition: dns-storage.hh:133
DNSType getType() const override
Definition: record-types.hh:197
static std::unique_ptr< RRGen > make(const ComboAddress &)
Definition: record-types.cc:154
uint16_t d_order
Definition: record-types.hh:164
void toMessage(DNSMessageWriter &dpw) override
static std::unique_ptr< RRGen > make(uint16_t prio, const DNSName &name)
Definition: record-types.hh:222
std::string toString() const override
Definition: record-types.cc:192
void xfrUInt16(uint16_t &v)
Definition: record-types.cc:101
AAAAGen(DNSMessageReader &dmr)
Definition: record-types.cc:172
void xfrSignature(DNSMessageReader &dr)
Definition: record-types.cc:386
std::string d_signature
Definition: record-types.hh:250
std::string toString() const override
Definition: record-types.cc:287
RRSIGGen(DNSType type, uint16_t tag, const DNSName &signer, const std::string &signature, uint32_t origttl, uint32_t expire, uint32_t inception, uint8_t algo, uint8_t labels)
Definition: record-types.hh:236
SRVGen(uint16_t preference, uint16_t weight, uint16_t port, const DNSName &target)
Definition: record-types.hh:132
DNSType getType() const override
Definition: record-types.hh:181
DNSType getType() const override
Definition: record-types.hh:122
uint32_t d_serial
Definition: record-types.hh:126
NSGen(const DNSName &name)
Definition: record-types.hh:204
std::vector< std::string > d_txts
Definition: record-types.hh:273
std::string::const_iterator d_iter
Definition: record-types.hh:23
std::string d_string
Definition: record-types.hh:22
static std::unique_ptr< RRGen > make(const ComboAddress &)
Definition: record-types.cc:161
std::string toString() const override
Definition: record-types.cc:304
uint32_t d_origttl
Definition: record-types.hh:251
DNSName d_name
Definition: record-types.hh:198
unsigned char d_ip[16]
Definition: record-types.hh:104
ClockTXTGen(const std::string &format)
Definition: record-types.hh:290
DNSType
Stores the type of a DNS query or resource record.
Definition: dns-storage.hh:73
uint32_t d_expire
Definition: record-types.hh:126
DNSName d_signer
Definition: record-types.hh:249
DNSStringReader(const std::string &str)
Definition: record-types.cc:54
Defines DNSMessageReader and DNSMessageWriter.
std::string d_rr
Definition: record-types.hh:281
std::string toString() const override
Definition: record-types.cc:341
void toMessage(DNSMessageWriter &dpw) override
Definition: record-types.cc:358
void toMessage(DNSMessageWriter &dpw) override
Definition: record-types.cc:299
DNSType getType() const override
Definition: record-types.hh:212
DNSType getType() const override
Definition: record-types.hh:245
UnknownGen(DNSType type, const std::string &rr)
Definition: record-types.hh:279
uint8_t d_algo
Definition: record-types.hh:252
void toMessage(DNSMessageWriter &dpw) override
Definition: record-types.cc:179
ComboAddress getIP() const
Get IP address in ready to use form.
Definition: record-types.cc:142
uint32_t d_inception
Definition: record-types.hh:251
Generates an NS Resource Record.
Definition: record-types.hh:202