diff options
author | Razvan Becheriu <razvan@isc.org> | 2023-05-26 17:19:25 +0200 |
---|---|---|
committer | Razvan Becheriu <razvan@isc.org> | 2023-05-26 17:41:25 +0200 |
commit | 7fd93cb0c02c7eea3fb83ba7f2073aadda1b9c4b (patch) | |
tree | bd6b09eeb9e12e0efc444ecef9cba0ff40ea9201 | |
parent | [#145] addressed review comments (diff) | |
download | kea-7fd93cb0c02c7eea3fb83ba7f2073aadda1b9c4b.tar.xz kea-7fd93cb0c02c7eea3fb83ba7f2073aadda1b9c4b.zip |
[#145] addressed review comments
-rw-r--r-- | ChangeLog | 26 | ||||
-rw-r--r-- | src/lib/dhcpsrv/mysql_host_data_source.cc | 60 | ||||
-rw-r--r-- | src/lib/dhcpsrv/pgsql_host_data_source.cc | 56 |
3 files changed, 98 insertions, 44 deletions
@@ -1,3 +1,29 @@ +2143. [func] razvan + Added v4 statistic counters per pool: + subnet[id].pool[id].assigned-addresses + subnet[id].pool[id].cumulative-assigned-addresses + subnet[id].pool[id].declined-addresses + subnet[id].pool[id].reclaimed-declined-addresses + subnet[id].pool[id].reclaimed-leases + subnet[id].pool[id].total-addresses + Added v6 statistic counters per pool: + subnet[id].pool[id].assigned-nas + subnet[id].pd-pool[id].assigned-pds + subnet[id].pool[id].cumulative-assigned-nas + subnet[id].pd-pool[id].cumulative-assigned-pds + subnet[id].pool[id].declined-addresses + subnet[id].pool[id].reclaimed-declined-addresses + subnet[id].pool[id].reclaimed-leases + subnet[id].pd-pool[id].reclaimed-leases + subnet[id].pool[id].total-nas + subnet[id].pd-pool[id].total-pds + Counters are stored in the lease storage and after schema + upgrade all existing leases are considered to be part of pool + ID 0. On lease update, the counters will be updated accordingly + including pool IDs and statistics will converge to real values + over time. + (Gitlab #145) + 2142. [func] piotrek New command option was added to perfdhcp: --or. It allows to insert extra option(s) to relayed DHCPv6 message diff --git a/src/lib/dhcpsrv/mysql_host_data_source.cc b/src/lib/dhcpsrv/mysql_host_data_source.cc index 26d1530cd3..5d7114d644 100644 --- a/src/lib/dhcpsrv/mysql_host_data_source.cc +++ b/src/lib/dhcpsrv/mysql_host_data_source.cc @@ -82,7 +82,26 @@ const uint8_t MAX_IDENTIFIER_TYPE = static_cast<uint8_t>(Host::LAST_IDENTIFIER_T /// of 0 to null before inserting a host to the database. class MySqlHostExchange { private: - + /// @brief Column numbers for each column in the hosts table. + /// These are used for both retrieving data and for looking up + /// column labels for logging. Note that their numeric order + /// MUST match that of the column order in the hosts table. + //@{ + static const size_t HOST_ID_COL = 0; + static const size_t DHCP_IDENTIFIER_COL = 1; + static const size_t DHCP_IDENTIFIER_TYPE_COL = 2; + static const size_t DHCP4_SUBNET_ID_COL = 3; + static const size_t DHCP6_SUBNET_ID_COL = 4; + static const size_t IPV4_ADDRESS_COL = 5; + static const size_t HOSTNAME_COL = 6; + static const size_t DHCP4_CLIENT_CLASSES_COL = 7; + static const size_t DHCP6_CLIENT_CLASSES_COL = 8; + static const size_t USER_CONTEXT_COL = 9; + static const size_t DHCP4_NEXT_SERVER_COL = 10; + static const size_t DHCP4_SERVER_HOSTNAME_COL = 11; + static const size_t DHCP4_BOOT_FILE_NAME_COL = 12; + static const size_t AUTH_KEY_COL = 13; + //@} /// @brief Number of columns returned for SELECT queries sent by this class. static const size_t HOST_COLUMNS = 14; @@ -132,20 +151,20 @@ public: // Set the column names for use by this class. This only comprises // names used by the MySqlHostExchange class. Derived classes will // need to set names for the columns they use. - columns_[0] = "host_id"; - columns_[1] = "dhcp_identifier"; - columns_[2] = "dhcp_identifier_type"; - columns_[3] = "dhcp4_subnet_id"; - columns_[4] = "dhcp6_subnet_id"; - columns_[5] = "ipv4_address"; - columns_[6] = "hostname"; - columns_[7] = "dhcp4_client_classes"; - columns_[8] = "dhcp6_client_classes"; - columns_[9] = "user_context"; - columns_[10] = "dhcp4_next_server"; - columns_[11] = "dhcp4_server_hostname"; - columns_[12] = "dhcp4_boot_file_name"; - columns_[13] = "auth_key"; + columns_[HOST_ID_COL] = "host_id"; + columns_[DHCP_IDENTIFIER_COL] = "dhcp_identifier"; + columns_[DHCP_IDENTIFIER_TYPE_COL] = "dhcp_identifier_type"; + columns_[DHCP4_SUBNET_ID_COL] = "dhcp4_subnet_id"; + columns_[DHCP6_SUBNET_ID_COL] = "dhcp6_subnet_id"; + columns_[IPV4_ADDRESS_COL] = "ipv4_address"; + columns_[HOSTNAME_COL] = "hostname"; + columns_[DHCP4_CLIENT_CLASSES_COL] = "dhcp4_client_classes"; + columns_[DHCP6_CLIENT_CLASSES_COL] = "dhcp6_client_classes"; + columns_[USER_CONTEXT_COL] = "user_context"; + columns_[DHCP4_NEXT_SERVER_COL] = "dhcp4_next_server"; + columns_[DHCP4_SERVER_HOSTNAME_COL] = "dhcp4_server_hostname"; + columns_[DHCP4_BOOT_FILE_NAME_COL] = "dhcp4_boot_file_name"; + columns_[AUTH_KEY_COL] = "auth_key"; BOOST_STATIC_ASSERT(13 < HOST_COLUMNS); }; @@ -1630,6 +1649,7 @@ public: columns_[2] = "prefix_len"; columns_[3] = "type"; columns_[4] = "dhcp6_iaid"; + BOOST_STATIC_ASSERT(4 < RESRV_COLUMNS); } @@ -1761,6 +1781,16 @@ private: class MySqlOptionExchange { private: + static const size_t OPTION_ID_COL = 0; + static const size_t CODE_COL = 1; + static const size_t VALUE_COL = 2; + static const size_t FORMATTED_VALUE_COL = 3; + static const size_t SPACE_COL = 4; + static const size_t PERSISTENT_COL = 5; + static const size_t CANCELLED_COL = 6; + static const size_t USER_CONTEXT_COL = 7; + static const size_t DHCP_SUBNET_ID_COL = 8; + static const size_t HOST_ID_COL = 9; /// @brief Number of columns in the option tables holding bindable values. static const size_t OPTION_COLUMNS = 10; diff --git a/src/lib/dhcpsrv/pgsql_host_data_source.cc b/src/lib/dhcpsrv/pgsql_host_data_source.cc index 7bf9988f1c..60b58beaa3 100644 --- a/src/lib/dhcpsrv/pgsql_host_data_source.cc +++ b/src/lib/dhcpsrv/pgsql_host_data_source.cc @@ -91,20 +91,20 @@ private: /// These are used for both retrieving data and for looking up /// column labels for logging. Note that their numeric order /// MUST match that of the column order in the hosts table. - static const int HOST_ID_COL = 0; - static const int DHCP_IDENTIFIER_COL = 1; - static const int DHCP_IDENTIFIER_TYPE_COL = 2; - static const int DHCP4_SUBNET_ID_COL = 3; - static const int DHCP6_SUBNET_ID_COL = 4; - static const int IPV4_ADDRESS_COL = 5; - static const int HOSTNAME_COL = 6; - static const int DHCP4_CLIENT_CLASSES_COL = 7; - static const int DHCP6_CLIENT_CLASSES_COL = 8; - static const int USER_CONTEXT_COL = 9; - static const int DHCP4_NEXT_SERVER_COL = 10; - static const int DHCP4_SERVER_HOSTNAME_COL = 11; - static const int DHCP4_BOOT_FILE_NAME_COL = 12; - static const int AUTH_KEY_COL = 13; + static const size_t HOST_ID_COL = 0; + static const size_t DHCP_IDENTIFIER_COL = 1; + static const size_t DHCP_IDENTIFIER_TYPE_COL = 2; + static const size_t DHCP4_SUBNET_ID_COL = 3; + static const size_t DHCP6_SUBNET_ID_COL = 4; + static const size_t IPV4_ADDRESS_COL = 5; + static const size_t HOSTNAME_COL = 6; + static const size_t DHCP4_CLIENT_CLASSES_COL = 7; + static const size_t DHCP6_CLIENT_CLASSES_COL = 8; + static const size_t USER_CONTEXT_COL = 9; + static const size_t DHCP4_NEXT_SERVER_COL = 10; + static const size_t DHCP4_SERVER_HOSTNAME_COL = 11; + static const size_t DHCP4_BOOT_FILE_NAME_COL = 12; + static const size_t AUTH_KEY_COL = 13; /// @brief Number of columns returned for SELECT queries sent by this class. static const size_t HOST_COLUMNS = 14; @@ -1095,6 +1095,7 @@ public: columns_[2] = "prefix_len"; columns_[3] = "type"; columns_[4] = "dhcp6_iaid"; + BOOST_STATIC_ASSERT(5 < RESRV_COLUMNS); } @@ -1168,20 +1169,18 @@ private: class PgSqlOptionExchange : public PgSqlExchange { private: - static const int OPTION_ID_COL = 0; - static const int CODE_COL = 1; - static const int VALUE_COL = 2; - static const int FORMATTED_VALUE_COL = 3; - static const int SPACE_COL = 4; - static const int PERSISTENT_COL = 5; - static const int CANCELLED_COL = 6; - static const int USER_CONTEXT_COL = 7; - static const int DHCP_CLIENT_CLASS_COL = 8; - static const int DHCP_SUBNET_ID_COL = 9; - static const int HOST_ID_COL = 10; - + static const size_t OPTION_ID_COL = 0; + static const size_t CODE_COL = 1; + static const size_t VALUE_COL = 2; + static const size_t FORMATTED_VALUE_COL = 3; + static const size_t SPACE_COL = 4; + static const size_t PERSISTENT_COL = 5; + static const size_t CANCELLED_COL = 6; + static const size_t USER_CONTEXT_COL = 7; + static const size_t DHCP_SUBNET_ID_COL = 8; + static const size_t HOST_ID_COL = 9; /// @brief Number of columns in the option tables holding bindable values. - static const size_t OPTION_COLUMNS = 11; + static const size_t OPTION_COLUMNS = 10; public: @@ -1197,11 +1196,10 @@ public: columns_[PERSISTENT_COL] = "persistent"; columns_[CANCELLED_COL] = "cancelled"; columns_[USER_CONTEXT_COL] = "user_context"; - columns_[DHCP_CLIENT_CLASS_COL] = "dhcp_client_class"; columns_[DHCP_SUBNET_ID_COL] = "dhcp_subnet_id"; columns_[HOST_ID_COL] = "host_id"; - BOOST_STATIC_ASSERT(11 <= OPTION_COLUMNS); + BOOST_STATIC_ASSERT(10 <= OPTION_COLUMNS); } /// @brief Creates binding array to insert option data into database. |