aboutsummaryrefslogtreecommitdiff
path: root/src/lib/protocols/openvpn.c
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2019-06-21 12:14:57 +0200
committerLuca Deri <deri@ntop.org>2019-06-21 12:14:57 +0200
commit179b93d625f7f7f597329d2ffb322c19da5d7958 (patch)
tree1402d0b626187216724037a4fbc53c40db1eeefd /src/lib/protocols/openvpn.c
parent3e43e77b1c55aeb90f7050d6ec22bfdc50a45203 (diff)
Better UDP flow handling
Diffstat (limited to 'src/lib/protocols/openvpn.c')
1 files changed, 13 insertions, 7 deletions
diff --git a/src/lib/protocols/openvpn.c b/src/lib/protocols/openvpn.c
index 000d4a7da..b92eb5cf7 100644
--- a/src/lib/protocols/openvpn.c
+++ b/src/lib/protocols/openvpn.c
@@ -89,18 +89,24 @@ void ndpi_search_openvpn(struct ndpi_detection_module_struct* ndpi_struct,
if(packet->udp) {
#ifdef DEBUG
- printf("[opcode: %u][Packet ID: %d][%u <-> %u][len: %u]\n", opcode, check_pkid_and_detect_hmac_size(ovpn_payload),
+ printf("[packet_id: %u][opcode: %u][Packet ID: %d][%u <-> %u][len: %u]\n",
+ flow->num_processed_pkts,
+ opcode, check_pkid_and_detect_hmac_size(ovpn_payload),
htons(packet->udp->source), htons(packet->udp->dest), packet->payload_packet_len);
#endif
if(
- ((packet->payload_packet_len == 112) && (opcode == 168))
- || ((packet->payload_packet_len == 80)
- && ((opcode == 184) || (opcode == 88) || (opcode == 160) || (opcode == 168)))
- ) {
+ (flow->num_processed_pkts == 1)
+ && (
+ ((packet->payload_packet_len == 112)
+ && ((opcode == 168) || (opcode == 192))
+ )
+ || ((packet->payload_packet_len == 80)
+ && ((opcode == 184) || (opcode == 88) || (opcode == 160) || (opcode == 168) || (opcode == 200)))
+ )) {
NDPI_LOG_INFO(ndpi_struct,"found openvpn\n");
- ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_OPENVPN, NDPI_PROTOCOL_UNKNOWN);
- return;
+ ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_OPENVPN, NDPI_PROTOCOL_UNKNOWN);
+ return;
}
}