PF_RING API
API documentation for PF_RING: high-speed packet capture, filtering and analysis framework.
Loading...
Searching...
No Matches
pfring_zc.h
Go to the documentation of this file.
1/*
2 * PF_RING ZC API
3 *
4 * (C) 2013-25 - ntop
5 *
6 */
7
8#ifndef _PF_RING_ZC_H_
9#define _PF_RING_ZC_H_
10
18#include <sys/types.h>
19#include <linux/pf_ring.h> /* needed for hw_filtering_rule */
20
21/* pfring_zc_create_cluster flags */
22#define PF_RING_ZC_ENABLE_VM_SUPPORT (1 << 0)
24/* pfring_zc_open_device flags */
25#define PF_RING_ZC_DEVICE_ASYMMETRIC_RSS (1 << 0)
26#define PF_RING_ZC_DEVICE_FIXED_RSS_Q_0 (1 << 1)
27#define PF_RING_ZC_DEVICE_SW_TIMESTAMP (1 << 2)
28#define PF_RING_ZC_DEVICE_HW_TIMESTAMP (1 << 3)
29#define PF_RING_ZC_DEVICE_STRIP_HW_TIMESTAMP (1 << 4)
30#define PF_RING_ZC_DEVICE_IXIA_TIMESTAMP (1 << 5)
31#define PF_RING_ZC_DEVICE_NOT_REPROGRAM_RSS (1 << 6)
32#define PF_RING_ZC_DEVICE_CAPTURE_TX (1 << 7)
33#define PF_RING_ZC_DEVICE_IPONLY_RSS (1 << 8)
34#define PF_RING_ZC_DEVICE_NOT_PROMISC (1 << 9)
35#define PF_RING_ZC_DO_NOT_STRIP_FCS (1 << 10)
36#define PF_RING_ZC_DEVICE_ARISTA_TIMESTAMP (1 << 11)
37#define PF_RING_ZC_DEVICE_METAWATCH_TIMESTAMP (1 << 11)
38#define PF_RING_ZC_DEVICE_CAPTURE_INJECTED (1 << 12)
39#define PF_RING_ZC_DEVICE_HW_TIMESTAMP_UNSYNC (1 << 13)
41#define UNDEFINED_QUEUEID 0xFFFFFFFF
42#define QUEUE_IS_DEVICE(i) (i > 0xFFFF)
43#define QUEUEID_TO_IFINDEX(i) (i >> 16)
44#define IFINDEX_TO_QUEUEID(i) (i << 16)
46#define PF_RING_ZC_PKT_FLAGS_GOOD_IP_CS (1 << 0)
47#define PF_RING_ZC_PKT_FLAGS_BAD_IP_CS (1 << 1)
48#define PF_RING_ZC_PKT_FLAGS_GOOD_L4_CS (1 << 2)
49#define PF_RING_ZC_PKT_FLAGS_BAD_L4_CS (1 << 3)
50//#define PF_RING_ZC_PKT_FLAGS_TX_IP_CS (1 << 4) /**< pfring_zc_pkt_buff.flags: compute IP checksum on transmission (when supported) */
51//#define PF_RING_ZC_PKT_FLAGS_TX_L4_CS (1 << 5) /**< pfring_zc_pkt_buff.flags: compute TCP checksum on transmission (when supported) */
52#define PF_RING_ZC_PKT_FLAGS_FLOW_OFFLOAD_UPDATE (1 << 6)
53#define PF_RING_ZC_PKT_FLAGS_FLOW_OFFLOAD_PACKET (1 << 7)
54#define PF_RING_ZC_PKT_FLAGS_FLOW_OFFLOAD_MARKER (1 << 8)
55#define PF_RING_ZC_PKT_FLAGS_FLOW_OFFLOAD_1ST (1 << 9)
57#define PF_RING_ZC_BUILTIN_GTP_HASH_FLAGS_V1 (1 << 0)
58#define PF_RING_ZC_BUILTIN_GTP_HASH_FLAGS_V2 (1 << 1)
59#define PF_RING_ZC_BUILTIN_GTP_HASH_FLAGS_GTPC (1 << 2)
60#define PF_RING_ZC_BUILTIN_GTP_HASH_FLAGS_GTPU (1 << 3)
62/* New API features defines */
63#define PF_RING_ZC_API_CLUSTER_INFO
64
65/* Misc defines */
66#define PF_RING_ZC_SEND_PKT_MULTI_MAX_QUEUES 64
67#define PF_RING_ZC_SEND_PKT_MULTI_V3_MAX_QUEUES 128
68#define PF_RING_ZC_BUFFER_HEAD_ROOM 64
69
70#ifdef __cplusplus
71extern "C" {
72#endif
73
74typedef void pfring_zc_cluster;
75typedef void pfring_zc_queue;
76typedef void pfring_zc_buffer_pool;
77typedef void pfring_zc_worker;
78typedef void pfring_zc_multi_queue;
79
83typedef enum {
88
92typedef struct {
93 u_int64_t recv;
94 u_int64_t sent;
95 u_int64_t drop;
97
101typedef struct {
102 u_int32_t tv_sec;
103 u_int32_t tv_nsec;
105
109typedef struct {
110 u_int16_t len;
111 u_int16_t flags;
112 u_int32_t hash;
114 u_char user[];
116
120typedef struct {
121 u_int32_t buffer_len;
122 u_int32_t metadata_len;
124
128typedef struct {
129 u_int64_t total_memory;
130 u_int32_t buffer_len;
131 u_int32_t real_buffer_len;
133
137typedef struct {
138 void *base_addr;
139 u_int64_t size;
141
148u_char *
150 pfring_zc_pkt_buff *pkt_handle,
151 pfring_zc_queue *queue
152);
153
160u_char *
162 pfring_zc_pkt_buff *pkt_handle,
163 pfring_zc_cluster *cluster
164);
165
175 u_char *data,
176 pfring_zc_cluster *cluster
177);
178
186u_char *
188 pfring_zc_pkt_buff *pkt_handle,
189 pfring_zc_queue *queue,
190 u_int16_t len
191);
192
200u_char *
202 pfring_zc_pkt_buff *pkt_handle,
203 pfring_zc_queue *queue,
204 u_int16_t len
205);
206
212void
214 pfring_zc_pkt_buff *pkt_handle,
215 u_int16_t len
216);
217
218/* **************************************************************************************** */
219
234pfring_zc_cluster *
236 u_int32_t cluster_id,
237 u_int32_t buffer_len,
238 u_int32_t metadata_len,
239 u_int32_t tot_num_buffers,
240 int32_t numa_node_id,
241 const char *hugepages_mountpoint,
242 u_int32_t flags
243);
244
258int
261 u_int32_t buffer_len,
262 u_int32_t metadata_len,
263 u_int32_t tot_num_buffers,
264 u_int32_t flags
265);
266
272int
274 pfring_zc_cluster *cluster,
276);
277
283u_int32_t
285 pfring_zc_cluster *cluster
286);
287
292void
294 pfring_zc_cluster *cluster
295);
296
297/* **************************************************************************************** */
298
322pfring_zc_queue *
324 pfring_zc_cluster *cluster,
325 const char *device_name,
326 pfring_zc_queue_mode queue_mode,
327 u_int32_t flags
328);
329
338pfring_zc_queue *
340 pfring_zc_cluster *cluster,
341 u_int32_t queue_len
342);
343
354int
356 pfring_zc_cluster *cluster,
357 u_int32_t queue_len,
358 u_int32_t pool_len,
359 pfring_zc_queue **queue,
360 pfring_zc_buffer_pool **pool
361);
362
372void
374 pfring_zc_queue *queue
375);
376
377/* **************************************************************************************** */
378
386int
388 pfring_zc_queue *queue,
389 pfring_zc_pkt_buff **pkt_handle,
390 u_int8_t wait_for_incoming_packet
391);
392
401int
403 pfring_zc_queue *queue,
404 pfring_zc_pkt_buff **pkt_handles,
405 u_int32_t max_num_packets,
406 u_int8_t wait_for_incoming_packet
407);
408
414int
416 pfring_zc_queue *queue
417);
418
423void
425 pfring_zc_queue *queue
426);
427
428/* **************************************************************************************** */
429
437int
439 pfring_zc_queue *queue,
440 pfring_zc_pkt_buff **pkt_handle,
441 u_int8_t flush_packet
442);
443
452int
454 pfring_zc_queue *queue,
455 pfring_zc_pkt_buff **pkt_handle,
456 u_int8_t flush_packet,
457 struct timespec *ts
458);
459
468int
470 pfring_zc_queue *queue,
471 pfring_zc_pkt_buff **pkt_handles,
472 u_int32_t num_packets,
473 u_int8_t flush_packets
474);
475
481int
483 pfring_zc_queue *queue
484);
485
486/* **************************************************************************************** */
487
493void
495 pfring_zc_queue *queue,
496 pfring_zc_queue_mode direction
497);
498
499/* **************************************************************************************** */
500
506int
508 pfring_zc_queue *queue,
509 struct timespec *ts
510);
511
517int
519 pfring_zc_queue *queue,
520 struct timespec *ts
521);
522
529int
531 pfring_zc_queue *queue,
532 struct timespec *offset,
533 int8_t sign
534);
535
536/* **************************************************************************************** */
537
544int
546 pfring_zc_queue *queue,
547 const char *filter
548);
549
555int
557 pfring_zc_queue *queue
558);
559
560/* **************************************************************************************** */
561
568int
570 pfring_zc_queue *queue,
571 hw_filtering_rule *rule
572);
573
580int
582 pfring_zc_queue *queue,
583 u_int16_t rule_id
584);
585
586/* **************************************************************************************** */
587
593void
595 pfring_zc_queue *queue,
596 u_int8_t *indir_table
597);
598
599/* **************************************************************************************** */
600
612u_int32_t
614 pfring_zc_queue *queue
615);
616
622void
624 pfring_zc_queue *queue,
626);
627
633u_int32_t
635 pfring_zc_queue *queue
636);
637
643u_int32_t
645 pfring_zc_queue *queue
646);
647
654int
656 pfring_zc_queue *queue,
657 pfring_zc_stat *stats
658);
659
660/* **************************************************************************************** */
661
669 pfring_zc_cluster *cluster
670);
671
677void
679 pfring_zc_cluster *cluster,
680 pfring_zc_pkt_buff *pkt_handle
681);
682
683/* **************************************************************************************** */
684
694pfring_zc_multi_queue *
696 pfring_zc_queue *queues[],
697 u_int32_t num_queues
698);
699
708int
710 pfring_zc_multi_queue *multi_queue,
711 pfring_zc_pkt_buff **pkt_handle,
712 u_int64_t queues_mask,
713 u_int8_t flush_packet
714);
715
724int
726 pfring_zc_multi_queue *multi_queue,
727 pfring_zc_pkt_buff **pkt_handle,
728 __int128_t queues_mask,
729 u_int8_t flush_packet
730);
731
732/* **************************************************************************************** */
733
737typedef enum {
741
749typedef int64_t
751 pfring_zc_pkt_buff *pkt_handle,
752 pfring_zc_queue *in_queue,
753 void *user
754);
755
763typedef int64_t
765 pfring_zc_pkt_buff *pkt_handle,
766 pfring_zc_queue *in_queue,
767 void *user
768);
769
777typedef __int128_t
779 pfring_zc_pkt_buff *pkt_handle,
780 pfring_zc_queue *in_queue,
781 void *user
782);
783
787typedef void
789);
790
808pfring_zc_worker *
810 pfring_zc_queue *in_queues[],
811 pfring_zc_queue *out_queues[],
812 u_int32_t num_in_queues,
813 u_int32_t num_out_queues,
814 pfring_zc_buffer_pool *working_set_pool,
815 pfring_zc_recv_policy recv_policy,
816 pfring_zc_idle_callback idle_func,
817 pfring_zc_filtering_func filter_func,
818 void *filter_user_data,
820 void *distr_user_data,
821 u_int32_t active_wait,
822 int32_t core_id_affinity
823);
824
828pfring_zc_worker *
830 pfring_zc_queue *in_queues[],
831 pfring_zc_queue *out_queues[],
832 u_int32_t num_in_queues,
833 u_int32_t num_out_queues,
834 pfring_zc_buffer_pool *working_set_pool,
835 pfring_zc_recv_policy recv_policy,
836 pfring_zc_idle_callback idle_func,
838 void *distr_user_data,
839 u_int32_t active_wait,
840 int32_t core_id_affinity
841);
842
859pfring_zc_worker *
861 pfring_zc_queue *in_queues[],
862 pfring_zc_multi_queue *out_multi_queue,
863 u_int32_t num_in_queues,
864 pfring_zc_buffer_pool *working_set_pool,
865 pfring_zc_recv_policy recv_policy,
866 pfring_zc_idle_callback idle_func,
867 pfring_zc_filtering_func filter_func,
868 void *filter_user_data,
870 void *distr_user_data,
871 u_int32_t active_wait,
872 int32_t core_id_affinity
873);
874
891pfring_zc_worker *
893 pfring_zc_queue *in_queues[],
894 pfring_zc_multi_queue *out_multi_queue,
895 u_int32_t num_in_queues,
896 pfring_zc_buffer_pool *working_set_pool,
897 pfring_zc_recv_policy recv_policy,
898 pfring_zc_idle_callback idle_func,
899 pfring_zc_filtering_func filter_func,
900 void *filter_user_data,
902 void *distr_user_data,
903 u_int32_t active_wait,
904 int32_t core_id_affinity
905);
906
910pfring_zc_worker *
912 pfring_zc_queue *in_queues[],
913 pfring_zc_multi_queue *out_multi_queue,
914 u_int32_t num_in_queues,
915 pfring_zc_buffer_pool *working_set_pool,
916 pfring_zc_recv_policy recv_policy,
917 pfring_zc_idle_callback idle_func,
919 void *distr_user_data,
920 u_int32_t active_wait,
921 int32_t core_id_affinity
922);
923
938pfring_zc_worker *
940 pfring_zc_queue *in_queues[],
941 pfring_zc_queue *out_queue,
942 u_int32_t num_in_queues,
943 pfring_zc_buffer_pool *working_set_pool,
946 void *user_data,
947 u_int32_t active_wait,
948 int32_t core_id_affinity_sorter,
949 int32_t core_id_affinity_timer
950);
951
956void
958 pfring_zc_worker *worker
959);
960
961/* **************************************************************************************** */
962
969pfring_zc_buffer_pool *
971 pfring_zc_cluster *cluster,
972 u_int32_t pool_len
973);
974
979u_int32_t
981 pfring_zc_buffer_pool *pool
982);
983
991 pfring_zc_buffer_pool *pool
992);
993
999void
1001 pfring_zc_buffer_pool *pool,
1002 pfring_zc_pkt_buff *pkt_handle
1003);
1004
1005/* **************************************************************************************** */
1006
1011void
1013 const char *hugepages_mountpoint
1014);
1015
1022pfring_zc_buffer_pool *
1024 u_int32_t cluster_id,
1025 u_int32_t pool_id
1026);
1027
1032void
1034 pfring_zc_buffer_pool *pool
1035);
1036
1044pfring_zc_queue *
1046 u_int32_t cluster_id,
1047 u_int32_t queue_id,
1048 pfring_zc_queue_mode queue_mode
1049);
1050
1055void
1057 pfring_zc_queue *queue
1058);
1059
1068int
1070 u_int32_t cluster_id,
1071 u_int32_t queue_id,
1072 pfring_zc_queue_mode queue_mode
1073);
1074
1083int
1085 pfring_zc_cluster *cluster,
1086 u_int32_t queue_id,
1087 pfring_zc_queue_mode queue_mode
1088);
1089
1096int
1098 pfring_zc_queue *queue,
1099 pfring_zc_queue_mode queue_mode
1100);
1101
1102/* **************************************************************************************** */
1103
1110int
1112 pfring_zc_cluster *cluster,
1113 const char *vm_monitor_socket_path
1114);
1115
1121int
1123 pfring_zc_cluster *cluster
1124);
1125
1126/* **************************************************************************************** */
1127
1132void
1134 const char *uio_device
1135);
1136
1137/* **************************************************************************************** */
1138
1146u_int32_t
1148 pfring_zc_pkt_buff *pkt_handle,
1149 pfring_zc_queue *queue
1150);
1151
1159u_int32_t
1161 pfring_zc_pkt_buff *pkt_handle,
1162 pfring_zc_queue *queue
1163);
1164
1176u_int32_t
1178 pfring_zc_pkt_buff *pkt_handle,
1179 pfring_zc_queue *queue,
1180 u_int32_t *flags /* out */
1181);
1182
1192u_int32_t
1194 pfring_zc_pkt_buff *pkt_handle,
1195 pfring_zc_queue *queue
1196);
1197
1198/* **************************************************************************************** */
1199
1206int
1208 pfring_zc_cluster *cluster,
1209 char *stats
1210);
1211
1218int
1220 pfring_zc_cluster *cluster,
1221 const char *name
1222);
1223
1224/* **************************************************************************************** */
1225
1232int
1234 pfring_zc_queue *queue,
1235 const char *stats
1236);
1237
1244int
1246 pfring_zc_queue *queue,
1247 const char *name
1248);
1249
1250/* **************************************************************************************** */
1251
1256char *
1258
1259/* **************************************************************************************** */
1260
1265int
1267
1268/* **************************************************************************************** */
1269
1276int
1278 pfring_zc_queue *queue,
1279 u_int32_t *expiration_epoch
1280);
1281
1288int
1290 char *device_name,
1291 u_int32_t *expiration_epoch
1292);
1293
1294/* **************************************************************************************** */
1295
1301int
1303
1304/* **************************************************************************************** */
1305
1311int
1313
1314/* **************************************************************************************** */
1315
1319void
1321
1322/* **************************************************************************************** */
1323
1324#ifdef __cplusplus
1325}
1326#endif
1327
1328#endif /* _PF_RING_ZC_H_ */
1329
PF_RING kernel module header file.
int pfring_zc_get_memory_info(pfring_zc_cluster *cluster, pfring_zc_cluster_mem_info *mem_info)
pfring_zc_worker * pfring_zc_run_balancer(pfring_zc_queue *in_queues[], pfring_zc_queue *out_queues[], u_int32_t num_in_queues, u_int32_t num_out_queues, pfring_zc_buffer_pool *working_set_pool, pfring_zc_recv_policy recv_policy, pfring_zc_idle_callback idle_func, pfring_zc_distribution_func distr_func, void *distr_user_data, u_int32_t active_wait, int32_t core_id_affinity)
int64_t(* pfring_zc_filtering_func)(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *in_queue, void *user)
Definition pfring_zc.h:750
void pfring_zc_release_packet_handle(pfring_zc_cluster *cluster, pfring_zc_pkt_buff *pkt_handle)
void pfring_zc_pkt_buff_pull_only(pfring_zc_pkt_buff *pkt_handle, u_int16_t len)
int pfring_zc_get_device_clock(pfring_zc_queue *queue, struct timespec *ts)
u_int32_t pfring_zc_builtin_gre_hash(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *queue)
int pfring_zc_stats(pfring_zc_queue *queue, pfring_zc_stat *stats)
int pfring_zc_numa_set_numa_affinity(int node_id)
u_int32_t pfring_zc_get_cluster_id(pfring_zc_cluster *cluster)
pfring_zc_recv_policy
Definition pfring_zc.h:737
@ round_robin_bursts_policy
Definition pfring_zc.h:739
@ round_robin_policy
Definition pfring_zc.h:738
__int128_t(* pfring_zc_distribution_func_v3)(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *in_queue, void *user)
Definition pfring_zc.h:778
pfring_zc_worker * pfring_zc_run_fifo(pfring_zc_queue *in_queues[], pfring_zc_queue *out_queue, u_int32_t num_in_queues, pfring_zc_buffer_pool *working_set_pool, pfring_zc_idle_callback callback, pfring_zc_distribution_func func, void *user_data, u_int32_t active_wait, int32_t core_id_affinity_sorter, int32_t core_id_affinity_timer)
int pfring_zc_vm_backend_enable(pfring_zc_cluster *cluster)
void pfring_zc_sync_queue(pfring_zc_queue *queue, pfring_zc_queue_mode direction)
u_char * pfring_zc_pkt_buff_data_from_cluster(pfring_zc_pkt_buff *pkt_handle, pfring_zc_cluster *cluster)
int pfring_zc_vm_register(pfring_zc_cluster *cluster, const char *vm_monitor_socket_path)
int pfring_zc_set_device_clock(pfring_zc_queue *queue, struct timespec *ts)
char * pfring_zc_version()
void pfring_zc_vm_guest_init(const char *uio_device)
u_int32_t pfring_zc_get_num_rx_channels(pfring_zc_queue *queue)
void pfring_zc_ipc_init(const char *hugepages_mountpoint)
pfring_zc_worker * pfring_zc_run_fanout_v2(pfring_zc_queue *in_queues[], pfring_zc_multi_queue *out_multi_queue, u_int32_t num_in_queues, pfring_zc_buffer_pool *working_set_pool, pfring_zc_recv_policy recv_policy, pfring_zc_idle_callback idle_func, pfring_zc_filtering_func filter_func, void *filter_user_data, pfring_zc_distribution_func distr_func, void *distr_user_data, u_int32_t active_wait, int32_t core_id_affinity)
int pfring_zc_numa_get_cpu_node(int core_id)
int pfring_zc_set_device_app_name(pfring_zc_queue *queue, const char *name)
u_char * pfring_zc_pkt_buff_data(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *queue)
pfring_zc_buffer_pool * pfring_zc_create_buffer_pool(pfring_zc_cluster *cluster, u_int32_t pool_len)
int pfring_zc_send_pkt(pfring_zc_queue *queue, pfring_zc_pkt_buff **pkt_handle, u_int8_t flush_packet)
void pfring_zc_set_rxfh_indir(pfring_zc_queue *queue, u_int8_t *indir_table)
int pfring_zc_ipc_queue_in_use_from_queue(pfring_zc_queue *queue, pfring_zc_queue_mode queue_mode)
int pfring_zc_remove_bpf_filter(pfring_zc_queue *queue)
int pfring_zc_adjust_device_clock(pfring_zc_queue *queue, struct timespec *offset, int8_t sign)
int pfring_zc_check_license()
u_int32_t pfring_zc_builtin_gtp_hash(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *queue, u_int32_t *flags)
int pfring_zc_send_pkt_multi(pfring_zc_multi_queue *multi_queue, pfring_zc_pkt_buff **pkt_handle, u_int64_t queues_mask, u_int8_t flush_packet)
pfring_zc_queue_mode
Definition pfring_zc.h:83
@ tx_only
Definition pfring_zc.h:85
@ rx_only
Definition pfring_zc.h:84
@ management_only
Definition pfring_zc.h:86
pfring_zc_queue * pfring_zc_create_queue(pfring_zc_cluster *cluster, u_int32_t queue_len)
void pfring_zc_destroy_cluster(pfring_zc_cluster *cluster)
pfring_zc_worker * pfring_zc_run_balancer_v2(pfring_zc_queue *in_queues[], pfring_zc_queue *out_queues[], u_int32_t num_in_queues, u_int32_t num_out_queues, pfring_zc_buffer_pool *working_set_pool, pfring_zc_recv_policy recv_policy, pfring_zc_idle_callback idle_func, pfring_zc_filtering_func filter_func, void *filter_user_data, pfring_zc_distribution_func distr_func, void *distr_user_data, u_int32_t active_wait, int32_t core_id_affinity)
int pfring_zc_queue_is_empty(pfring_zc_queue *queue)
int pfring_zc_send_pkt_get_time(pfring_zc_queue *queue, pfring_zc_pkt_buff **pkt_handle, u_int8_t flush_packet, struct timespec *ts)
int pfring_zc_check_device_license_by_name(char *device_name, u_int32_t *expiration_epoch)
pfring_zc_pkt_buff * pfring_zc_pkt_data_buff(u_char *data, pfring_zc_cluster *cluster)
void pfring_zc_close_device(pfring_zc_queue *queue)
int pfring_zc_set_bpf_filter(pfring_zc_queue *queue, const char *filter)
void(* pfring_zc_idle_callback)()
Definition pfring_zc.h:788
int pfring_zc_set_proc_stats(pfring_zc_cluster *cluster, char *stats)
u_int32_t pfring_zc_builtin_ip_hash(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *queue)
u_int32_t pfring_zc_get_queue_speed(pfring_zc_queue *queue)
pfring_zc_worker * pfring_zc_run_fanout_v3(pfring_zc_queue *in_queues[], pfring_zc_multi_queue *out_multi_queue, u_int32_t num_in_queues, pfring_zc_buffer_pool *working_set_pool, pfring_zc_recv_policy recv_policy, pfring_zc_idle_callback idle_func, pfring_zc_filtering_func filter_func, void *filter_user_data, pfring_zc_distribution_func_v3 distr_func, void *distr_user_data, u_int32_t active_wait, int32_t core_id_affinity)
void pfring_zc_get_queue_settings(pfring_zc_queue *queue, pfring_zc_queue_info *info)
int pfring_zc_ipc_queue_in_use(u_int32_t cluster_id, u_int32_t queue_id, pfring_zc_queue_mode queue_mode)
void pfring_zc_kill_worker(pfring_zc_worker *worker)
void pfring_zc_debug()
u_int32_t pfring_zc_get_queue_id(pfring_zc_queue *queue)
int pfring_zc_set_device_proc_stats(pfring_zc_queue *queue, const char *stats)
int64_t(* pfring_zc_distribution_func)(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *in_queue, void *user)
Definition pfring_zc.h:764
int pfring_zc_send_pkt_burst(pfring_zc_queue *queue, pfring_zc_pkt_buff **pkt_handles, u_int32_t num_packets, u_int8_t flush_packets)
pfring_zc_cluster * pfring_zc_create_cluster(u_int32_t cluster_id, u_int32_t buffer_len, u_int32_t metadata_len, u_int32_t tot_num_buffers, int32_t numa_node_id, const char *hugepages_mountpoint, u_int32_t flags)
int pfring_zc_send_pkt_multi_v3(pfring_zc_multi_queue *multi_queue, pfring_zc_pkt_buff **pkt_handle, __int128_t queues_mask, u_int8_t flush_packet)
pfring_zc_worker * pfring_zc_run_fanout(pfring_zc_queue *in_queues[], pfring_zc_multi_queue *out_multi_queue, u_int32_t num_in_queues, pfring_zc_buffer_pool *working_set_pool, pfring_zc_recv_policy recv_policy, pfring_zc_idle_callback idle_func, pfring_zc_distribution_func distr_func, void *distr_user_data, u_int32_t active_wait, int32_t core_id_affinity)
int pfring_zc_create_queue_pool_pair(pfring_zc_cluster *cluster, u_int32_t queue_len, u_int32_t pool_len, pfring_zc_queue **queue, pfring_zc_buffer_pool **pool)
pfring_zc_multi_queue * pfring_zc_create_multi_queue(pfring_zc_queue *queues[], u_int32_t num_queues)
int pfring_zc_ipc_queue_in_use_from_cluster(pfring_zc_cluster *cluster, u_int32_t queue_id, pfring_zc_queue_mode queue_mode)
int pfring_zc_check_device_license(pfring_zc_queue *queue, u_int32_t *expiration_epoch)
pfring_zc_buffer_pool * pfring_zc_ipc_attach_buffer_pool(u_int32_t cluster_id, u_int32_t pool_id)
int pfring_zc_queue_is_full(pfring_zc_queue *queue)
int pfring_zc_recv_pkt_burst(pfring_zc_queue *queue, pfring_zc_pkt_buff **pkt_handles, u_int32_t max_num_packets, u_int8_t wait_for_incoming_packet)
int pfring_zc_remove_hw_rule(pfring_zc_queue *queue, u_int16_t rule_id)
u_int32_t pfring_zc_builtin_5tuple_hash(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *queue)
pfring_zc_pkt_buff * pfring_zc_get_packet_handle_from_pool(pfring_zc_buffer_pool *pool)
u_char * pfring_zc_pkt_buff_push(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *queue, u_int16_t len)
void pfring_zc_ipc_detach_queue(pfring_zc_queue *queue)
int pfring_zc_recv_pkt(pfring_zc_queue *queue, pfring_zc_pkt_buff **pkt_handle, u_int8_t wait_for_incoming_packet)
int pfring_zc_add_hw_rule(pfring_zc_queue *queue, hw_filtering_rule *rule)
u_char * pfring_zc_pkt_buff_pull(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *queue, u_int16_t len)
pfring_zc_pkt_buff * pfring_zc_get_packet_handle(pfring_zc_cluster *cluster)
int pfring_zc_precompute_cluster_settings(pfring_zc_cluster_info *info, u_int32_t buffer_len, u_int32_t metadata_len, u_int32_t tot_num_buffers, u_int32_t flags)
pfring_zc_queue * pfring_zc_ipc_attach_queue(u_int32_t cluster_id, u_int32_t queue_id, pfring_zc_queue_mode queue_mode)
void pfring_zc_release_packet_handle_to_pool(pfring_zc_buffer_pool *pool, pfring_zc_pkt_buff *pkt_handle)
void pfring_zc_queue_breakloop(pfring_zc_queue *queue)
void pfring_zc_ipc_detach_buffer_pool(pfring_zc_buffer_pool *pool)
u_int32_t pfring_zc_get_pool_id(pfring_zc_buffer_pool *pool)
int pfring_zc_set_app_name(pfring_zc_cluster *cluster, const char *name)
pfring_zc_queue * pfring_zc_open_device(pfring_zc_cluster *cluster, const char *device_name, pfring_zc_queue_mode queue_mode, u_int32_t flags)
Definition pfring_zc.h:128
u_int32_t real_buffer_len
Definition pfring_zc.h:131
u_int32_t buffer_len
Definition pfring_zc.h:130
u_int64_t total_memory
Definition pfring_zc.h:129
Definition pfring_zc.h:137
void * base_addr
Definition pfring_zc.h:138
u_int64_t size
Definition pfring_zc.h:139
Definition pfring_zc.h:109
u_int16_t len
Definition pfring_zc.h:110
pfring_zc_timespec ts
Definition pfring_zc.h:113
u_int32_t hash
Definition pfring_zc.h:112
u_int16_t flags
Definition pfring_zc.h:111
Definition pfring_zc.h:120
u_int32_t metadata_len
Definition pfring_zc.h:122
u_int32_t buffer_len
Definition pfring_zc.h:121
Definition pfring_zc.h:92
Definition pfring_zc.h:101