From: JINMEI Tatuya Date: Tue, 18 Dec 2012 02:42:16 +0000 (-0800) Subject: [2429] on second thought, define max rrttl as an object X-Git-Tag: bind10-1.0.0-beta-release~16^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b9fa6ce6e6ba2d491096bc5c632e80c70a73614e;p=thirdparty%2Fkea.git [2429] on second thought, define max rrttl as an object --- diff --git a/src/lib/dns/master_loader.cc b/src/lib/dns/master_loader.cc index b9388e9192..5a11eefd8e 100644 --- a/src/lib/dns/master_loader.cc +++ b/src/lib/dns/master_loader.cc @@ -157,7 +157,7 @@ private: // RR and the lexer is positioned at the next line. It's just for // calculating the accurate source line when callback is necessary. void limitTTL(RRTTL& ttl, bool post_parsing) { - if (ttl.getValue() > RRTTL::MAX_TTL) { + if (ttl > RRTTL::MAX()) { const size_t src_line = lexer_.getSourceLine() - (post_parsing ? 1 : 0); callbacks_.warning(lexer_.getSourceName(), src_line, diff --git a/src/lib/dns/rrttl.cc b/src/lib/dns/rrttl.cc index 81d4159a57..d0ae5762ce 100644 --- a/src/lib/dns/rrttl.cc +++ b/src/lib/dns/rrttl.cc @@ -57,10 +57,6 @@ Unit units[] = { namespace isc { namespace dns { -// The actual definition of a static const member, in case it's address is -// needed. -const uint32_t RRTTL::MAX_TTL; - namespace { bool parseTTLStr(const string& ttlstr, uint32_t& ttlval, string* error_txt) { diff --git a/src/lib/dns/rrttl.h b/src/lib/dns/rrttl.h index 2371d8706a..c954e96a8d 100644 --- a/src/lib/dns/rrttl.h +++ b/src/lib/dns/rrttl.h @@ -271,11 +271,16 @@ public: /// \name Protocol constants /// //@{ - /// \brief Max allowable value for TTLs, as defined in RFC2181, Sec. 8. + /// \brief The TTL of the max allowable value, per RFC2181 Section 8. + /// + /// The max value is the largest unsigned 31 bit integer, 2^31-1. /// /// \note At the moment an RRTTL object can have a value larger than /// this limit. We may revisit it in a future version. - static const uint32_t MAX_TTL = 0x7fffffff; + static const RRTTL MAX() { + static const RRTTL max_ttl(0x7fffffff); + return (max_ttl); + } //@} private: diff --git a/src/lib/dns/tests/rrttl_unittest.cc b/src/lib/dns/tests/rrttl_unittest.cc index cd8f8a5c67..61d482a06b 100644 --- a/src/lib/dns/tests/rrttl_unittest.cc +++ b/src/lib/dns/tests/rrttl_unittest.cc @@ -273,6 +273,10 @@ TEST_F(RRTTLTest, gthan) { EXPECT_FALSE(ttl_small > ttl_large); } +TEST_F(RRTTLTest, maxTTL) { + EXPECT_EQ((1 << 31) - 1, RRTTL::MAX()::getValue()); +} + // test operator<<. We simply confirm it appends the result of toText(). TEST_F(RRTTLTest, LeftShiftOperator) { ostringstream oss;