aboutsummaryrefslogtreecommitdiff
path: root/src/lib/protocols/smpp.c
diff options
context:
space:
mode:
authordillinger79 <dxnanos@gmail.com>2018-03-01 14:13:50 +0200
committerGitHub <noreply@github.com>2018-03-01 14:13:50 +0200
commitb19cd086b41ed17217537664b10b29a7055e3f72 (patch)
tree9eb61225d2b9f2962f553888cdc1cbe86b93396d /src/lib/protocols/smpp.c
parent9f8fedb3b1f3e1a380baf1600a12096aaf2e2953 (diff)
parente935ee77bf1802f2bf47afd5d7a27eb1b5116c47 (diff)
Merge pull request #3 from ntop/dev
update to latest
Diffstat (limited to 'src/lib/protocols/smpp.c')
-rw-r--r--src/lib/protocols/smpp.c51
1 files changed, 22 insertions, 29 deletions
diff --git a/src/lib/protocols/smpp.c b/src/lib/protocols/smpp.c
index d6d898893..1bd2a870b 100644
--- a/src/lib/protocols/smpp.c
+++ b/src/lib/protocols/smpp.c
@@ -20,10 +20,14 @@
*/
-#include "ndpi_protocols.h"
+#include "ndpi_protocol_ids.h"
#ifdef NDPI_PROTOCOL_SMPP
+#define NDPI_CURRENT_PROTO NDPI_PROTOCOL_SMPP
+
+#include "ndpi_api.h"
+
static void ndpi_int_smpp_add_connection(struct ndpi_detection_module_struct* ndpi_struct,
struct ndpi_flow_struct* flow)
@@ -31,36 +35,32 @@ static void ndpi_int_smpp_add_connection(struct ndpi_detection_module_struct* nd
ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_SMPP, NDPI_PROTOCOL_UNKNOWN);
}
-static u_int8_t ndpi_check_overflow(u_int32_t current_legth, u_int32_t total_lenth)
+static u_int8_t ndpi_check_overflow(u_int32_t current_length, u_int32_t total_lenth)
{
- return (current_legth > 0 && current_legth > INT_MAX - total_lenth);
+ return (current_length > 0 && current_length > INT_MAX - total_lenth);
}
void ndpi_search_smpp_tcp(struct ndpi_detection_module_struct* ndpi_struct,
struct ndpi_flow_struct* flow)
{
- NDPI_LOG(NDPI_PROTOCOL_SMPP, ndpi_struct, NDPI_LOG_DEBUG, "SMPP protocol detection...\n");
+ NDPI_LOG_DBG(ndpi_struct, "search SMPP\n");
if (flow->packet.detected_protocol_stack[0] != NDPI_PROTOCOL_SMPP){
struct ndpi_packet_struct* packet = &flow->packet;
// min SMPP packet length = 16 bytes
if (packet->payload_packet_len < 16) {
- NDPI_LOG(NDPI_PROTOCOL_SMPP, ndpi_struct, NDPI_LOG_DEBUG, "SMPP excluded\n");
- NDPI_ADD_PROTOCOL_TO_BITMASK(flow->excluded_protocol_bitmask, NDPI_PROTOCOL_SMPP);
+ NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
return;
}
// get PDU length
u_int32_t pdu_l = ntohl(get_u_int32_t(packet->payload, 0));
- NDPI_LOG(NDPI_PROTOCOL_SMPP,
- ndpi_struct,
- NDPI_LOG_DEBUG,
+ NDPI_LOG_DBG2(ndpi_struct,
"calculated PDU Length: %d, received PDU Length: %d\n",
pdu_l, packet->payload_packet_len);
// if PDU size was invalid, try the following TCP segments, 3 attempts max
if(flow->packet_counter > 3) {
- NDPI_LOG(NDPI_PROTOCOL_SMPP, ndpi_struct, NDPI_LOG_DEBUG, "SMPP excluded\n");
- NDPI_ADD_PROTOCOL_TO_BITMASK(flow->excluded_protocol_bitmask, NDPI_PROTOCOL_SMPP);
+ NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
return;
}
// verify PDU length
@@ -81,9 +81,7 @@ void ndpi_search_smpp_tcp(struct ndpi_detection_module_struct* ndpi_struct,
++pdu_c;
}
- NDPI_LOG(NDPI_PROTOCOL_SMPP,
- ndpi_struct,
- NDPI_LOG_DEBUG,
+ NDPI_LOG_DBG2(ndpi_struct,
"multiple PDUs included, calculated total PDU Length: %d, PDU count: %d, TCP payload length: %d\n",
total_pdu_l, pdu_c, packet->payload_packet_len);
@@ -98,8 +96,7 @@ void ndpi_search_smpp_tcp(struct ndpi_detection_module_struct* ndpi_struct,
u_int32_t pdu_type = ntohl(get_u_int32_t(packet->payload, 4));
// first byte of PDU type is either 0x00 of 0x80
if(!(packet->payload[4] == 0x00 || packet->payload[4] == 0x80)) {
- NDPI_LOG(NDPI_PROTOCOL_SMPP, ndpi_struct, NDPI_LOG_DEBUG, "SMPP excluded\n");
- NDPI_ADD_PROTOCOL_TO_BITMASK(flow->excluded_protocol_bitmask, NDPI_PROTOCOL_SMPP);
+ NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
return;
}
// remove 0x80, get request type pdu
@@ -110,9 +107,7 @@ void ndpi_search_smpp_tcp(struct ndpi_detection_module_struct* ndpi_struct,
pdu_req == 0x00000021 || pdu_req == 0x00000102 ||
pdu_req == 0x00000103)){
- NDPI_LOG(NDPI_PROTOCOL_SMPP,
- ndpi_struct,
- NDPI_LOG_DEBUG,
+ NDPI_LOG_DBG2(ndpi_struct,
"PDU type: %x, Request PDU type = %x\n",
pdu_type, pdu_req);
@@ -122,7 +117,7 @@ void ndpi_search_smpp_tcp(struct ndpi_detection_module_struct* ndpi_struct,
switch(pdu_type){
// GENERIC_NACK
case 0x80000000:
- // body lengh must be zero
+ // body length must be zero
if(pdu_l > 16) extra_passed = 0;
break;
@@ -134,7 +129,7 @@ void ndpi_search_smpp_tcp(struct ndpi_detection_module_struct* ndpi_struct,
case 0x00000009:
// status field must be NULL
if(get_u_int32_t(packet->payload, 8) != 0) extra_passed = 0;
- // min body lengh = 10 bytes (+16 in header)
+ // min body length = 10 bytes (+16 in header)
if(pdu_l < 26) extra_passed = 0;
break;
@@ -160,13 +155,13 @@ void ndpi_search_smpp_tcp(struct ndpi_detection_module_struct* ndpi_struct,
case 0x00000006:
// status field must be NULL
if(get_u_int32_t(packet->payload, 8) != 0) extra_passed = 0;
- // body lengh must be zero
+ // body length must be zero
if(pdu_l > 16) extra_passed = 0;
break;
// UNBIND_RESP
case 0x80000006:
- // body lengh must be zero
+ // body length must be zero
if(pdu_l > 16) extra_passed = 0;
break;
@@ -277,13 +272,13 @@ void ndpi_search_smpp_tcp(struct ndpi_detection_module_struct* ndpi_struct,
case 0x00000015:
// status field must be NULL
if(get_u_int32_t(packet->payload, 8) != 0) extra_passed = 0;
- // body lengh must be zero
+ // body length must be zero
if(pdu_l > 16) extra_passed = 0;
break;
// ENQUIRE_LINK_RESP
case 0x80000015:
- // body lengh must be zero
+ // body length must be zero
if(pdu_l > 16) extra_passed = 0;
break;
@@ -300,15 +295,13 @@ void ndpi_search_smpp_tcp(struct ndpi_detection_module_struct* ndpi_struct,
// if extra checks passed, set as identified
if(extra_passed) {
- NDPI_LOG(NDPI_PROTOCOL_SMPP, ndpi_struct, NDPI_LOG_DEBUG, "SMPP identified...\n");
+ NDPI_LOG_INFO(ndpi_struct, "found SMPP\n");
ndpi_int_smpp_add_connection(ndpi_struct, flow);
return;
}
}
- // exclude
- NDPI_LOG(NDPI_PROTOCOL_SMPP, ndpi_struct, NDPI_LOG_DEBUG, "SMPP excluded\n");
- NDPI_ADD_PROTOCOL_TO_BITMASK(flow->excluded_protocol_bitmask, NDPI_PROTOCOL_SMPP);
+ NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
}
}