]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2390] Add MX implementation
authorMukund Sivaraman <muks@isc.org>
Thu, 24 Jan 2013 05:54:27 +0000 (11:24 +0530)
committerMukund Sivaraman <muks@isc.org>
Tue, 29 Jan 2013 04:58:59 +0000 (10:28 +0530)
src/lib/dns/gen-rdatacode.py.in
src/lib/dns/rdata/generic/mx_15.cc
src/lib/dns/tests/rdata_mx_unittest.cc

index fc63d73a066135538fa8358827cfa743f05e84c5..86ef782c8d15aa592525d22d0cecb6eb702e134a 100755 (executable)
@@ -35,6 +35,7 @@ import sys
 new_rdata_factory_users = [('aaaa', 'in'),
                            ('hinfo', 'generic'),
                            ('naptr', 'generic'),
+                           ('mx', 'generic'),
                            ('soa', 'generic'),
                            ('spf', 'generic'),
                            ('txt', 'generic')
index b95ba059e0b575c3089b0d9597130bec64bb512a..48e4c26afc77bc6c35a91c5d0160a36ad28fea2e 100644 (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)
 {}
index 6c6039aa6096362e1d243b59c8794445d0ba6d58..7eba588d7d4bf326b7b28153dc1ace117db0372e 100644 (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) {