aboutsummaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/ndpi_main.h18
-rw-r--r--src/include/ndpi_typedefs.h23
2 files changed, 29 insertions, 12 deletions
diff --git a/src/include/ndpi_main.h b/src/include/ndpi_main.h
index dc5b0fdeb..db637ca66 100644
--- a/src/include/ndpi_main.h
+++ b/src/include/ndpi_main.h
@@ -31,6 +31,10 @@
#include "ndpi_api.h"
#include "ndpi_protocols.h"
+/* used by ndpi_set_proto_subprotocols */
+#define NDPI_PROTOCOL_NO_MORE_SUBPROTOCOLS (-1)
+#define NDPI_PROTOCOL_MATCHED_BY_CONTENT (-2)
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -95,11 +99,11 @@ extern "C" {
struct ndpi_flow_struct *flow,
ndpi_protocol_category_t protocol_category);
+ extern void ndpi_set_proto_subprotocols(struct ndpi_detection_module_struct *ndpi_mod,
+ int protoId, ...);
+
extern void ndpi_set_proto_defaults(struct ndpi_detection_module_struct *ndpi_mod,
- ndpi_protocol_breed_t protoBreed, u_int16_t protoId,
- u_int8_t can_have_a_subprotocol,
- u_int16_t tcp_alias_protoId[2],
- u_int16_t udp_alias_protoId[2], char *protoName,
+ ndpi_protocol_breed_t protoBreed, u_int16_t protoId, char *protoName,
ndpi_protocol_category_t protoCategory,
ndpi_port_range *tcpDefPorts,
ndpi_port_range *udpDefPorts);
@@ -127,11 +131,7 @@ extern "C" {
extern u_int8_t ndpi_is_proto(ndpi_protocol proto, u_int16_t p);
extern u_int16_t ndpi_get_lower_proto(ndpi_protocol p);
- extern int ndpi_get_protocol_id_master_proto(struct ndpi_detection_module_struct *ndpi_struct,
- u_int16_t protocol_id,
- u_int16_t** tcp_master_proto,
- u_int16_t** udp_master_proto);
- #/* NDPI_PROTOCOL_NETBIOS */
+ /* NDPI_PROTOCOL_NETBIOS */
int ndpi_netbios_name_interpret(char *in, size_t inlen, char *out, u_int out_len);
#ifdef NDPI_ENABLE_DEBUG_MESSAGES
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h
index 51a2beb61..da27e432b 100644
--- a/src/include/ndpi_typedefs.h
+++ b/src/include/ndpi_typedefs.h
@@ -809,6 +809,24 @@ struct ndpi_flow_udp_struct {
/* ************************************************** */
+#define LINE_EQUALS(ndpi_int_one_line_struct, string_to_compare) \
+ ((ndpi_int_one_line_struct).len == strlen(string_to_compare) && \
+ LINE_CMP(ndpi_int_one_line_struct, string_to_compare, strlen(string_to_compare)) == 1)
+
+#define LINE_STARTS(ndpi_int_one_line_struct, string_to_compare) \
+ ((ndpi_int_one_line_struct).len >= strlen(string_to_compare) && \
+ LINE_CMP(ndpi_int_one_line_struct, string_to_compare, strlen(string_to_compare)) == 1)
+
+#define LINE_ENDS(ndpi_int_one_line_struct, string_to_compare) \
+ ((ndpi_int_one_line_struct).len >= strlen(string_to_compare) && \
+ memcmp((ndpi_int_one_line_struct).ptr + \
+ ((ndpi_int_one_line_struct).len - strlen(string_to_compare)), \
+ string_to_compare, strlen(string_to_compare)) == 0)
+
+#define LINE_CMP(ndpi_int_one_line_struct, string_to_compare, string_to_compare_length) \
+ ((ndpi_int_one_line_struct).ptr != NULL && \
+ memcmp((ndpi_int_one_line_struct).ptr, string_to_compare, string_to_compare_length) == 0)
+
struct ndpi_int_one_line_struct {
const u_int8_t *ptr;
u_int16_t len;
@@ -825,7 +843,6 @@ struct ndpi_packet_struct {
u_int64_t current_time_ms;
u_int16_t detected_protocol_stack[NDPI_PROTOCOL_SIZE];
- u_int8_t detected_subprotocol_stack[NDPI_PROTOCOL_SIZE];
u_int16_t protocol_stack_info;
struct ndpi_int_one_line_struct line[NDPI_MAX_PARSE_LINES_PER_PACKET];
@@ -987,9 +1004,9 @@ typedef enum {
typedef struct ndpi_proto_defaults {
char *protoName;
ndpi_protocol_category_t protoCategory;
- u_int8_t can_have_a_subprotocol;
+ u_int16_t * subprotocols;
+ u_int32_t subprotocol_count;
u_int16_t protoId, protoIdx;
- u_int16_t master_tcp_protoId[2], master_udp_protoId[2]; /* The main protocols on which this sub-protocol sits on */
u_int16_t tcp_default_ports[MAX_DEFAULT_PORTS], udp_default_ports[MAX_DEFAULT_PORTS];
ndpi_protocol_breed_t protoBreed;
void (*func) (struct ndpi_detection_module_struct *, struct ndpi_flow_struct *flow);