From 617213ea265a79bbe8c20ee760d8b3bcab0ac016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zsombor=20Bodn=C3=A1r?= <zsombor.bodnar@kszk.bme.hu> Date: Fri, 3 Sep 2021 22:08:35 +0200 Subject: [PATCH] SM-19 --- sql/prepared_statements.sql | 23 ++++++ src/callouts.cc | 149 ++++++++++++++++++++---------------- src/framework_functions.cc | 113 ++++++++++++++------------- src/globals.h | 7 +- src/logger.cc | 2 +- src/logger.h | 8 +- src/messages.cc | 46 +++++------ src/messages.h | 24 +++--- src/messages.mes | 22 +++--- 9 files changed, 221 insertions(+), 173 deletions(-) create mode 100644 sql/prepared_statements.sql diff --git a/sql/prepared_statements.sql b/sql/prepared_statements.sql new file mode 100644 index 0000000..caec01e --- /dev/null +++ b/sql/prepared_statements.sql @@ -0,0 +1,23 @@ +-- ip_conflict +select ip_conflict::int from mueb where mac_address = :mac; + +-- mueb_in_room +select room_id from port p join room r using(room_id) where p.port_id = :port_id and p.switch_id = :switch_id; + +-- mueb_count_in_room +select count(*) from port p join mueb m using(port_id, switch_id) where m.mac_address != :mac_address and p.room_id = :room_id; + +-- ip_override +select ip_override from mueb where mac_address = :mac and ip_override is not null; + +-- ip_address +select ip_address from port p join room r using(room_id) where p.port_id = :port_id and p.switch_id = :switch_id; + +-- clear_port +update mueb set port_id = null, switch_id = null where port_id = :port_id and switch_id = :switch_id; + +-- insert_mueb +insert into mueb (mac_address) values (:mac_address) on conflict (mac_address) do update set port_id = :port_id, switch_id = :switch_id where mueb.mac_address = :mac_address; + +-- set ip conflict +update mueb m set ip_conflict = true where m.mac_address = :mac_address; \ No newline at end of file diff --git a/src/callouts.cc b/src/callouts.cc index fc7d6c9..41beafd 100644 --- a/src/callouts.cc +++ b/src/callouts.cc @@ -7,7 +7,6 @@ #include <pgsql/pgsql_connection.h> #include <algorithm> -#include <cstdlib> #include <string> #include <tuple> @@ -15,65 +14,77 @@ #include "logger.h" static std::tuple<int, std::string, std::string, std::string> parseOption82( - const isc::dhcp::Pkt4Ptr &query4_ptr) { + const isc::dhcp::Pkt4Ptr& query4_ptr) { /* Get switch hostname and port name from DHCP option 82 + * Also check if option 82 is valid * https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst4500/12-2/15-02SG/configuration/guide/config/dhcp.html#57094 */ - auto option82{query4_ptr->getOption(82)}; - if (!option82) { - LOG_FATAL(schmatrix_logger, SCHMATRIX_DHCP_OPTION_82_ERROR); + const auto& option82{query4_ptr->getOption(82)}; + if (!option82 || !option82->valid() || !option82->getOption(1) || + !option82->getOption(1)->valid() || !option82->getOption(2) || + !option82->getOption(2)->valid()) { + LOG_FATAL(kea_hook_logger, KEA_HOOK_DHCP_OPTION_82_ERROR); return std::make_tuple(1, nullptr, nullptr, nullptr); } - auto circuit_id{option82->getOption(1)->getData()}; - auto remote_id{option82->getOption(2)->getData()}; + const auto& circuit_id{option82->getOption(1)->getData()}; + const auto& remote_id{option82->getOption(2)->getData()}; // Check suboption ID types if (circuit_id[0] != 0 || remote_id[0] != 1) { - LOG_FATAL(schmatrix_logger, SCHMATRIX_DHCP_OPTION_82_ERROR); + LOG_FATAL(kea_hook_logger, KEA_HOOK_DHCP_OPTION_82_ERROR); return std::make_tuple(1, nullptr, nullptr, nullptr); } std::string port_id{std::to_string(circuit_id[4]) + "/" + std::to_string(circuit_id[5])}; std::string switch_name{remote_id.begin() + 2, remote_id.end()}; - auto switch_id{g_switch_data.at(switch_name)}; - return std::make_tuple(1, std::move(switch_name), std::move(port_id), - std::move(switch_id)); + try { + const auto& switch_id{g_switch_data.at(switch_name)}; + return std::make_tuple(0, std::move(switch_name), std::move(port_id), + switch_id); + } catch (const std::out_of_range& e) { + LOG_FATAL(kea_hook_logger, KEA_HOOK_DHCP_OPTION_82_ERROR); + return std::make_tuple(1, nullptr, nullptr, nullptr); + } } extern "C" { // Check IP conflict -int pkt4_receive(isc::hooks::CalloutHandle &handle) { +int pkt4_receive(isc::hooks::CalloutHandle& handle) { isc::dhcp::Pkt4Ptr query4_ptr; handle.getArgument("query4", query4_ptr); - // Skip non MUEB devices check - auto hwaddr_ptr = query4_ptr->getHWAddr(); + // Skip non MUEB devices + const auto& hwaddr_ptr = query4_ptr->getHWAddr(); + const auto& mac_address{hwaddr_ptr->toText(false)}; if (hwaddr_ptr->hwaddr_[0] != 0x54 || hwaddr_ptr->hwaddr_[1] != 0x10 || hwaddr_ptr->hwaddr_[2] != 0xEC) { return 0; } - const auto [result, switch_name, port_id, switch_id] = + const auto& [result, switch_name, port_id, switch_id] = parseOption82(query4_ptr); - const std::string &mac_address{hwaddr_ptr->toText(false)}; - const char *values[2] = {port_id.c_str(), switch_id.c_str()}; + if (result != 0) { + return 1; + } + + const char* values[2] = {port_id.c_str(), switch_id.c_str()}; // Get room id isc::db::PgSqlResult r(PQexecPrepared(*g_pg_sql_connection, "mueb_in_room", 2, values, nullptr, nullptr, 0)); // Handle incorrect room - if (r.getRows() < 0) { - LOG_ERROR(schmatrix_logger, SCHMATRIX_UNKNOWN_ROOM) + if (r.getRows() <= 0) { + LOG_ERROR(kea_hook_logger, KEA_HOOK_UNKNOWN_ROOM) .arg(mac_address) .arg(switch_name) .arg(port_id); return 1; } - const auto room_id{PQgetvalue(r, 0, 0)}; + const auto& room_id{PQgetvalue(r, 0, 0)}; values[0] = mac_address.c_str(); values[1] = room_id; @@ -81,44 +92,52 @@ int pkt4_receive(isc::hooks::CalloutHandle &handle) { isc::db::PgSqlResult r2(PQexecPrepared(*g_pg_sql_connection, "mueb_count_in_room", 2, values, nullptr, nullptr, 0)); - if (r.getRows() > 0 && std::atoi(PQgetvalue(r, 0, 0)) > 0) { - LOG_WARN(schmatrix_logger, SCHMATRIX_MULTIPLE_MUEB).arg(room_id); - handle.setStatus(isc::hooks::CalloutHandle::NEXT_STEP_DROP); - return 0; - } - isc::db::PgSqlResult r3(PQexecPrepared(*g_pg_sql_connection, "ip_conflict", 1, - values, nullptr, nullptr, 0)); - /* Drop packet when a MUEB has IP conflict - * Needs manual fix - */ - if (r.getRows() > 0 && std::atoi(PQgetvalue(r, 0, 0)) > 0) { - handle.setStatus(isc::hooks::CalloutHandle::NEXT_STEP_DROP); + try { + if (std::stoi(PQgetvalue(r2, 0, 0)) > 0) { + LOG_WARN(kea_hook_logger, KEA_HOOK_MULTIPLE_MUEB).arg(room_id); + handle.setStatus(isc::hooks::CalloutHandle::NEXT_STEP_DROP); + return 0; + } + + isc::db::PgSqlResult r3(PQexecPrepared(*g_pg_sql_connection, "ip_conflict", + 1, values, nullptr, nullptr, 0)); + /* Drop packet when a MUEB has IP conflict + * Needs manual fix + */ + if (r3.getRows() > 0 && std::stoi(PQgetvalue(r3, 0, 0)) > 0) { + handle.setStatus(isc::hooks::CalloutHandle::NEXT_STEP_DROP); + } + } catch (const std::exception& e) { + LOG_ERROR(kea_hook_logger, KEA_HOOK_DATABASE_FAILED).arg(e.what()); + return 1; } return 0; } // handle IP lease -int lease4_select(isc::hooks::CalloutHandle &handle) { +int lease4_select(isc::hooks::CalloutHandle& handle) { isc::dhcp::Pkt4Ptr query4_ptr; handle.getArgument("query4", query4_ptr); + isc::dhcp::Lease4Ptr lease4_ptr; handle.getArgument("lease4", lease4_ptr); + bool fake_allocation; handle.getArgument("fake_allocation", fake_allocation); - LOG_DEBUG(schmatrix_logger, 0, SCHMATRIX_DHCP_STATE) + LOG_DEBUG(kea_hook_logger, 0, KEA_HOOK_DHCP_STATE) .arg((fake_allocation) ? "---[DISCOVER]---" : "---[REQUEST]---"); - auto hwaddr_ptr = query4_ptr->getHWAddr(); - auto mac_address = hwaddr_ptr->toText(false); + const auto& hwaddr_ptr = query4_ptr->getHWAddr(); + const auto& mac_address = hwaddr_ptr->toText(false); // Allocate IP for non MUEB devices if (hwaddr_ptr->hwaddr_[0] != 0x54 || hwaddr_ptr->hwaddr_[1] != 0x10 || hwaddr_ptr->hwaddr_[2] != 0xEC) { - LOG_INFO(schmatrix_logger, SCHMATRIX_NOT_MUEB).arg(mac_address); - LOG_DEBUG(schmatrix_logger, 0, SCHMATRIX_DHCP_STATE) + LOG_INFO(kea_hook_logger, KEA_HOOK_NOT_MUEB).arg(mac_address); + LOG_DEBUG(kea_hook_logger, 0, KEA_HOOK_DHCP_STATE) .arg((fake_allocation) ? "---<DISCOVER>---" : "---<REQUEST>---"); return 0; @@ -133,22 +152,26 @@ int lease4_select(isc::hooks::CalloutHandle &handle) { } // Check for IP override - const char *values[3] = {mac_address.c_str()}; + const char* values[3] = {mac_address.c_str()}; isc::db::PgSqlResult r(PQexecPrepared(*g_pg_sql_connection, "ip_override", 1, values, nullptr, nullptr, 0)); - bool ip_overriden{r.getRows() > 0}; - // Query DB to get IP address std::string ip_address; - if (!ip_overriden) { + if (r.getRows() > 0) { + // IP is overridden + ip_address = PQgetvalue(r, 0, 0); + LOG_INFO(kea_hook_logger, KEA_HOOK_IP_OVERRIDDEN) + .arg(mac_address) + .arg(ip_address); + } else { values[0] = port_id.c_str(); values[1] = switch_id.c_str(); isc::db::PgSqlResult r2(PQexecPrepared(*g_pg_sql_connection, "ip_address", 2, values, nullptr, nullptr, 0)); // Handle incorrect room - if (r2.getRows() < 0) { - LOG_ERROR(schmatrix_logger, SCHMATRIX_UNKNOWN_ROOM) + if (r2.getRows() <= 0) { + LOG_ERROR(kea_hook_logger, KEA_HOOK_UNKNOWN_ROOM) .arg(mac_address) .arg(switch_name) .arg(port_id); @@ -157,11 +180,6 @@ int lease4_select(isc::hooks::CalloutHandle &handle) { } ip_address = PQgetvalue(r2, 0, 0); - } else { - ip_address = PQgetvalue(r, 0, 0); - LOG_INFO(schmatrix_logger, SCHMATRIX_IP_OVERRIDDEN) - .arg(mac_address) - .arg(ip_address); } // Modify kea's IP lease @@ -172,12 +190,11 @@ int lease4_select(isc::hooks::CalloutHandle &handle) { // Critical part end, it's safe to lease IP now handle.setStatus(isc::hooks::CalloutHandle::NEXT_STEP_CONTINUE); - LOG_DEBUG(schmatrix_logger, 0, SCHMATRIX_QUERIED_IP).arg(ip_address); - - LOG_DEBUG(schmatrix_logger, 0, SCHMATRIX_DHCP_STATE) + LOG_DEBUG(kea_hook_logger, 0, KEA_HOOK_QUERIED_IP).arg(ip_address); + LOG_DEBUG(kea_hook_logger, 0, KEA_HOOK_DHCP_STATE) .arg((fake_allocation) ? "---<DISCOVER>---" : "---<REQUEST>---"); - // Save to DB when the DHCP state is DHCPREQUEST For debugging purposes + // Save to DB when the DHCP state is DHCPREQUEST if (!fake_allocation) { // Clear switch-port values[0] = port_id.c_str(); @@ -189,8 +206,9 @@ int lease4_select(isc::hooks::CalloutHandle &handle) { values[0] = mac_address.c_str(); values[1] = port_id.c_str(); values[2] = switch_id.c_str(); - isc::db::PgSqlResult r4(PQexecPrepared(*g_pg_sql_connection, "insert_mueb", - 3, values, nullptr, nullptr, 0)); + isc::db::PgSqlResult r4(PQexecPrepared(*g_pg_sql_connection, + "insert_or_mueb", 3, values, nullptr, + nullptr, 0)); } else { /* Handle device swap * Remove the current IP from the lease DB before DHCPREQUEST @@ -208,17 +226,17 @@ int lease4_select(isc::hooks::CalloutHandle &handle) { /* Handle lease after one allocation * State after DHCPDISCOVER, DHCPREQUEST(renew) */ -int lease4_renew(isc::hooks::CalloutHandle &handle) { +int lease4_renew(isc::hooks::CalloutHandle& handle) { isc::dhcp::Pkt4Ptr query4Ptr; handle.getArgument("query4", query4Ptr); - auto isRequest = query4Ptr->getType() == isc::dhcp::DHCPREQUEST; - std::string tmp = (isRequest) ? "---[REQUEST" : "---[DISCOVER"; + const auto& isRequest = query4Ptr->getType() == isc::dhcp::DHCPREQUEST; + std::string tmp{(isRequest) ? "---[REQUEST" : "---[DISCOVER"}; - LOG_DEBUG(schmatrix_logger, 0, SCHMATRIX_DHCP_STATE).arg(tmp + "(RENEW)]---"); + LOG_DEBUG(kea_hook_logger, 0, KEA_HOOK_DHCP_STATE).arg(tmp + "(RENEW)]---"); // Used for DHCPREQUEST check in lease4_select - handle.setArgument("fake_allocation", !(isRequest)); + handle.setArgument("fake_allocation", !isRequest); if (lease4_select(handle) != 0) { return 1; @@ -228,22 +246,23 @@ int lease4_renew(isc::hooks::CalloutHandle &handle) { } // Handle IP conflict -int lease4_decline(isc::hooks::CalloutHandle &handle) { +int lease4_decline(isc::hooks::CalloutHandle& handle) { isc::dhcp::Pkt4Ptr query4Ptr; handle.getArgument("query4", query4Ptr); + isc::dhcp::Lease4Ptr lease4Ptr; handle.getArgument("lease4", lease4Ptr); - const std::string &mac_address = query4Ptr->getHWAddr()->toText(false); - LOG_FATAL(schmatrix_logger, SCHMATRIX_IP_CONFLICT) + const auto& mac_address{query4Ptr->getHWAddr()->toText(false)}; + LOG_FATAL(kea_hook_logger, KEA_HOOK_IP_CONFLICT) .arg(lease4Ptr->addr_.toText()) .arg(mac_address); // set IP conflict to true - const char *values[] = {mac_address.c_str()}; + const char* values[] = {mac_address.c_str()}; isc::db::PgSqlResult r(PQexecPrepared(*g_pg_sql_connection, "set_ip_conflict", 1, values, nullptr, nullptr, 0)); return 0; } -} +} \ No newline at end of file diff --git a/src/framework_functions.cc b/src/framework_functions.cc index 1f7d7e7..0146100 100644 --- a/src/framework_functions.cc +++ b/src/framework_functions.cc @@ -21,78 +21,81 @@ int load(isc::hooks::LibraryHandle& handle) { if (!host_ptr || !port_ptr || !database_ptr || !username_ptr || !password_ptr) { - LOG_FATAL(schmatrix_logger, SCHMATRIX_MISSING_PARAMETERS); + LOG_FATAL(kea_hook_logger, KEA_HOOK_MISSING_PARAMETERS); return 1; } - const isc::db::DatabaseConnection::ParameterMap parameterMap{ + g_pg_sql_connection = new isc::db::PgSqlConnection({ {"host", host_ptr->stringValue()}, {"port", port_ptr->stringValue()}, {"name", database_ptr->stringValue()}, {"user", username_ptr->stringValue()}, {"password", password_ptr->stringValue()}, - }; - g_pg_sql_connection = new isc::db::PgSqlConnection(parameterMap); + }); + try { g_pg_sql_connection->openDatabase(); + + // Store prepared statements + std::array<isc::db::PgSqlTaggedStatement, 8> statements{ + {{1, + {829}, + "ip_conflict", + "select ip_conflict::int from mueb where mac_address = $1"}, + {2, + {isc::db::OID_TEXT, 869}, + "mueb_in_room", + "select room_id from port p join room r using(room_id) where " + "p.port_id " + "= $1 and p.switch_id = $2"}, + {2, + {829, isc::db::OID_INT4}, + "mueb_count_in_room", + "select count(*) from port p join mueb m using(port_id, switch_id) " + "where m.mac_address != $1 and p.room_id = $2"}, + {1, + {829}, + "ip_override", + "select ip_override from mueb where mac_address = $1 and " + "ip_override " + "is not null"}, + {2, + {isc::db::OID_TEXT, 869}, + "ip_address", + "select ip_address from port p join room r using(room_id) where " + "p.port_id " + "= $1 and switch_id = $2"}, + {2, + {isc::db::OID_TEXT, 869}, + "clear_port", + "update mueb set port_id = null, switch_id = null where port_id = $1 " + "and switch_id = $2"}, + {3, + {829, isc::db::OID_TEXT, 869}, + "insert_or_update_mueb", + "insert into mueb (mac_address) values ($1) on conflict " + "(mac_address) do update set " + "port_id = $2, switch_id = $3 where mueb.mac_address = " + "$1"}, + {1, + {829}, + "set_ip_conflict", + "update mueb set ip_conflict = true where mac_address = $1"}}}; + g_pg_sql_connection->prepareStatements(statements.cbegin(), + statements.cend()); + } catch (const std::exception& e) { - LOG_FATAL(schmatrix_logger, SCHMATRIX_DATABASE_FAILED).arg(e.what()); + LOG_FATAL(kea_hook_logger, KEA_HOOK_DATABASE_FAILED).arg(e.what()); return 1; } - // Store prepared statements - std::array<isc::db::PgSqlTaggedStatement, 8> statements{ - {{1, - {isc::db::OID_TEXT}, - "ip_conflict", - "select ip_conflict::int from mueb where mac_address = $1::macaddr"}, - {2, - {isc::db::OID_TEXT, isc::db::OID_TEXT}, - "mueb_in_room", - "select room_id from port p join room r using(room_id) where p.port_id " - "= $1 and p.switch_id = $2::inet"}, - {2, - {isc::db::OID_TEXT, isc::db::OID_TEXT}, - "mueb_count_in_room", - "select count(*) from port p join mueb m using(port_id, switch_id) " - "where m.mac_address::macaddr != $1 and p.room_id = $2"}, - {1, - {isc::db::OID_TEXT}, - "ip_override", - "select ip_override from mueb where mac_address = $1::macaddr and " - "ip_override " - "is not null"}, - {2, - {isc::db::OID_TEXT, isc::db::OID_TEXT}, - "ip_address", - "select ip_address from port join room r using(room_id) where port_id " - "= $1 and switch_id = $2::inet"}, - {2, - {isc::db::OID_TEXT, isc::db::OID_TEXT}, - "clear_port", - "update mueb set port_id = null, switch_id = null where port_id = $1 " - "and switch_id = $2::inet"}, - {3, - {isc::db::OID_TEXT, isc::db::OID_TEXT, isc::db::OID_TEXT}, - "insert_mueb", - "insert into mueb (mac_address) values ($1::macaddr) on conflict " - "(mac_address) do update set " - "port_id = $2, switch_id = $3::inet where mueb.mac_address = " - "$1::macaddr"}, - {1, - {isc::db::OID_TEXT}, - "set_ip_conflict", - "update mueb set ip_conflict = true where mac_address = $1::macaddr"}}}; - g_pg_sql_connection->prepareStatements(statements.cbegin(), - statements.cend()); - // Cache switch data isc::db::PgSqlResult r( - PQexec(*g_pg_sql_connection, "select name, switch_id from switch")); + PQexec(*g_pg_sql_connection, "select hostname, switch_id from switch")); if (r.getRows() <= 0) { - LOG_FATAL(schmatrix_logger, SCHMATRIX_DATABASE_FAILED) - .arg("switch table is empty!"); + LOG_FATAL(kea_hook_logger, KEA_HOOK_DATABASE_FAILED) + .arg("Switch table is empty!"); return 1; } @@ -101,7 +104,7 @@ int load(isc::hooks::LibraryHandle& handle) { g_switch_data.emplace(PQgetvalue(r, i, 0), PQgetvalue(r, i, 1)); } - LOG_DEBUG(schmatrix_logger, 0, SCHMATRIX_OPEN_DATABASE); + LOG_DEBUG(kea_hook_logger, 0, KEA_HOOK_OPEN_DATABASE); return 0; } diff --git a/src/globals.h b/src/globals.h index 0176656..813c23c 100644 --- a/src/globals.h +++ b/src/globals.h @@ -1,4 +1,5 @@ -#pragma once +#ifndef KEA_HOOK_SRC_GLOBALS_H_ +#define KEA_HOOK_SRC_GLOBALS_H_ #include <pgsql/pgsql_connection.h> @@ -6,4 +7,6 @@ #include <string> extern std::map<std::string, std::string> g_switch_data; -extern isc::db::PgSqlConnection* g_pg_sql_connection; \ No newline at end of file +extern isc::db::PgSqlConnection* g_pg_sql_connection; + +#endif // KEA_HOOK_SRC_GLOBALS_H_ \ No newline at end of file diff --git a/src/logger.cc b/src/logger.cc index dceb9df..be318cb 100644 --- a/src/logger.cc +++ b/src/logger.cc @@ -1,3 +1,3 @@ #include "logger.h" -isc::log::Logger schmatrix_logger("schmatrix"); +isc::log::Logger kea_hook_logger("kea_hook"); \ No newline at end of file diff --git a/src/logger.h b/src/logger.h index e85fb09..34e21c3 100644 --- a/src/logger.h +++ b/src/logger.h @@ -1,5 +1,5 @@ -#ifndef SCHMATRIX_LOGGER_H -#define SCHMATRIX_LOGGER_H +#ifndef KEA_HOOK_SRC_LOGGER_H_ +#define KEA_HOOK_SRC_LOGGER_H_ #include <log/logger.h> #include <log/macros.h> @@ -7,6 +7,6 @@ #include "messages.h" -extern isc::log::Logger schmatrix_logger; +extern isc::log::Logger kea_hook_logger; -#endif +#endif // KEA_HOOK_SRC_LOGGER_H_ \ No newline at end of file diff --git a/src/messages.cc b/src/messages.cc index 15908e9..a40b881 100644 --- a/src/messages.cc +++ b/src/messages.cc @@ -1,35 +1,35 @@ -// File created from messages.mes on Thu Sep 02 2021 20:36 +// File created from messages.mes on Fri Sep 03 2021 19:53 #include <cstddef> #include <log/message_types.h> #include <log/message_initializer.h> -extern const isc::log::MessageID SCHMATRIX_DATABASE_FAILED = "SCHMATRIX_DATABASE_FAILED"; -extern const isc::log::MessageID SCHMATRIX_DHCP_OPTION_82_ERROR = "SCHMATRIX_DHCP_OPTION_82_ERROR"; -extern const isc::log::MessageID SCHMATRIX_DHCP_STATE = "SCHMATRIX_DHCP_STATE"; -extern const isc::log::MessageID SCHMATRIX_IP_CONFLICT = "SCHMATRIX_IP_CONFLICT"; -extern const isc::log::MessageID SCHMATRIX_IP_OVERRIDDEN = "SCHMATRIX_IP_OVERRIDDEN"; -extern const isc::log::MessageID SCHMATRIX_MISSING_PARAMETERS = "SCHMATRIX_MISSING_PARAMETERS"; -extern const isc::log::MessageID SCHMATRIX_MULTIPLE_MUEB = "SCHMATRIX_MULTIPLE_MUEB"; -extern const isc::log::MessageID SCHMATRIX_NOT_MUEB = "SCHMATRIX_NOT_MUEB"; -extern const isc::log::MessageID SCHMATRIX_OPEN_DATABASE = "SCHMATRIX_OPEN_DATABASE"; -extern const isc::log::MessageID SCHMATRIX_QUERIED_IP = "SCHMATRIX_QUERIED_IP"; -extern const isc::log::MessageID SCHMATRIX_UNKNOWN_ROOM = "SCHMATRIX_UNKNOWN_ROOM"; +extern const isc::log::MessageID KEA_HOOK_DATABASE_FAILED = "KEA_HOOK_DATABASE_FAILED"; +extern const isc::log::MessageID KEA_HOOK_DHCP_OPTION_82_ERROR = "KEA_HOOK_DHCP_OPTION_82_ERROR"; +extern const isc::log::MessageID KEA_HOOK_DHCP_STATE = "KEA_HOOK_DHCP_STATE"; +extern const isc::log::MessageID KEA_HOOK_IP_CONFLICT = "KEA_HOOK_IP_CONFLICT"; +extern const isc::log::MessageID KEA_HOOK_IP_OVERRIDDEN = "KEA_HOOK_IP_OVERRIDDEN"; +extern const isc::log::MessageID KEA_HOOK_MISSING_PARAMETERS = "KEA_HOOK_MISSING_PARAMETERS"; +extern const isc::log::MessageID KEA_HOOK_MULTIPLE_MUEB = "KEA_HOOK_MULTIPLE_MUEB"; +extern const isc::log::MessageID KEA_HOOK_NOT_MUEB = "KEA_HOOK_NOT_MUEB"; +extern const isc::log::MessageID KEA_HOOK_OPEN_DATABASE = "KEA_HOOK_OPEN_DATABASE"; +extern const isc::log::MessageID KEA_HOOK_QUERIED_IP = "KEA_HOOK_QUERIED_IP"; +extern const isc::log::MessageID KEA_HOOK_UNKNOWN_ROOM = "KEA_HOOK_UNKNOWN_ROOM"; namespace { const char* values[] = { - "SCHMATRIX_DATABASE_FAILED", "%1", - "SCHMATRIX_DHCP_OPTION_82_ERROR", "Invalid DHCP option 82", - "SCHMATRIX_DHCP_STATE", "%1", - "SCHMATRIX_IP_CONFLICT", "Could not lease IP: %1 to MUEB: %2 because of IP conflict", - "SCHMATRIX_IP_OVERRIDDEN", "MUEB: %1 IP's overridden to: %2", - "SCHMATRIX_MISSING_PARAMETERS", "Not all parameters are provided", - "SCHMATRIX_MULTIPLE_MUEB", "Multiple MUEBs in the same room %1", - "SCHMATRIX_NOT_MUEB", "Device with MAC: %1 is not a MUEB", - "SCHMATRIX_OPEN_DATABASE", "Opened database successfully", - "SCHMATRIX_QUERIED_IP", "Queried IP is: %1", - "SCHMATRIX_UNKNOWN_ROOM", "MUEB: %1 connected to a unknown room, switch: %2, port: %3", + "KEA_HOOK_DATABASE_FAILED", "%1", + "KEA_HOOK_DHCP_OPTION_82_ERROR", "Invalid DHCP option 82", + "KEA_HOOK_DHCP_STATE", "%1", + "KEA_HOOK_IP_CONFLICT", "Could not lease IP: %1 to MUEB: %2 because of IP conflict", + "KEA_HOOK_IP_OVERRIDDEN", "MUEB: %1 IP's overridden to: %2", + "KEA_HOOK_MISSING_PARAMETERS", "Not all parameters are provided", + "KEA_HOOK_MULTIPLE_MUEB", "Multiple MUEBs in the same room %1", + "KEA_HOOK_NOT_MUEB", "Device with MAC: %1 is not a MUEB", + "KEA_HOOK_OPEN_DATABASE", "Opened database successfully", + "KEA_HOOK_QUERIED_IP", "Queried IP is: %1", + "KEA_HOOK_UNKNOWN_ROOM", "MUEB: %1 connected to a unknown room, switch: %2, port: %3", NULL }; diff --git a/src/messages.h b/src/messages.h index c7113e9..2b417c5 100644 --- a/src/messages.h +++ b/src/messages.h @@ -1,20 +1,20 @@ -// File created from messages.mes on Thu Sep 02 2021 20:36 +// File created from messages.mes on Fri Sep 03 2021 19:53 #ifndef MESSAGES_H #define MESSAGES_H #include <log/message_types.h> -extern const isc::log::MessageID SCHMATRIX_DATABASE_FAILED; -extern const isc::log::MessageID SCHMATRIX_DHCP_OPTION_82_ERROR; -extern const isc::log::MessageID SCHMATRIX_DHCP_STATE; -extern const isc::log::MessageID SCHMATRIX_IP_CONFLICT; -extern const isc::log::MessageID SCHMATRIX_IP_OVERRIDDEN; -extern const isc::log::MessageID SCHMATRIX_MISSING_PARAMETERS; -extern const isc::log::MessageID SCHMATRIX_MULTIPLE_MUEB; -extern const isc::log::MessageID SCHMATRIX_NOT_MUEB; -extern const isc::log::MessageID SCHMATRIX_OPEN_DATABASE; -extern const isc::log::MessageID SCHMATRIX_QUERIED_IP; -extern const isc::log::MessageID SCHMATRIX_UNKNOWN_ROOM; +extern const isc::log::MessageID KEA_HOOK_DATABASE_FAILED; +extern const isc::log::MessageID KEA_HOOK_DHCP_OPTION_82_ERROR; +extern const isc::log::MessageID KEA_HOOK_DHCP_STATE; +extern const isc::log::MessageID KEA_HOOK_IP_CONFLICT; +extern const isc::log::MessageID KEA_HOOK_IP_OVERRIDDEN; +extern const isc::log::MessageID KEA_HOOK_MISSING_PARAMETERS; +extern const isc::log::MessageID KEA_HOOK_MULTIPLE_MUEB; +extern const isc::log::MessageID KEA_HOOK_NOT_MUEB; +extern const isc::log::MessageID KEA_HOOK_OPEN_DATABASE; +extern const isc::log::MessageID KEA_HOOK_QUERIED_IP; +extern const isc::log::MessageID KEA_HOOK_UNKNOWN_ROOM; #endif // MESSAGES_H diff --git a/src/messages.mes b/src/messages.mes index d1e174f..b5b3012 100644 --- a/src/messages.mes +++ b/src/messages.mes @@ -1,21 +1,21 @@ -% SCHMATRIX_MISSING_PARAMETERS Not all parameters are provided +% KEA_HOOK_MISSING_PARAMETERS Not all parameters are provided -% SCHMATRIX_OPEN_DATABASE Opened database successfully +% KEA_HOOK_OPEN_DATABASE Opened database successfully -% SCHMATRIX_DATABASE_FAILED %1 +% KEA_HOOK_DATABASE_FAILED %1 -% SCHMATRIX_QUERIED_IP Queried IP is: %1 +% KEA_HOOK_QUERIED_IP Queried IP is: %1 -% SCHMATRIX_NOT_MUEB Device with MAC: %1 is not a MUEB +% KEA_HOOK_NOT_MUEB Device with MAC: %1 is not a MUEB -% SCHMATRIX_IP_CONFLICT Could not lease IP: %1 to MUEB: %2 because of IP conflict +% KEA_HOOK_IP_CONFLICT Could not lease IP: %1 to MUEB: %2 because of IP conflict -% SCHMATRIX_UNKNOWN_ROOM MUEB: %1 connected to a unknown room, switch: %2, port: %3 +% KEA_HOOK_UNKNOWN_ROOM MUEB: %1 connected to a unknown room, switch: %2, port: %3 -% SCHMATRIX_DHCP_STATE %1 +% KEA_HOOK_DHCP_STATE %1 -% SCHMATRIX_IP_OVERRIDDEN MUEB: %1 IP's overridden to: %2 +% KEA_HOOK_IP_OVERRIDDEN MUEB: %1 IP's overridden to: %2 -% SCHMATRIX_DHCP_OPTION_82_ERROR Invalid DHCP option 82 +% KEA_HOOK_DHCP_OPTION_82_ERROR Invalid DHCP option 82 -% SCHMATRIX_MULTIPLE_MUEB Multiple MUEBs in the same room %1 +% KEA_HOOK_MULTIPLE_MUEB Multiple MUEBs in the same room %1 -- GitLab