27#define FT_API_VERSION 95
29typedef void pfring_ft_table;
30typedef void pfring_ft_list;
31typedef void pfring_ft_flow;
33struct ndpi_detection_module_struct;
34struct ndpi_flow_struct;
38#define PFRING_FT_ACTION_DEFAULT 0
39#define PFRING_FT_ACTION_FORWARD 1
40#define PFRING_FT_ACTION_DISCARD 2
41#define PFRING_FT_ACTION_USER_1 3
42#define PFRING_FT_ACTION_USER_2 4
43#define PFRING_FT_ACTION_SLICE 5
45typedef u_int8_t pfring_ft_action;
50 PF_RING_FT_FLOW_NUM_DIRECTIONS
63#define PF_RING_FT_FLOW_FLAGS_L7_GUESS (1 << 0)
84typedef u_int32_t pfring_ft_in4_addr;
88 u_int8_t u6_addr8[16];
89 u_int16_t u6_addr16[8];
90 u_int32_t u6_addr32[4];
96 u_int8_t ihl:4, version:4;
110 u_int32_t ip6_un1_flow;
111 u_int16_t ip6_un1_plen;
112 u_int8_t ip6_un1_nxt;
113 u_int8_t ip6_un1_hlim;
114 pfring_ft_in6_addr ip6_src;
115 pfring_ft_in6_addr ip6_dst;
124 u_int16_t res1:4, doff:4, fin:1, syn:1, rst:1, psh:1, ack:1, urg:1, ece:1, cwr:1;
158 pfring_ft_action action;
162 u_int16_t payload_len;
165 pfring_ft_iphdr *ip4;
166 pfring_ft_ipv6hdr *ip6;
169 pfring_ft_tcphdr *tcp;
170 pfring_ft_udphdr *udp;
172 const u_char *payload;
178 pfring_ft_in4_addr v4;
179 pfring_ft_in6_addr v6;
203 struct timeval first;
264 u_int32_t num_buffered_records;
265 u_int32_t exported_flows;
266 u_int32_t dropped_flows;
272(*pfring_ft_export_list_func) (
273 pfring_ft_list *flows_list,
278(*pfring_ft_export_flow_func) (
279 pfring_ft_flow *flow,
284(*pfring_ft_flow_packet_func) (
287 pfring_ft_flow *flow,
291#define PFRING_FT_TABLE_FLAGS_DPI (1 << 0)
292#define PFRING_FT_TABLE_FLAGS_DPI_EXTRA (1 << 1)
293#define PFRING_FT_DECODE_TUNNELS (1 << 2)
294#define PFRING_FT_IGNORE_HW_HASH (1 << 3)
295#define PFRING_FT_IGNORE_VLAN (1 << 4)
296#define PFRING_FT_TABLE_FLAGS_NO_GUESS (1 << 5)
311 u_int32_t flow_idle_timeout,
312 u_int32_t flow_lifetime_timeout,
313 u_int32_t user_metadata_size
322 pfring_ft_table *table
333 pfring_ft_table *table,
334 u_int32_t flow_slice_timeout
345 pfring_ft_table *table,
346 pfring_ft_export_flow_func callback,
358 pfring_ft_table *table,
359 pfring_ft_flow_packet_func callback,
371 pfring_ft_table *table,
372 pfring_ft_flow_packet_func callback,
385 pfring_ft_table *table,
386 pfring_ft_export_flow_func callback,
401 pfring_ft_table *table,
402 pfring_ft_export_list_func callback,
417 pfring_ft_table *table,
418 const u_char *packet,
432 pfring_ft_table *table,
442 pfring_ft_table *table
490struct ndpi_flow_struct *
502 pfring_ft_flow *flow,
503 pfring_ft_action action
547 pfring_ft_table *table,
548 const char *endpoint,
549 const char *server_public_key,
551 u_int8_t disable_compression,
566 pfring_ft_flow *flow,
580 pfring_ft_table *table,
584 const char *management_ip
594 pfring_ft_table *table,
608 pfring_ft_table *table,
609 pfring_ft_action action
621 pfring_ft_table *table,
636 pfring_ft_table *table,
649 pfring_ft_table *table,
650 const char *protocol_name,
662 pfring_ft_table *table,
663 pfring_ft_action action
674 pfring_ft_table *table,
675 const char *protocol_name,
676 pfring_ft_action action
689 pfring_ft_table *table,
703 pfring_ft_table *table,
717 pfring_ft_table *table,
718 struct ndpi_detection_module_struct *ndpi
726struct ndpi_detection_module_struct *
728 pfring_ft_table *table
741 pfring_ft_table *table,
755 pfring_ft_table *table,
773 pfring_ft_table *table
803 time_t *license_expiration,
804 time_t *maintenance_expiration
814 const char *license_key
int pfring_ft_set_license(const char *license_key)
int pfring_ft_flow_get_users(pfring_ft_flow *flow)
void pfring_ft_set_default_action(pfring_ft_table *table, pfring_ft_action action)
struct ndpi_detection_module_struct * pfring_ft_get_ndpi_handle(pfring_ft_table *table)
int pfring_ft_load_ndpi_categories(pfring_ft_table *table, const char *path)
u_int16_t pfring_ft_l7_protocol_id(pfring_ft_table *table, const char *name)
struct ndpi_flow_struct * pfring_ft_flow_get_ndpi_handle(pfring_ft_flow *flow)
pfring_ft_flow_key * pfring_ft_flow_get_key(pfring_ft_flow *flow)
void pfring_ft_set_filter_protocol_by_name(pfring_ft_table *table, const char *protocol_name, pfring_ft_action action)
int pfring_ft_load_configuration_ext(pfring_ft_table *table, const char *path, pfring_ft_flow_filter *filter)
int pfring_ft_load_configuration(pfring_ft_table *table, const char *path)
char * pfring_ft_l7_protocol_name(pfring_ft_table *table, pfring_ft_ndpi_protocol *protocol, char *buffer, int buffer_len)
pfring_ft_direction
Definition pfring_ft.h:47
@ d2s_direction
Definition pfring_ft.h:49
@ s2d_direction
Definition pfring_ft.h:48
int pfring_ft_set_ndpi_handle(pfring_ft_table *table, struct ndpi_detection_module_struct *ndpi)
void pfring_ft_zmq_export_stats(pfring_ft_table *table, const char *if_name, u_int16_t if_speed, const char *if_ip, const char *management_ip)
void pfring_ft_flow_free(pfring_ft_flow *flow)
pfring_ft_flow_value * pfring_ft_flow_get_value(pfring_ft_flow *flow)
pfring_ft_stats * pfring_ft_get_stats(pfring_ft_table *table)
void pfring_ft_destroy_table(pfring_ft_table *table)
void pfring_ft_version(char *version)
pfring_ft_action pfring_ft_process(pfring_ft_table *table, const u_char *packet, const pfring_ft_pcap_pkthdr *header, const pfring_ft_ext_pkthdr *ext_header)
void pfring_ft_set_l7_detected_callback(pfring_ft_table *table, pfring_ft_flow_packet_func callback, void *user)
void pfring_ft_flow_set_flow_slicing(pfring_ft_table *table, u_int32_t flow_slice_timeout)
void pfring_ft_set_flow_packet_callback(pfring_ft_table *table, pfring_ft_flow_packet_func callback, void *user)
pfring_ft_action pfring_ft_flow_get_action(pfring_ft_flow *flow)
void pfring_ft_set_shunt_protocol_by_name(pfring_ft_table *table, const char *protocol_name, u_int8_t packets)
void pfring_ft_debug(void)
void pfring_ft_zmq_export_flow(pfring_ft_flow *flow, void *user)
pfring_ft_table * pfring_ft_create_table(u_int32_t flags, u_int32_t max_flows, u_int32_t flow_idle_timeout, u_int32_t flow_lifetime_timeout, u_int32_t user_metadata_size)
pfring_ft_flow * pfring_ft_list_get_next(pfring_ft_list *list)
int pfring_ft_license(char *system_id, time_t *license_expiration, time_t *maintenance_expiration)
u_int64_t pfring_ft_flow_get_id(pfring_ft_flow *flow)
void pfring_ft_flow_set_action(pfring_ft_flow *flow, pfring_ft_action action)
void pfring_ft_set_flow_export_callback(pfring_ft_table *table, pfring_ft_export_flow_func callback, void *user)
pfring_ft_flow_status
Definition pfring_ft.h:53
@ PFRING_FT_FLOW_STATUS_SLICE_TIMEOUT
Definition pfring_ft.h:59
@ PFRING_FT_FLOW_STATUS_OVERFLOW
Definition pfring_ft.h:60
@ PFRING_FT_FLOW_STATUS_END_DETECTED
Definition pfring_ft.h:57
@ PFRING_FT_FLOW_STATUS_ACTIVE
Definition pfring_ft.h:54
@ PFRING_FT_FLOW_STATUS_ACTIVE_TIMEOUT
Definition pfring_ft.h:56
@ PFRING_FT_FLOW_STATUS_FORCED_END
Definition pfring_ft.h:58
@ PFRING_FT_FLOW_STATUS_IDLE_TIMEOUT
Definition pfring_ft.h:55
int pfring_ft_is_ndpi_available()
void pfring_ft_flush(pfring_ft_table *table)
u_int32_t pfring_ft_api_version()
void pfring_ft_zmq_get_stats(pfring_ft_table *table, pfring_ft_export_stats *stats)
void pfring_ft_zmq_export_configure(pfring_ft_table *table, const char *endpoint, const char *server_public_key, u_int8_t probe_mode, u_int8_t disable_compression, u_int8_t use_json)
int pfring_ft_load_ndpi_protocols(pfring_ft_table *table, const char *path)
void pfring_ft_set_flow_list_export_callback(pfring_ft_table *table, pfring_ft_export_list_func callback, void *user)
void pfring_ft_set_new_flow_callback(pfring_ft_table *table, pfring_ft_export_flow_func callback, void *user)
int pfring_ft_housekeeping(pfring_ft_table *table, u_int32_t epoch)
void pfring_ft_set_filter_all_protocols(pfring_ft_table *table, pfring_ft_action action)
Definition pfring_ft.h:263
Definition pfring_ft.h:147
u_int32_t hash
Definition pfring_ft.h:148
u_int16_t device_id
Definition pfring_ft.h:149
u_int8_t port_id
Definition pfring_ft.h:150
u_int8_t reserved
Definition pfring_ft.h:151
Definition pfring_ft.h:200
u_int64_t bytes
Definition pfring_ft.h:202
u_int16_t device_id
Definition pfring_ft.h:207
u_int8_t tcp_flags
Definition pfring_ft.h:205
u_int8_t port_id
Definition pfring_ft.h:206
u_int64_t pkts
Definition pfring_ft.h:201
Definition pfring_ft.h:65
u_int8_t udp_npkts
Definition pfring_ft.h:77
u_int8_t * protocol_to_npkts
Definition pfring_ft.h:78
u_int32_t num_protocols
Definition pfring_ft.h:66
pfring_ft_action * protocol_to_action
Definition pfring_ft.h:70
u_int8_t default_npkts
Definition pfring_ft.h:75
u_int8_t tcp_npkts
Definition pfring_ft.h:76
Definition pfring_ft.h:188
u_int16_t vlan_id
Definition pfring_ft.h:197
pfring_ft_ip_address saddr
Definition pfring_ft.h:191
pfring_ft_ip_address daddr
Definition pfring_ft.h:192
u_int16_t sport
Definition pfring_ft.h:195
u_int8_t ip_version
Definition pfring_ft.h:193
u_int16_t dport
Definition pfring_ft.h:196
u_int8_t protocol
Definition pfring_ft.h:194
Definition pfring_ft.h:210
u_int8_t type
Definition pfring_ft.h:236
char * url
Definition pfring_ft.h:231
u_int32_t tunnel_id
Definition pfring_ft.h:215
u_int16_t replyCode
Definition pfring_ft.h:221
u_int16_t queryType
Definition pfring_ft.h:220
u_int32_t flags
Definition pfring_ft.h:242
char * serverName
Definition pfring_ft.h:225
u_int32_t tunnel_type
Definition pfring_ft.h:214
u_int16_t responseCode
Definition pfring_ft.h:232
u_int8_t * sha1_certificate_fingerprint
Definition pfring_ft.h:226
pfring_ft_ndpi_protocol l7_protocol
Definition pfring_ft.h:213
u_int8_t code
Definition pfring_ft.h:237
u_char * user
Definition pfring_ft.h:244
char * query
Definition pfring_ft.h:219
Definition pfring_ft.h:182
u_int16_t master_protocol
Definition pfring_ft.h:183
u_int16_t app_protocol
Definition pfring_ft.h:184
Definition pfring_ft.h:141
u_int32_t caplen
Definition pfring_ft.h:143
u_int32_t len
Definition pfring_ft.h:144
Definition pfring_ft.h:252
u_int64_t bytes
Definition pfring_ft.h:260
u_int64_t flows
Definition pfring_ft.h:254
u_int64_t err_no_room
Definition pfring_ft.h:255
u_int64_t active_flows
Definition pfring_ft.h:253
u_int64_t disc_no_ip
Definition pfring_ft.h:257
u_int64_t max_lookup_depth
Definition pfring_ft.h:258
u_int64_t packets
Definition pfring_ft.h:259
u_int64_t err_no_mem
Definition pfring_ft.h:256
Definition pfring_ft.h:177