diff options
author | aouinizied <aouinizied@gmail.com> | 2022-03-22 13:19:27 +0100 |
---|---|---|
committer | aouinizied <aouinizied@gmail.com> | 2022-03-22 13:19:27 +0100 |
commit | beef4f997bccc90c545abdf8d387bab600b4af8f (patch) | |
tree | 71a608cc34d1b727f2e408033e3d04f480399eb9 /src/include | |
parent | 93f723d50f789530ca09dd9c5104e629824e30f4 (diff) |
Complete rework of nDPI Python bindings (cffi API, automatic generation, packaging and CI integration)
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/ndpi_typedefs.h | 56 | ||||
-rw-r--r-- | src/include/ndpi_utils.h | 3 |
2 files changed, 40 insertions, 19 deletions
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h index 6aa612331..4b0222f6b 100644 --- a/src/include/ndpi_typedefs.h +++ b/src/include/ndpi_typedefs.h @@ -61,7 +61,6 @@ typedef enum { - nDPI/wireshark/ndpi.lua - ndpi_risk2str (in ndpi_utils.c) - doc/flow_risks.rst - - ndpi_risk_enum (in python/ndpi.py) - ndpi_known_risks (ndpi_main.c) To make sure the risk is also seen by ntopng: @@ -170,7 +169,12 @@ typedef struct node_t { /* NDPI_MASK_SIZE */ typedef u_int32_t ndpi_ndpi_mask; + /* NDPI_PROTO_BITMASK_STRUCT */ +#ifdef NDPI_CFFI_PREPROCESSING +#define NDPI_NUM_FDS_BITS 16 +#endif + typedef struct ndpi_protocol_bitmask_struct { ndpi_ndpi_mask fds_bits[NDPI_NUM_FDS_BITS]; } ndpi_protocol_bitmask_struct_t; @@ -181,6 +185,7 @@ typedef void (*ndpi_debug_function_ptr) (u_int32_t protocol, void *module_struct const char *func, unsigned line, const char *format, ...); +#ifndef NDPI_CFFI_PREPROCESSING_EXCLUDE_PACKED /* ************************************************************ */ /* ******************* NDPI NETWORKS HEADERS ****************** */ /* ************************************************************ */ @@ -198,6 +203,13 @@ typedef void (*ndpi_debug_function_ptr) (u_int32_t protocol, void *module_struct #define PACK_OFF __attribute__((packed)) #endif +/* PLEASE DO NOT REMOVE OR CHANGE THE ORDER OF WHAT IS DELIMITED BY CFFI.NDPI_PACKED_STRUCTURES FLAG AS IT IS USED FOR + PYTHON BINDINGS AUTO GENERATION */ +#ifdef NDPI_CFFI_PREPROCESSING +#define PACK_ON +#define PACK_OFF +#endif +//CFFI.NDPI_PACKED_STRUCTURES PACK_ON struct ndpi_chdlc { @@ -435,12 +447,6 @@ struct ndpi_dns_packet_header { u_int16_t additional_rrs; } PACK_OFF; -typedef union -{ - u_int32_t ipv4; - struct ndpi_in6_addr ipv6; -} ndpi_ip_addr_t; - /* +++++++++++++++++++++++ ICMP header +++++++++++++++++++++++ */ @@ -490,6 +496,22 @@ struct ndpi_vxlanhdr { /* ******************* ********************* ****************** */ /* ************************************************************ */ +PACK_ON struct tinc_cache_entry { + u_int32_t src_address; + u_int32_t dst_address; + u_int16_t dst_port; +} PACK_OFF; +//CFFI.NDPI_PACKED_STRUCTURES +#endif // NDPI_CFFI_PREPROCESSING_EXCLUDE_PACKED + + +typedef union +{ + u_int32_t ipv4; + struct ndpi_in6_addr ipv6; +} ndpi_ip_addr_t; + + typedef struct message { u_int8_t *buffer; u_int buffer_len, buffer_used; @@ -499,12 +521,6 @@ typedef struct message { /* NDPI_PROTOCOL_TINC */ #define TINC_CACHE_MAX_SIZE 10 -PACK_ON struct tinc_cache_entry { - u_int32_t src_address; - u_int32_t dst_address; - u_int16_t dst_port; -} PACK_OFF; - /* In case the typedef below is modified, please update ndpi_http_method2str (ndpi_utils.c) @@ -968,6 +984,9 @@ typedef struct ndpi_proto { #define _NDPI_CONFIG_H_ #endif +/* PLEASE DO NOT REMOVE OR CHANGE THE ORDER OF WHAT IS DELIMITED BY CFFI.NDPI_MODULE_STRUCT FLAG AS IT IS USED FOR + PYTHON BINDINGS AUTO GENERATION */ +//CFFI.NDPI_MODULE_STRUCT typedef enum { ndpi_stun_cache, ndpi_hangout_cache @@ -1096,6 +1115,7 @@ struct ndpi_detection_module_struct { }; #endif /* NDPI_LIB_COMPILATION */ +//CFFI.NDPI_MODULE_STRUCT typedef enum { ndpi_cipher_safe = NDPI_CIPHER_SAFE, @@ -1113,11 +1133,7 @@ struct tls_heuristics { u_int8_t is_safari_tls:1, is_firefox_tls:1, is_chrome_tls:1, notused:5; }; -/* - NOTE - When the struct below is modified don't forget to update - - ndpi_flow_struct (in python/ndpi.py) - */ + struct ndpi_flow_struct { u_int16_t detected_protocol_stack[NDPI_PROTOCOL_SIZE]; @@ -1473,7 +1489,11 @@ typedef struct { #define ndpi_private_deserializer ndpi_private_serializer +#ifdef NDPI_CFFI_PREPROCESSING +typedef struct { char c[72]; } ndpi_serializer; +#else typedef struct { char c[sizeof(ndpi_private_serializer)]; } ndpi_serializer; +#endif #define ndpi_deserializer ndpi_serializer diff --git a/src/include/ndpi_utils.h b/src/include/ndpi_utils.h index 6ba83b4da..d6596ae1f 100644 --- a/src/include/ndpi_utils.h +++ b/src/include/ndpi_utils.h @@ -12,12 +12,13 @@ // #define NDPI_ENABLE_DEBUG_INFO_MESSAGES // #define NDPI_ENABLE_DEBUG_TRACE_MESSAGES +#ifndef NDPI_CFFI_PREPROCESSING extern void printRawData(const uint8_t *ptr, size_t len); //extern uint8_t add_segment_to_buffer( struct ndpi_flow_struct *flow, struct ndpi_tcphdr const * tcph, uint32_t waited); //extern uint8_t check_for_sequence( struct ndpi_flow_struct *flow, struct ndpi_tcphdr const * tcph); extern u_int8_t ndpi_ends_with(char *str, char *ends); - +#endif // NDPI_CFFI_PREPROCESSING /* **************************************** */ /* Can't call libc functions from kernel space, define some stub instead */ |