nemea-common 1.6.3
|
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>
#include <time.h>
#include <inttypes.h>
#include <sys/types.h>
#include <sys/stat.h>
Go to the source code of this file.
Data Structures | |
struct | prefix_tree_inner_node_t |
Structure - Prefix tree - inner node structure Structure used to keep information about inner node of prefix tree. More... | |
struct | node_domain_extension_t |
Structure - domain extension Structure keeps pointers in linked list to other domain nodes. More... | |
struct | prefix_tree_domain_t |
Structure - Prefix tree - domain name structure Structure used to keep information about domain names. It is domain name structure, which contain information about domain name. More... | |
struct | tree_domain_extension_t |
Structure - Domain names extension Structure used to keep lists of most searched domains, subdomains and least searched subdomains information about prexix tree. More... | |
struct | prefix_tree_t |
Structure - Prefix tree main structure Structure used to keep information about prefix tree. It is main structure, witch contains all information about prexix tree. More... | |
Default values | |
Defines macros used by prefix tree | |
#define | COUNT_OF_LETTERS_IN_DOMAIN 256 /*< Max count of letter in domain. */ |
#define | MAX_SIZE_OF_DOMAIN 256 /*< Max length of domain */ |
#define | MAX_SIZE_OF_DEGREE 5 /*< Max size of stored information */ |
#define | ADD_TO_LIST_FROM_COUNT_OF_SEARCH 20 /*< Default number of histogram size. */ |
#define | ADD_TO_LIST_FROM_COUNT_OF_DIFFERENT_SUBDOMAINS 10 /*< Default number of histogram size. */ |
#define | MAX_COUNT_TO_BE_IN_JUST_ONE_SEARCHER 10 /*< Default number of histogram size. */ |
#define | PREFIX 1 |
#define | SUFFIX 0 |
enum | domain_extension { DOMAIN_EXTENSION_YES , DOMAIN_EXTENSION_NO } |
enum | relaxation_after_delete { RELAXATION_AFTER_DELETE_YES , RELAXATION_AFTER_DELETE_NO } |
typedef struct prefix_tree_domain_t | prefix_tree_domain_t |
typedef struct prefix_tree_inner_node_t | prefix_tree_inner_node_t |
typedef struct node_domain_extension_t | node_domain_extension_t |
Structure - domain extension Structure keeps pointers in linked list to other domain nodes. | |
typedef struct tree_domain_extension_t | tree_domain_extension_t |
Structure - Domain names extension Structure used to keep lists of most searched domains, subdomains and least searched subdomains information about prexix tree. | |
typedef struct prefix_tree_t | prefix_tree_t |
Structure - Prefix tree main structure Structure used to keep information about prefix tree. It is main structure, witch contains all information about prexix tree. | |
int | prefix_tree_map_character_to_number (unsigned char letter) |
Map character to index Function maps character to index in descendants. | |
prefix_tree_t * | prefix_tree_initialize (unsigned char prefix_suffix, unsigned int size_of_value, int domain_separator, int domain_extension, relaxation_after_delete relaxation) |
Init function for prefix tree Function that incialize prefix tree. | |
void | prefix_tree_decrease_counters_deleted_inner_node (prefix_tree_inner_node_t *node, int deleted_strings, int deleted_domains) |
Decrease counters in prefix tree, if deleting a node. Function that goes from the node to the root and decreases counters. | |
prefix_tree_inner_node_t * | join_nodes (prefix_tree_inner_node_t *node) |
Function joins two nodes into one. If parent has just one child, this function join them into one node. | |
void | prefix_tree_delete_inner_node (prefix_tree_t *tree, prefix_tree_inner_node_t *node) |
Function which removes inner node and his descendats. Function will erase specified node and all his decendats. Counters will be changed. | |
int | prefix_tree_destroy_recursive (prefix_tree_t *tree, prefix_tree_inner_node_t *node) |
Destroy all items in prefix tree Function destroy recursively destroies all nodes. | |
void | prefix_tree_destroy (prefix_tree_t *tree) |
Destroy function for prefix tree Function destroy prefix tree and all item inside. | |
void | prefix_tree_recursive_plus_domain (prefix_tree_domain_t *domain_parent, prefix_tree_t *tree) |
Recursive change info about parent doimains Function actualize information in parent domains. | |
prefix_tree_domain_t * | prefix_tree_new_domain (prefix_tree_inner_node_t *node, prefix_tree_domain_t *domain_parent, prefix_tree_t *tree) |
Create domain node structure Function Create domian and connects it to the tree. | |
prefix_tree_inner_node_t * | prefix_tree_new_node (prefix_tree_inner_node_t *parent, int map_number) |
Create inner node structure Function Create inned node and connects it to the tree. | |
prefix_tree_inner_node_t * | prefix_tree_add_children_array (prefix_tree_inner_node_t *parent) |
Alloc memory for descendats in inner node Function allocs memory for descendats in inner node. | |
prefix_tree_inner_node_t * | prefix_tree_new_node_parent_is_domain (prefix_tree_domain_t *domain) |
Create descendant of domain Function creates descendant of domain, (domain has other subdomains). | |
int | prefix_tree_count_to_domain_separator (const char *string, int length, int domain_separator, char prefix) |
Count length of string to dot Function counts length of string to dot. | |
prefix_tree_domain_t * | prefix_tree_add_new_item (prefix_tree_inner_node_t *node, prefix_tree_domain_t *domain, const char *string, int length, prefix_tree_t *tree) |
Add new item to prefix tree Function add new item to prefix tree (place where to add new domain has to be given). | |
prefix_tree_inner_node_t * | prefix_tree_split_node_into_two (prefix_tree_inner_node_t *node, int index) |
Split node into two nodes Function splits node into two nodes, on the given position. This function is needed when inserting new node, which has coomon part of string with some node. | |
char * | prefix_tree_read_string (prefix_tree_t *tree, prefix_tree_domain_t *domain, char *string) |
Read domain from tree Function return string with the domain name. | |
char * | prefix_tree_read_inner_node (prefix_tree_t *tree, prefix_tree_inner_node_t *node, char *string) |
Read string from inner node Function return string stored in given inner node. | |
prefix_tree_domain_t * | prefix_tree_add_domain_recursive_prefix (prefix_tree_inner_node_t *node, prefix_tree_domain_t *domain_parent, const char *string, int length, prefix_tree_t *tree) |
Add domain recursive (prefix tree) Function adds domain to the prefix tree. This function is called from prefix_tree_add_domain and needs more parametters. | |
prefix_tree_domain_t * | prefix_tree_add_domain_recursive_suffix (prefix_tree_inner_node_t *node, prefix_tree_domain_t *domain_parent, const char *string, int length, prefix_tree_t *tree) |
Add domain recursive (suffix tree) Function adds domain to the prefix tree. This function is called from prefix_tree_add_domain and needs more parametters. | |
prefix_tree_domain_t * | prefix_tree_insert (prefix_tree_t *tree, const char *string, int length) |
Add domain to prefix tree Function adds domain to the prefix tree. | |
prefix_tree_domain_t * | prefix_tree_search (prefix_tree_t *tree, const char *string, int length) |
Seacrh domain in prefix tree Function adds domain to the prefix tree. | |
prefix_tree_domain_t * | prefix_tree_add_string_exception (prefix_tree_t *tree, const char *string, int length) |
Add domain to prefix tree and set it to the exception state Function adds domain to the prefix tree and set it to the exception state. | |
int | prefix_tree_is_string_in_exception (prefix_tree_t *tree, const char *string, int length) |
Test domain if is in exception state Function tests domain if is in exception state. | |
double | prefix_tree_most_used_domain_percent_of_subdomains (prefix_tree_t *tree, int depth) |
Statistic function percent od subdomains in certain depth Function returns percent of subdomains in most searched domain in given depth. | |
prefix_tree_inner_node_t * | prefix_tree_most_substring (prefix_tree_inner_node_t *node) |
Returns inner node with most of different strings Function returns pointer to inner node, which has the most of different strings. | |
#define ADD_TO_LIST_FROM_COUNT_OF_DIFFERENT_SUBDOMAINS 10 /*< Default number of histogram size. */ |
Definition at line 69 of file prefix_tree.h.
#define ADD_TO_LIST_FROM_COUNT_OF_SEARCH 20 /*< Default number of histogram size. */ |
Definition at line 68 of file prefix_tree.h.
#define COUNT_OF_LETTERS_IN_DOMAIN 256 /*< Max count of letter in domain. */ |
Definition at line 65 of file prefix_tree.h.
#define MAX_COUNT_TO_BE_IN_JUST_ONE_SEARCHER 10 /*< Default number of histogram size. */ |
Definition at line 70 of file prefix_tree.h.
#define MAX_SIZE_OF_DEGREE 5 /*< Max size of stored information */ |
Definition at line 67 of file prefix_tree.h.
#define MAX_SIZE_OF_DOMAIN 256 /*< Max length of domain */ |
Definition at line 66 of file prefix_tree.h.
#define PREFIX 1 |
Definition at line 71 of file prefix_tree.h.
#define SUFFIX 0 |
Definition at line 72 of file prefix_tree.h.
typedef struct node_domain_extension_t node_domain_extension_t |
Structure - domain extension Structure keeps pointers in linked list to other domain nodes.
typedef struct prefix_tree_domain_t prefix_tree_domain_t |
Definition at line 91 of file prefix_tree.h.
typedef struct prefix_tree_inner_node_t prefix_tree_inner_node_t |
Definition at line 92 of file prefix_tree.h.
typedef struct prefix_tree_t prefix_tree_t |
Structure - Prefix tree main structure Structure used to keep information about prefix tree. It is main structure, witch contains all information about prexix tree.
typedef struct tree_domain_extension_t tree_domain_extension_t |
Structure - Domain names extension Structure used to keep lists of most searched domains, subdomains and least searched subdomains information about prexix tree.
enum domain_extension |
Inicialization parametters for allowing domain extension information.
Enumerator | |
---|---|
DOMAIN_EXTENSION_YES | |
DOMAIN_EXTENSION_NO |
Definition at line 78 of file prefix_tree.h.
Inicialization parametters for relaxation tree after deleting node.
Enumerator | |
---|---|
RELAXATION_AFTER_DELETE_YES | |
RELAXATION_AFTER_DELETE_NO |
Definition at line 86 of file prefix_tree.h.
prefix_tree_inner_node_t * join_nodes | ( | prefix_tree_inner_node_t * | node | ) |
Function joins two nodes into one. If parent has just one child, this function join them into one node.
[in] | node | parent node, which would be joined with son. |
prefix_tree_inner_node_t * prefix_tree_add_children_array | ( | prefix_tree_inner_node_t * | parent | ) |
Alloc memory for descendats in inner node Function allocs memory for descendats in inner node.
[in] | parent | parent node |
prefix_tree_domain_t * prefix_tree_add_domain_recursive_prefix | ( | prefix_tree_inner_node_t * | node, |
prefix_tree_domain_t * | domain_parent, | ||
const char * | string, | ||
int | length, | ||
prefix_tree_t * | tree ) |
Add domain recursive (prefix tree) Function adds domain to the prefix tree. This function is called from prefix_tree_add_domain and needs more parametters.
[in] | node | inner node where to insert of find domain |
[in] | domain_parent | neares domain parent |
[in] | string | string to add to prefix tree |
[in] | length | length of string |
[in] | tree | pointer to the prefix tree |
prefix_tree_domain_t * prefix_tree_add_domain_recursive_suffix | ( | prefix_tree_inner_node_t * | node, |
prefix_tree_domain_t * | domain_parent, | ||
const char * | string, | ||
int | length, | ||
prefix_tree_t * | tree ) |
Add domain recursive (suffix tree) Function adds domain to the prefix tree. This function is called from prefix_tree_add_domain and needs more parametters.
[in] | node | inner node where to insert of find domain |
[in] | domain_parent | neares domain parent |
[in] | string | string to add to prefix tree |
[in] | length | length of string |
[in] | tree | pointer to the prefix tree |
prefix_tree_domain_t * prefix_tree_add_new_item | ( | prefix_tree_inner_node_t * | node, |
prefix_tree_domain_t * | domain, | ||
const char * | string, | ||
int | length, | ||
prefix_tree_t * | tree ) |
Add new item to prefix tree Function add new item to prefix tree (place where to add new domain has to be given).
[in] | node | node where to add new item |
[in] | domain | nearest parent domain |
[in] | string | string with new item |
[in] | length | length of string |
[in] | tree | pointer to the prefix tree |
prefix_tree_domain_t * prefix_tree_add_string_exception | ( | prefix_tree_t * | tree, |
const char * | string, | ||
int | length ) |
Add domain to prefix tree and set it to the exception state Function adds domain to the prefix tree and set it to the exception state.
[in] | tree | pointer to the prefix tree |
[in] | string | string witch should be added |
[in] | length | length of string |
int prefix_tree_count_to_domain_separator | ( | const char * | string, |
int | length, | ||
int | domain_separator, | ||
char | prefix ) |
Count length of string to dot Function counts length of string to dot.
[in] | string | |
[in] | length | of string |
[in] | separator | of domain |
[in] | prefix | or suffix |
void prefix_tree_decrease_counters_deleted_inner_node | ( | prefix_tree_inner_node_t * | node, |
int | deleted_strings, | ||
int | deleted_domains ) |
Decrease counters in prefix tree, if deleting a node. Function that goes from the node to the root and decreases counters.
[in] | node | from which to start decreasing. |
[in] | deleted_strings | count of deleted strings. |
[in] | deleted_domains | count of deleted domain nodes. |
void prefix_tree_delete_inner_node | ( | prefix_tree_t * | tree, |
prefix_tree_inner_node_t * | node ) |
Function which removes inner node and his descendats. Function will erase specified node and all his decendats. Counters will be changed.
[in] | tree | pointer to tree in which is the deleted node. |
[in] | node | parent node, which would be joined with son. |
void prefix_tree_destroy | ( | prefix_tree_t * | tree | ) |
Destroy function for prefix tree Function destroy prefix tree and all item inside.
[in] | tree | pointer to prefix tree |
int prefix_tree_destroy_recursive | ( | prefix_tree_t * | tree, |
prefix_tree_inner_node_t * | node ) |
Destroy all items in prefix tree Function destroy recursively destroies all nodes.
[in] | tree | pointer to prefix tree |
[in] | node | pointer to inner node, which will be destroied |
prefix_tree_t * prefix_tree_initialize | ( | unsigned char | prefix_suffix, |
unsigned int | size_of_value, | ||
int | domain_separator, | ||
int | domain_extension, | ||
relaxation_after_delete | relaxation ) |
Init function for prefix tree Function that incialize prefix tree.
[in] | PREFIX | for prefix tree or SUFFIX for suffix tree |
[in] | size | of space for value |
[in] | character | of domain separator, when this value is in string, special domain node for value is created |
[in] | domain_extension | can has value of DOMAIN_EXTENSION_YES or DOMAIN_EXTENSION_NO. If is it set on YES it will store addintional structure for searching domains via their usage. |
prefix_tree_domain_t * prefix_tree_insert | ( | prefix_tree_t * | tree, |
const char * | string, | ||
int | length ) |
Add domain to prefix tree Function adds domain to the prefix tree.
[in] | tree | pointer to the prefix tree |
[in] | string | string witch should be added |
[in] | length | length of string |
int prefix_tree_is_string_in_exception | ( | prefix_tree_t * | tree, |
const char * | string, | ||
int | length ) |
Test domain if is in exception state Function tests domain if is in exception state.
[in] | tree | pointer to the prefix tree |
[in] | string | string witch should be added |
[in] | length | length of string |
int prefix_tree_map_character_to_number | ( | unsigned char | letter | ) |
Map character to index Function maps character to index in descendants.
[in] | letter | character |
prefix_tree_inner_node_t * prefix_tree_most_substring | ( | prefix_tree_inner_node_t * | node | ) |
Returns inner node with most of different strings Function returns pointer to inner node, which has the most of different strings.
[in] | node | pointer to the node, from which the searching starts. |
double prefix_tree_most_used_domain_percent_of_subdomains | ( | prefix_tree_t * | tree, |
int | depth ) |
Statistic function percent od subdomains in certain depth Function returns percent of subdomains in most searched domain in given depth.
[in] | tree | pointer to the prefix tree |
[in] | depth |
prefix_tree_domain_t * prefix_tree_new_domain | ( | prefix_tree_inner_node_t * | node, |
prefix_tree_domain_t * | domain_parent, | ||
prefix_tree_t * | tree ) |
Create domain node structure Function Create domian and connects it to the tree.
[in] | node | parent node (contain last letter of domain) |
[in] | domain_parent | pointer to parent domain |
[in] | tree | pointer to prefix tree |
prefix_tree_inner_node_t * prefix_tree_new_node | ( | prefix_tree_inner_node_t * | parent, |
int | map_number ) |
Create inner node structure Function Create inned node and connects it to the tree.
[in] | parent | parent node |
[in] | map_number | number of first character of new node (index on this node in parent) |
prefix_tree_inner_node_t * prefix_tree_new_node_parent_is_domain | ( | prefix_tree_domain_t * | domain | ) |
Create descendant of domain Function creates descendant of domain, (domain has other subdomains).
[in] | domain | domain where to add descendant |
char * prefix_tree_read_inner_node | ( | prefix_tree_t * | tree, |
prefix_tree_inner_node_t * | node, | ||
char * | string ) |
Read string from inner node Function return string stored in given inner node.
[in] | pointer | to the tree |
[in] | node | pointer to node |
[in] | string | pointer on memory where to store string |
char * prefix_tree_read_string | ( | prefix_tree_t * | tree, |
prefix_tree_domain_t * | domain, | ||
char * | string ) |
Read domain from tree Function return string with the domain name.
[in] | pointer | to the tree |
[in] | domain | pointer to domain, which should be returned in string |
[in] | string | pointer on memory where to store string |
void prefix_tree_recursive_plus_domain | ( | prefix_tree_domain_t * | domain_parent, |
prefix_tree_t * | tree ) |
Recursive change info about parent doimains Function actualize information in parent domains.
[in] | domain_parent | domain where to actualize inforamtion |
[in] | tree | pointer to prefix tree |
prefix_tree_domain_t * prefix_tree_search | ( | prefix_tree_t * | tree, |
const char * | string, | ||
int | length ) |
Seacrh domain in prefix tree Function adds domain to the prefix tree.
[in] | tree | pointer to the prefix tree |
[in] | string | string witch should be added |
[in] | length | length of string |
prefix_tree_inner_node_t * prefix_tree_split_node_into_two | ( | prefix_tree_inner_node_t * | node, |
int | index ) |
Split node into two nodes Function splits node into two nodes, on the given position. This function is needed when inserting new node, which has coomon part of string with some node.
[in] | node | node which will be splitted |
[in] | index | position in string (where to split the node) |