aboutsummaryrefslogtreecommitdiff
path: root/src/lib/protocols/memcached.c
diff options
context:
space:
mode:
authorIvan Nardi <12729895+IvanNardi@users.noreply.github.com>2025-05-24 13:17:46 +0200
committerGitHub <noreply@github.com>2025-05-24 13:17:46 +0200
commit78f4b60efef27b358b160252b157482d71dbf430 (patch)
tree11c43b8e4665b8a9dac1ea4b46f1407f95240149 /src/lib/protocols/memcached.c
parentc1d372860253e32e6100a3f2c3826f0c50f9116e (diff)
A new interface for dissectors registration (#2843)
We use `registr_dissector()` instead of `ndpi_set_bitmask_protocol_detection()`. Every file in `src/lib/protocols/*.c` is a dissector. Every dissector can handle multiple protocols. The real goal is this small change: ``` struct call_function_struct { - NDPI_PROTOCOL_BITMASK detection_bitmask; ``` i.e. getting rid of another protocol bitmask: this is mandatory to try to fix #2136 (see also e845e8205b68752c997d05224d8b2fd45acde714) As a nice side effect, we remove a bitmask comparison in the hot function `check_ndpi_detection_func()` TODO: change logging configuration from per-protocol to per-dissector
Diffstat (limited to 'src/lib/protocols/memcached.c')
-rw-r--r--src/lib/protocols/memcached.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/src/lib/protocols/memcached.c b/src/lib/protocols/memcached.c
index 198735340..fcabbd0f7 100644
--- a/src/lib/protocols/memcached.c
+++ b/src/lib/protocols/memcached.c
@@ -112,7 +112,7 @@ static void ndpi_search_memcached(struct ndpi_detection_module_struct *ndpi_stru
if (packet->tcp != NULL) {
if (packet->payload_packet_len < MEMCACHED_MIN_LEN) {
- NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
+ NDPI_EXCLUDE_DISSECTOR(ndpi_struct, flow);
return;
}
@@ -120,13 +120,13 @@ static void ndpi_search_memcached(struct ndpi_detection_module_struct *ndpi_stru
}
else if (packet->udp != NULL) {
if (packet->payload_packet_len < MEMCACHED_MIN_UDP_LEN) {
- NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
+ NDPI_EXCLUDE_DISSECTOR(ndpi_struct, flow);
return;
}
if ((offset[4] == 0x00 && offset[5] == 0x00) ||
offset[6] != 0x00 || offset[7] != 0x00) {
- NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
+ NDPI_EXCLUDE_DISSECTOR(ndpi_struct, flow);
return;
}
@@ -170,17 +170,13 @@ static void ndpi_search_memcached(struct ndpi_detection_module_struct *ndpi_stru
if (*matches >= MEMCACHED_MIN_MATCH)
ndpi_int_memcached_add_connection(ndpi_struct, flow);
else if(flow->packet_counter > 5)
- NDPI_EXCLUDE_PROTO(ndpi_struct, flow);
+ NDPI_EXCLUDE_DISSECTOR(ndpi_struct, flow);
}
-void init_memcached_dissector(
- struct ndpi_detection_module_struct *ndpi_struct)
+void init_memcached_dissector(struct ndpi_detection_module_struct *ndpi_struct)
{
- ndpi_set_bitmask_protocol_detection("MEMCACHED",
- ndpi_struct,
- NDPI_PROTOCOL_MEMCACHED,
- ndpi_search_memcached,
- NDPI_SELECTION_BITMASK_PROTOCOL_V4_V6_TCP_OR_UDP_WITH_PAYLOAD_WITHOUT_RETRANSMISSION,
- SAVE_DETECTION_BITMASK_AS_UNKNOWN,
- ADD_TO_DETECTION_BITMASK);
+ register_dissector("MEMCACHED", ndpi_struct,
+ ndpi_search_memcached,
+ NDPI_SELECTION_BITMASK_PROTOCOL_V4_V6_TCP_OR_UDP_WITH_PAYLOAD_WITHOUT_RETRANSMISSION,
+ 1, NDPI_PROTOCOL_MEMCACHED);
}