diff options
author | Ivan Nardi <12729895+IvanNardi@users.noreply.github.com> | 2025-05-24 13:17:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-24 13:17:46 +0200 |
commit | 78f4b60efef27b358b160252b157482d71dbf430 (patch) | |
tree | 11c43b8e4665b8a9dac1ea4b46f1407f95240149 /src/lib/protocols/haproxy.c | |
parent | c1d372860253e32e6100a3f2c3826f0c50f9116e (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/haproxy.c')
-rw-r--r-- | src/lib/protocols/haproxy.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/lib/protocols/haproxy.c b/src/lib/protocols/haproxy.c index 76d9c9f79..63d1d63b0 100644 --- a/src/lib/protocols/haproxy.c +++ b/src/lib/protocols/haproxy.c @@ -39,13 +39,13 @@ static void ndpi_search_haproxy(struct ndpi_detection_module_struct *ndpi_struct if (packet->payload_packet_len < NDPI_STATICSTRING_LEN("PROXY TCP")) { - NDPI_EXCLUDE_PROTO(ndpi_struct, flow); + NDPI_EXCLUDE_DISSECTOR(ndpi_struct, flow); return; } if (strncmp((char *)packet->payload, "PROXY TCP", NDPI_STATICSTRING_LEN("PROXY TCP")) != 0) { - NDPI_EXCLUDE_PROTO(ndpi_struct, flow); + NDPI_EXCLUDE_DISSECTOR(ndpi_struct, flow); return; } @@ -53,13 +53,13 @@ static void ndpi_search_haproxy(struct ndpi_detection_module_struct *ndpi_struct haproxy_end = (uint8_t *)ndpi_strnstr((char *)packet->payload, "\r\n", packet->payload_packet_len); if (haproxy_end == NULL) { - NDPI_EXCLUDE_PROTO(ndpi_struct, flow); + NDPI_EXCLUDE_DISSECTOR(ndpi_struct, flow); return; } haproxy_end += 2; if (packet->payload_packet_len - (haproxy_end - packet->payload) == 0) { - NDPI_EXCLUDE_PROTO(ndpi_struct, flow); + NDPI_EXCLUDE_DISSECTOR(ndpi_struct, flow); return; } @@ -68,10 +68,8 @@ static void ndpi_search_haproxy(struct ndpi_detection_module_struct *ndpi_struct void init_haproxy_dissector(struct ndpi_detection_module_struct *ndpi_struct) { - ndpi_set_bitmask_protocol_detection("HAProxy", ndpi_struct, - NDPI_PROTOCOL_HAPROXY, - ndpi_search_haproxy, - NDPI_SELECTION_BITMASK_PROTOCOL_V4_V6_TCP_WITH_PAYLOAD_WITHOUT_RETRANSMISSION, - SAVE_DETECTION_BITMASK_AS_UNKNOWN, - ADD_TO_DETECTION_BITMASK); + register_dissector("HAProxy", ndpi_struct, + ndpi_search_haproxy, + NDPI_SELECTION_BITMASK_PROTOCOL_V4_V6_TCP_WITH_PAYLOAD_WITHOUT_RETRANSMISSION, + 1, NDPI_PROTOCOL_HAPROXY); } |