mirror of
https://github.com/pavel-odintsov/fastnetmon
synced 2024-06-18 21:59:19 +02:00
Reworked patricia logic to use const strings for tree construction
This commit is contained in:
parent
6833220676
commit
62bac2a870
|
@ -1074,7 +1074,7 @@ bool load_our_networks_list() {
|
|||
continue;
|
||||
}
|
||||
network_entries++;
|
||||
make_and_lookup(whitelist_tree_ipv4, const_cast<char*>(text_subnet.c_str()));
|
||||
make_and_lookup(whitelist_tree_ipv4, text_subnet.c_str());
|
||||
}
|
||||
|
||||
logger << log4cpp::Priority::INFO << "We loaded " << network_entries << " networks from whitelist file";
|
||||
|
@ -1197,7 +1197,7 @@ bool load_our_networks_list() {
|
|||
network_address_in_cidr_form = new_network_address_as_string;
|
||||
}
|
||||
|
||||
make_and_lookup(lookup_tree_ipv4, const_cast<char*>(network_address_in_cidr_form.c_str()));
|
||||
make_and_lookup(lookup_tree_ipv4, network_address_in_cidr_form.c_str());
|
||||
}
|
||||
|
||||
for (std::vector<std::string>::iterator ii = networks_list_ipv6_as_string.begin();
|
||||
|
|
|
@ -222,11 +222,11 @@ prefix_t* New_Prefix(int family, void* dest, int bitlen) {
|
|||
}
|
||||
|
||||
// Converts string representation of prefix into out prefix_t structure
|
||||
prefix_t* ascii2prefix(int family, char* string) {
|
||||
prefix_t* ascii2prefix(int family, const char* string) {
|
||||
u_long bitlen = 0;
|
||||
u_long maxbitlen = 0;
|
||||
|
||||
char* cp = nullptr;
|
||||
const char* cp = nullptr;
|
||||
|
||||
struct in_addr sin {};
|
||||
struct in6_addr sin6 {};
|
||||
|
@ -715,8 +715,9 @@ patricia_node_t* patricia_lookup(patricia_tree_t* patricia, prefix_t* prefix) {
|
|||
return new_node;
|
||||
}
|
||||
|
||||
patricia_node_t* make_and_lookup(patricia_tree_t* tree, char* string) {
|
||||
prefix_t* prefix = ascii2prefix(AF_INET, string);
|
||||
patricia_node_t* make_and_lookup(patricia_tree_t* tree, const char* prefix_as_string) {
|
||||
prefix_t* prefix = ascii2prefix(AF_INET, prefix_as_string);
|
||||
|
||||
patricia_node_t* node = patricia_lookup(tree, prefix);
|
||||
|
||||
Deref_Prefix(prefix);
|
||||
|
@ -725,8 +726,9 @@ patricia_node_t* make_and_lookup(patricia_tree_t* tree, char* string) {
|
|||
}
|
||||
|
||||
|
||||
patricia_node_t* make_and_lookup_ipv6(patricia_tree_t* tree, const char* string) {
|
||||
prefix_t* prefix = ascii2prefix(AF_INET6, (char*)string);
|
||||
patricia_node_t* make_and_lookup_ipv6(patricia_tree_t* tree, const char* prefix_as_string) {
|
||||
prefix_t* prefix = ascii2prefix(AF_INET6, prefix_as_string);
|
||||
|
||||
patricia_node_t* node = patricia_lookup(tree, prefix);
|
||||
|
||||
Deref_Prefix(prefix);
|
||||
|
@ -735,8 +737,8 @@ patricia_node_t* make_and_lookup_ipv6(patricia_tree_t* tree, const char* string)
|
|||
}
|
||||
|
||||
// Add custom pointer to this subnet leaf
|
||||
patricia_node_t* make_and_lookup_with_data(patricia_tree_t* tree, char* string, void* user_data) {
|
||||
prefix_t* prefix = ascii2prefix(AF_INET, string);
|
||||
patricia_node_t* make_and_lookup_with_data(patricia_tree_t* tree, const char* prefix_as_string, void* user_data) {
|
||||
prefix_t* prefix = ascii2prefix(AF_INET, prefix_as_string);
|
||||
|
||||
patricia_node_t* node = patricia_lookup(tree, prefix);
|
||||
node->data = user_data;
|
||||
|
@ -747,8 +749,8 @@ patricia_node_t* make_and_lookup_with_data(patricia_tree_t* tree, char* string,
|
|||
}
|
||||
|
||||
// Add custom pointer to subnet leaf for IPv6
|
||||
patricia_node_t* make_and_lookup_ipv6_with_data(patricia_tree_t* tree, const char* string, void* user_data) {
|
||||
prefix_t* prefix = ascii2prefix(AF_INET6, (char*)string);
|
||||
patricia_node_t* make_and_lookup_ipv6_with_data(patricia_tree_t* tree, const char* prefix_as_string, void* user_data) {
|
||||
prefix_t* prefix = ascii2prefix(AF_INET6, prefix_as_string);
|
||||
|
||||
patricia_node_t* node = patricia_lookup(tree, prefix);
|
||||
|
||||
|
|
|
@ -65,8 +65,8 @@ class patricia_tree_t {
|
|||
patricia_tree_t* New_Patricia(int maxbits);
|
||||
|
||||
// Add elements to IPv4 tree
|
||||
patricia_node_t* make_and_lookup(patricia_tree_t* tree, char* string);
|
||||
patricia_node_t* make_and_lookup_with_data(patricia_tree_t* tree, char* string, void* user_data);
|
||||
patricia_node_t* make_and_lookup(patricia_tree_t* tree, const char* string);
|
||||
patricia_node_t* make_and_lookup_with_data(patricia_tree_t* tree, const char* string, void* user_data);
|
||||
|
||||
// Add elements to IPv6 tree
|
||||
patricia_node_t* make_and_lookup_ipv6(patricia_tree_t* tree, const char* string);
|
||||
|
@ -92,4 +92,4 @@ void Destroy_Patricia(patricia_tree_t* patricia);
|
|||
char* prefix_toa(prefix_t* prefix);
|
||||
|
||||
// ASCII to prefix
|
||||
prefix_t* ascii2prefix(int family, char* string);
|
||||
prefix_t* ascii2prefix(int family, const char* string);
|
||||
|
|
|
@ -112,7 +112,7 @@ int main(int argc, char* argv[]) {
|
|||
for (std::vector<std::string>::iterator ii = network_list_from_config.begin(); ii != network_list_from_config.end(); ++ii) {
|
||||
std::string network_address_in_cidr_form = *ii;
|
||||
|
||||
make_and_lookup(lookup_tree, const_cast<char*>(network_address_in_cidr_form.c_str()));
|
||||
make_and_lookup(lookup_tree, network_address_in_cidr_form.c_str());
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue