aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2017-09-17 23:34:46 +0200
committerLuca Deri <deri@ntop.org>2017-09-17 23:34:46 +0200
commit1a4e57e7366685e5ece5ed8576155c5e7c934efb (patch)
tree15df4a8d06bec120e0f68afa3fa57a564725238e /src
parentd6f7dd9c08b8abcaa964f19c3f34c24ed2c558cd (diff)
Code rework
Diffstat (limited to 'src')
-rw-r--r--src/include/ndpi_typedefs.h26
-rw-r--r--src/lib/protocols/bittorrent.c4
-rw-r--r--src/lib/protocols/dhcp.c6
-rw-r--r--src/lib/protocols/http.c8
4 files changed, 26 insertions, 18 deletions
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h
index 55c056bfb..58cb8263d 100644
--- a/src/include/ndpi_typedefs.h
+++ b/src/include/ndpi_typedefs.h
@@ -908,8 +908,6 @@ struct ndpi_detection_module_struct {
direction_detect_disable:1; /* disable internal detection of packet direction */
};
-#define dhcp_fingerprint host_server_name
-
struct ndpi_flow_struct {
u_int16_t detected_protocol_stack[NDPI_PROTOCOL_SIZE];
#ifndef WIN32
@@ -948,13 +946,7 @@ struct ndpi_flow_struct {
*/
struct ndpi_id_struct *server_id;
/* HTTP host or DNS query */
- u_char host_server_name[256]; /* Shared with dhcp_fingerprint */
- /* Via HTTP User-Agent */
- u_char detected_os[32];
- /* Via HTTP X-Forwarded-For */
- u_char nat_ip[24];
- /* Bittorrent hash */
- u_char bittorent_hash[20];
+ u_char host_server_name[256];
/*
This structure below will not not stay inside the protos
@@ -998,6 +990,22 @@ struct ndpi_flow_struct {
struct {
char version[96];
} ubntac2;
+
+ struct {
+ /* Via HTTP User-Agent */
+ u_char detected_os[32];
+ /* Via HTTP X-Forwarded-For */
+ u_char nat_ip[24];
+ } http;
+
+ struct {
+ /* Bittorrent hash */
+ u_char hash[20];
+ } bittorrent;
+
+ struct {
+ char fingerprint[48];
+ } dhcp;
} protos;
/*** ALL protocol specific 64 bit variables here ***/
diff --git a/src/lib/protocols/bittorrent.c b/src/lib/protocols/bittorrent.c
index e7a5e890a..a3eef585c 100644
--- a/src/lib/protocols/bittorrent.c
+++ b/src/lib/protocols/bittorrent.c
@@ -67,7 +67,7 @@ static void ndpi_add_connection_as_bittorrent(struct ndpi_detection_module_struc
} else
bt_hash = (const char*)&flow->packet.payload[28];
- if(bt_hash) memcpy(flow->bittorent_hash, bt_hash, 20);
+ if(bt_hash) memcpy(flow->protos.bittorrent.hash, bt_hash, 20);
}
ndpi_int_change_protocol(ndpi_struct, flow, NDPI_PROTOCOL_BITTORRENT, NDPI_PROTOCOL_UNKNOWN);
@@ -479,7 +479,7 @@ void ndpi_search_bittorrent(struct ndpi_detection_module_struct *ndpi_struct, st
) {
bittorrent_found:
if(bt_proto && (packet->payload_packet_len > 47))
- memcpy(flow->bittorent_hash, &bt_proto[27], 20);
+ memcpy(flow->protos.bittorrent.hash, &bt_proto[27], 20);
NDPI_LOG(NDPI_PROTOCOL_BITTORRENT,
ndpi_struct, NDPI_LOG_TRACE, "BT: plain BitTorrent protocol detected\n");
diff --git a/src/lib/protocols/dhcp.c b/src/lib/protocols/dhcp.c
index ee5b12834..cdf33947e 100644
--- a/src/lib/protocols/dhcp.c
+++ b/src/lib/protocols/dhcp.c
@@ -96,11 +96,11 @@ void ndpi_search_dhcp_udp(struct ndpi_detection_module_struct *ndpi_struct, stru
if(msg_type <= 8) foundValidMsgType = 1;
} else if(id == 55 /* Parameter Request List / Fingerprint */) {
u_int idx, offset = 0,
- hex_len = ndpi_min(len * 2, sizeof(flow->dhcp_fingerprint));
+ hex_len = ndpi_min(len * 2, sizeof(flow->protos.dhcp.fingerprint));
for(idx=0; idx<len; idx++) {
- snprintf((char*)&flow->dhcp_fingerprint[offset],
- sizeof(flow->dhcp_fingerprint)-offset-1,
+ snprintf((char*)&flow->protos.dhcp.fingerprint[offset],
+ sizeof(flow->protos.dhcp.fingerprint)-offset-1,
"%02X", dhcp->options[i+2+idx] & 0xFF);
offset += 2;
}
diff --git a/src/lib/protocols/http.c b/src/lib/protocols/http.c
index 3fd304867..4ff65096b 100644
--- a/src/lib/protocols/http.c
+++ b/src/lib/protocols/http.c
@@ -167,7 +167,7 @@ static void setHttpUserAgent(struct ndpi_flow_struct *flow, char *ua) {
* https://github.com/ua-parser/uap-core/blob/master/regexes.yaml */
//printf("==> %s\n", ua);
- snprintf((char*)flow->detected_os, sizeof(flow->detected_os), "%s", ua);
+ snprintf((char*)flow->protos.http.detected_os, sizeof(flow->protos.http.detected_os), "%s", ua);
}
static void parseHttpSubprotocol(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow) {
@@ -360,9 +360,9 @@ static void check_content_type_and_change_protocol(struct ndpi_detection_module_
strncpy((char*)flow->host_server_name, (char*)packet->host_line.ptr, len);
flow->host_server_name[len] = '\0', flow->server_id = flow->dst;
- len = ndpi_min(packet->forwarded_line.len, sizeof(flow->nat_ip)-1);
- strncpy((char*)flow->nat_ip, (char*)packet->forwarded_line.ptr, len);
- flow->nat_ip[len] = '\0';
+ len = ndpi_min(packet->forwarded_line.len, sizeof(flow->protos.http.nat_ip)-1);
+ strncpy((char*)flow->protos.http.nat_ip, (char*)packet->forwarded_line.ptr, len);
+ flow->protos.http.nat_ip[len] = '\0';
if(ndpi_struct->http_dont_dissect_response)
parseHttpSubprotocol(ndpi_struct, flow);