// 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,
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) {
/// \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:
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;