2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-09-03 23:45:27 +00:00

[2390] Add MX implementation

This commit is contained in:
Mukund Sivaraman
2013-01-24 11:24:27 +05:30
parent 717d619224
commit adb9e821ff
3 changed files with 18 additions and 0 deletions

View File

@@ -35,6 +35,7 @@ import sys
new_rdata_factory_users = [('aaaa', 'in'),
('hinfo', 'generic'),
('naptr', 'generic'),
('mx', 'generic'),
('soa', 'generic'),
('spf', 'generic'),
('txt', 'generic')

View File

@@ -57,6 +57,19 @@ MX::MX(const std::string& mx_str) :
mxname_ = Name(mxname);
}
MX::MX(MasterLexer& lexer, const Name*, MasterLoader::Options,
MasterLoaderCallbacks&) :
preference_(0), mxname_(".")
{
uint32_t num = lexer.getNextToken(MasterToken::NUMBER).getNumber();
if (num > 65535) {
isc_throw(InvalidRdataText, "Invalid MX preference");
}
preference_ = static_cast<uint16_t>(num);
mxname_ = Name(lexer.getNextToken(MasterToken::QSTRING).getString());
}
MX::MX(uint16_t preference, const Name& mxname) :
preference_(preference), mxname_(mxname)
{}

View File

@@ -70,6 +70,10 @@ TEST_F(Rdata_MX_Test, createFromLexer) {
// Exceptions cause NULL to be returned.
EXPECT_FALSE(test::createRdataUsingLexer(RRType::MX(), RRClass::IN(),
"10 mx. example.com"));
// 65536 is larger than maximum possible preference
EXPECT_FALSE(test::createRdataUsingLexer(RRType::MX(), RRClass::IN(),
"65536 mx.example.com"));
}
TEST_F(Rdata_MX_Test, toWireRenderer) {