]> git.ipfire.org Git - thirdparty/kea.git/commit
[#2658] add big integer support to statistics
authorAndrei Pavel <andrei@isc.org>
Wed, 26 Apr 2023 12:45:29 +0000 (15:45 +0300)
committerAndrei Pavel <andrei@isc.org>
Wed, 17 May 2023 16:09:38 +0000 (19:09 +0300)
commit4a06d2baf0dff1d21948bd9a39f100c94a159fe0
tree83c4bce0b946e63e204521806ad0341f747e5f46
parente79feea5f60d942466e1ad41d9c58504949f8cfa
[#2658] add big integer support to statistics

Pool capacities have been promoted in code from uint64_t to uint128_t.

Bigint is modelled as an int128_t in statistics, following the precedent of
signed integer of int64_t from statistics.

- "total-nas" is extended to 128 bits as requested in the issue.
- "total-pds" has the same risk of overflowing so it has been extended
  as well.
- "total-addresses" always fits in 64 bits, but certain code forces a
  128 bit value on it. See Pool::getCapacity(), Subnet::getPoolCapacity(),
  Subnet::sumPoolCapacity(). It could have been truncated to a 64 bit value,
  but that seems like an unnecessary complication.

Because of the disparity in signedness there is some truncation that can
happen when pool capacity values are passed on to statistics. That only happens
for the last half of the value range, so for prefix ranges larger than /1.
35 files changed:
src/bin/dhcp4/tests/fqdn_unittest.cc
src/hooks/dhcp/stat_cmds/stat_cmds.cc
src/lib/asiolink/addr_utilities.cc
src/lib/asiolink/addr_utilities.h
src/lib/asiolink/tests/addr_utilities_unittest.cc
src/lib/dhcpsrv/alloc_engine.cc
src/lib/dhcpsrv/alloc_engine.h
src/lib/dhcpsrv/base_host_data_source.h
src/lib/dhcpsrv/cfg_subnets4.cc
src/lib/dhcpsrv/cfg_subnets6.cc
src/lib/dhcpsrv/host_data_source_factory.cc
src/lib/dhcpsrv/host_data_source_factory.h
src/lib/dhcpsrv/lease_mgr.cc
src/lib/dhcpsrv/parsers/dhcp_parsers.cc
src/lib/dhcpsrv/parsers/duid_config_parser.cc
src/lib/dhcpsrv/parsers/multi_threading_config_parser.cc
src/lib/dhcpsrv/pool.h
src/lib/dhcpsrv/subnet.cc
src/lib/dhcpsrv/subnet.h
src/lib/dhcpsrv/tests/cfg_subnets6_unittest.cc
src/lib/dhcpsrv/tests/cfgmgr_unittest.cc
src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc
src/lib/dhcpsrv/tests/generic_lease_mgr_unittest.cc
src/lib/dhcpsrv/tests/generic_lease_mgr_unittest.h
src/lib/dhcpsrv/tests/memfile_lease_mgr_unittest.cc
src/lib/dhcpsrv/tests/mysql_lease_mgr_unittest.cc
src/lib/dhcpsrv/tests/pgsql_lease_mgr_unittest.cc
src/lib/dhcpsrv/tests/pool_unittest.cc
src/lib/dhcpsrv/tests/subnet_unittest.cc
src/lib/stats/observation.cc
src/lib/stats/observation.h
src/lib/stats/stats_mgr.cc
src/lib/stats/stats_mgr.h
src/lib/stats/tests/observation_unittest.cc
src/lib/stats/testutils/stats_test_utils.h