2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-09-03 07:25:18 +00:00

[trac998] Renamed createNetmask to internal::createMask

This commit is contained in:
Stephen Morris
2011-06-22 16:54:50 +01:00
parent 0ddf0f5fa4
commit 8034dbfe87
2 changed files with 20 additions and 12 deletions

View File

@@ -36,7 +36,11 @@
namespace isc { namespace isc {
namespace acl { namespace acl {
// Free functions // Free functions. These are not supposed to be used outside this module,
// but are declared public for testing. To try to conceal them, they are
// put in an "internal" namespace.
namespace internal {
/// \brief Convert prefix length to mask /// \brief Convert prefix length to mask
/// ///
@@ -56,7 +60,7 @@ namespace acl {
/// \exception OutOfRange prefixlen is too large for the data type. /// \exception OutOfRange prefixlen is too large for the data type.
template <typename T> template <typename T>
T createNetmask(size_t prefixlen) { T createMask(size_t prefixlen) {
if (prefixlen == 0) { if (prefixlen == 0) {
return (0); return (0);
@@ -155,6 +159,8 @@ splitIPAddress(const std::string& prefix) {
return (std::make_pair(components[0], prefixlen)); return (std::make_pair(components[0], prefixlen));
} }
} // namespace internal
/// \brief IP Check /// \brief IP Check
@@ -277,7 +283,8 @@ public:
// General address prefix. Split into address part and prefix // General address prefix. Split into address part and prefix
// length. // length.
std::pair<std::string, int> result = splitIPAddress(addrprfx); std::pair<std::string, int> result =
internal::splitIPAddress(addrprfx);
// Try to convert the address. If successful, the result is in // Try to convert the address. If successful, the result is in
// network-byte order (most significant components at lower // network-byte order (most significant components at lower
@@ -505,7 +512,7 @@ private:
bits_left -= 8; bits_left -= 8;
} else if (bits_left > 0) { } else if (bits_left > 0) {
mask_.byte[++i] = createNetmask<uint8_t>(bits_left); mask_.byte[++i] = internal::createMask<uint8_t>(bits_left);
bits_left = 0; bits_left = 0;
} }

View File

@@ -18,6 +18,7 @@
#include <boost/scoped_ptr.hpp> #include <boost/scoped_ptr.hpp>
using namespace isc::acl; using namespace isc::acl;
using namespace isc::acl::internal;
using namespace std; using namespace std;
// Simple struct holding either an IPV4 or IPV6 address. This is the "Context" // Simple struct holding either an IPV4 or IPV6 address. This is the "Context"
@@ -94,30 +95,30 @@ bool IPCheck<GeneralAddress>::matches(const GeneralAddress& addr) const {
/// *** Free Function Tests *** /// *** Free Function Tests ***
// Test the createNetmask() function. // Test the createMask() function.
TEST(IPFunctionCheck, CreateNetmask) { TEST(IPFunctionCheck, CreateMask) {
// 8-bit tests: invalid arguments should throw. // 8-bit tests: invalid arguments should throw.
EXPECT_THROW(createNetmask<uint8_t>(9), isc::OutOfRange); EXPECT_THROW(createMask<uint8_t>(9), isc::OutOfRange);
// Check on all possible 8-bit values. Use a signed type to generate a // Check on all possible 8-bit values. Use a signed type to generate a
// variable with the most significant bits set (right-shifting will // variable with the most significant bits set (right-shifting will
// introduce additional bits). // introduce additional bits).
int8_t expected8 = 0x80; int8_t expected8 = 0x80;
for (size_t i = 1; i <= 8; ++i, expected8 >>= 1) { for (size_t i = 1; i <= 8; ++i, expected8 >>= 1) {
EXPECT_EQ(static_cast<uint8_t>(expected8), createNetmask<uint8_t>(i)); EXPECT_EQ(static_cast<uint8_t>(expected8), createMask<uint8_t>(i));
} }
EXPECT_EQ(0, createNetmask<uint8_t>(0)); EXPECT_EQ(0, createMask<uint8_t>(0));
// Do the same for 32 bits. // Do the same for 32 bits.
EXPECT_THROW(createNetmask<int32_t>(33), isc::OutOfRange); EXPECT_THROW(createMask<int32_t>(33), isc::OutOfRange);
int32_t expected32 = 0x80000000; int32_t expected32 = 0x80000000;
for (size_t i = 1; i <= 32; ++i, expected32 >>= 1) { for (size_t i = 1; i <= 32; ++i, expected32 >>= 1) {
EXPECT_EQ(static_cast<uint32_t>(expected32), EXPECT_EQ(static_cast<uint32_t>(expected32),
createNetmask<uint32_t>(i)); createMask<uint32_t>(i));
} }
EXPECT_EQ(0, createNetmask<uint32_t>(0)); EXPECT_EQ(0, createMask<uint32_t>(0));
} }
// Test the splitIPAddress() function. // Test the splitIPAddress() function.