]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2429] on second thought, define max rrttl as an object
authorJINMEI Tatuya <jinmei@isc.org>
Tue, 18 Dec 2012 02:42:16 +0000 (18:42 -0800)
committerJINMEI Tatuya <jinmei@isc.org>
Tue, 18 Dec 2012 02:42:16 +0000 (18:42 -0800)
src/lib/dns/master_loader.cc
src/lib/dns/rrttl.cc
src/lib/dns/rrttl.h
src/lib/dns/tests/rrttl_unittest.cc

index b9388e91923e0e34c8d2da6939fdf3de2e9ee8d4..5a11eefd8e919eaa1f3b080de57a1154b6cf0a14 100644 (file)
@@ -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,
index 81d4159a570dd7694ecafb2462bca5b7a296c1c1..d0ae5762ce07c1ccaeba2277b496ce2f6d41333b 100644 (file)
@@ -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) {
index 2371d8706a9f4ff0d18dc7ae43c312664db8aefe..c954e96a8d9321a83a1c0e0ed8ccd1675b0515a9 100644 (file)
@@ -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:
index cd8f8a5c67fc4d4b6eb33c8f779da0fa5fa870c8..61d482a06b9fd69aa44d6170397cdf42ad91be26 100644 (file)
@@ -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;