diff options
author | Ivan Nardi <12729895+IvanNardi@users.noreply.github.com> | 2025-05-19 11:04:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-19 11:04:29 +0200 |
commit | df7a18e6b32ac5f32611c2bd3c40f62d7344129c (patch) | |
tree | 79cc5f55277d285108b18ab445ea85fc151c44fe /src/lib/ndpi_main.c | |
parent | 38be52583a25cd4bf6e16e8a38e597abcaf11183 (diff) |
Fix classification when non tcp/udp protocols are disabled (#2824)
Diffstat (limited to 'src/lib/ndpi_main.c')
-rw-r--r-- | src/lib/ndpi_main.c | 50 |
1 files changed, 38 insertions, 12 deletions
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c index fedf8b45d..d9b353b5c 100644 --- a/src/lib/ndpi_main.c +++ b/src/lib/ndpi_main.c @@ -4584,32 +4584,58 @@ static u_int16_t guess_protocol_id(struct ndpi_detection_module_struct *ndpi_str } else { /* No TCP/UDP */ + /* All these calls to `is_proto_enabled()` are needed to avoid classification by-port + if the protocol is disabled */ switch(proto) { case NDPI_IPSEC_PROTOCOL_ESP: case NDPI_IPSEC_PROTOCOL_AH: - return(NDPI_PROTOCOL_IPSEC); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IPSEC)) + return(NDPI_PROTOCOL_IPSEC); + break; case NDPI_GRE_PROTOCOL_TYPE: - return(NDPI_PROTOCOL_IP_GRE); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IPSEC)) + return(NDPI_PROTOCOL_IP_GRE); + break; case NDPI_PGM_PROTOCOL_TYPE: - return(NDPI_PROTOCOL_IP_PGM); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IP_PGM)) + return(NDPI_PROTOCOL_IP_PGM); + break; case NDPI_PIM_PROTOCOL_TYPE: - return(NDPI_PROTOCOL_IP_PIM); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IP_PIM)) + return(NDPI_PROTOCOL_IP_PIM); + break; case NDPI_ICMP_PROTOCOL_TYPE: - return(NDPI_PROTOCOL_IP_ICMP); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IP_ICMP)) + return(NDPI_PROTOCOL_IP_ICMP); + break; case NDPI_IGMP_PROTOCOL_TYPE: - return(NDPI_PROTOCOL_IP_IGMP); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IP_IGMP)) + return(NDPI_PROTOCOL_IP_IGMP); + break; case NDPI_EGP_PROTOCOL_TYPE: - return(NDPI_PROTOCOL_IP_EGP); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IP_EGP)) + return(NDPI_PROTOCOL_IP_EGP); + break; case NDPI_SCTP_PROTOCOL_TYPE: - return(NDPI_PROTOCOL_IP_SCTP); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IP_SCTP)) + return(NDPI_PROTOCOL_IP_SCTP); + break; case NDPI_OSPF_PROTOCOL_TYPE: - return(NDPI_PROTOCOL_IP_OSPF); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IP_OSPF)) + return(NDPI_PROTOCOL_IP_OSPF); + break; case NDPI_IPIP_PROTOCOL_TYPE: - return(NDPI_PROTOCOL_IP_IP_IN_IP); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IP_IP_IN_IP)) + return(NDPI_PROTOCOL_IP_IP_IN_IP); + break; case NDPI_ICMPV6_PROTOCOL_TYPE: - return(NDPI_PROTOCOL_IP_ICMPV6); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IP_ICMPV6)) + return(NDPI_PROTOCOL_IP_ICMPV6); + break; case NDPI_VRRP_PROTOCOL_TYPE: - return(NDPI_PROTOCOL_IP_VRRP); + if(is_proto_enabled(ndpi_str, NDPI_PROTOCOL_IP_VRRP)) + return(NDPI_PROTOCOL_IP_VRRP); + break; } } |