Commit b9fa6ce6 authored by JINMEI Tatuya's avatar JINMEI Tatuya

[2429] on second thought, define max rrttl as an object

parent 2aa24772
......@@ -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,
......
......@@ -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) {
......
......@@ -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:
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment