diff options
author | Luca Deri <deri@ntop.org> | 2023-09-01 08:50:55 +0200 |
---|---|---|
committer | Luca Deri <deri@ntop.org> | 2023-09-01 08:50:55 +0200 |
commit | 74fdac7d77a933f6b8ef894d1f2fbd3c9052fdcb (patch) | |
tree | 2bd5845aafa769879875b350d99690ab0fb94a73 /src | |
parent | 133f45f3f3c9f8895d87f15b4072dd5dd5c83437 (diff) |
Code cleanup
Diffstat (limited to 'src')
-rw-r--r-- | src/include/ndpi_api.h | 11 | ||||
-rw-r--r-- | src/lib/ndpi_hash.c | 82 | ||||
-rw-r--r-- | src/lib/ndpi_main.c | 12 | ||||
-rw-r--r-- | src/lib/ndpi_utils.c | 22 |
4 files changed, 89 insertions, 38 deletions
diff --git a/src/include/ndpi_api.h b/src/include/ndpi_api.h index fc3b5354c..b17bf83b4 100644 --- a/src/include/ndpi_api.h +++ b/src/include/ndpi_api.h @@ -1193,9 +1193,6 @@ extern "C" { char *ndpi_get_ip_proto_name(u_int16_t ip_proto, char *name, unsigned int name_len); - void ndpi_md5(const u_char *data, size_t data_len, u_char hash[16]); - u_int32_t ndpi_quick_hash(unsigned char *str, u_int str_len); - const char* ndpi_http_method2str(ndpi_http_method m); ndpi_http_method ndpi_http_str2method(const char* method, u_int16_t method_len); @@ -1797,10 +1794,16 @@ extern "C" { /* ******************************* */ + void ndpi_md5(const u_char *data, size_t data_len, u_char hash[16]); u_int32_t ndpi_crc32(const void* data, size_t n_bytes); u_int32_t ndpi_nearest_power_of_two(u_int32_t x); + + /* ******************************* */ + + u_int32_t ndpi_quick_hash(unsigned char *str, u_int str_len); u_int32_t ndpi_hash_string(char *str); - + u_int32_t ndpi_hash_string_len(char *str, u_int len); + /* ******************************* */ int ndpi_des_init(struct ndpi_des_struct *des, double alpha, double beta, float significance); diff --git a/src/lib/ndpi_hash.c b/src/lib/ndpi_hash.c new file mode 100644 index 000000000..4595368ef --- /dev/null +++ b/src/lib/ndpi_hash.c @@ -0,0 +1,82 @@ +/* + * ndpi_bitmap.c + * + * Copyright (C) 2011-23 - ntop.org and contributors + * + * This file is part of nDPI, an open source deep packet inspection + * library based on the OpenDPI and PACE technology by ipoque GmbH + * + * nDPI is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * nDPI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with nDPI. If not, see <http://www.gnu.org/licenses/>. + * + */ + + +#include "ndpi_config.h" +#include "ndpi_api.h" + +/* ******************************************************************** */ + +/* Based on djb2 hash - http://www.cse.yorku.ca/~oz/hash.html */ +u_int32_t ndpi_quick_hash(unsigned char *str, u_int str_len) { + u_int32_t hash = 5381, i; + + for(i=0; i<str_len; i++) + hash = ((hash << 5) + hash) + str[i]; /* hash * 33 + str[i] */ + + return(hash); +} + +/* ******************************************************************** */ + +/* + https://en.wikipedia.org/wiki/Jenkins_hash_function + + See also http://burtleburtle.net/bob/hash/spooky.html +*/ +u_int32_t ndpi_hash_string(char *str) { + u_int32_t hash, i; + + for(hash = i = 0; str[i] != '\0'; ++i) { + hash += str[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + + return(hash); +} + +/* ******************************************************************** */ + +/* Same as above but with strings with lenght */ +u_int32_t ndpi_hash_string_len(char *str, u_int len) { + u_int32_t hash, i; + + for(hash = i = 0; i< len; ++i) { + hash += str[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + + return(hash); +} + + diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c index f629e0411..8b1c01ae5 100644 --- a/src/lib/ndpi_main.c +++ b/src/lib/ndpi_main.c @@ -9602,18 +9602,6 @@ int ndpi_ptree_match_addr(ndpi_ptree_t *tree, /* ******************************************************************** */ -/* Based on djb2 hash - http://www.cse.yorku.ca/~oz/hash.html */ -u_int32_t ndpi_quick_hash(unsigned char *str, u_int str_len) { - u_int32_t hash = 5381, i; - - for(i=0; i<str_len; i++) - hash = ((hash << 5) + hash) + str[i]; /* hash * 33 + str[i] */ - - return hash; -} - -/* ******************************************************************** */ - void ndpi_md5(const u_char *data, size_t data_len, u_char hash[16]) { ndpi_MD5_CTX ctx; diff --git a/src/lib/ndpi_utils.c b/src/lib/ndpi_utils.c index c62d82edf..b58fce522 100644 --- a/src/lib/ndpi_utils.c +++ b/src/lib/ndpi_utils.c @@ -3007,25 +3007,3 @@ u_int32_t ndpi_nearest_power_of_two(u_int32_t x) { return(x); } -/* ********************************************************** */ - -/* - https://en.wikipedia.org/wiki/Jenkins_hash_function - - See also http://burtleburtle.net/bob/hash/spooky.html -*/ -u_int32_t ndpi_hash_string(char *str) { - u_int32_t hash, i; - - for(hash = i = 0; str[i] != '\0'; ++i) { - hash += str[i]; - hash += (hash << 10); - hash ^= (hash >> 6); - } - - hash += (hash << 3); - hash ^= (hash >> 11); - hash += (hash << 15); - - return(hash); -} |