18 #include <sys/types.h> 21 #define PF_RING_ZC_DEVICE_ASYMMETRIC_RSS (1 << 0) 22 #define PF_RING_ZC_DEVICE_FIXED_RSS_Q_0 (1 << 1) 23 #define PF_RING_ZC_DEVICE_SW_TIMESTAMP (1 << 2) 24 #define PF_RING_ZC_DEVICE_HW_TIMESTAMP (1 << 3) 25 #define PF_RING_ZC_DEVICE_STRIP_HW_TIMESTAMP (1 << 4) 26 #define PF_RING_ZC_DEVICE_IXIA_TIMESTAMP (1 << 5) 27 #define PF_RING_ZC_DEVICE_NOT_REPROGRAM_RSS (1 << 6) 28 #define PF_RING_ZC_DEVICE_CAPTURE_TX (1 << 7) 29 #define PF_RING_ZC_DEVICE_IPONLY_RSS (1 << 8) 30 #define PF_RING_ZC_DEVICE_NOT_PROMISC (1 << 9) 32 #define UNDEFINED_QUEUEID 0xFFFFFFFF 33 #define QUEUE_IS_DEVICE(i) (i > 0xFFFF) 34 #define QUEUEID_TO_IFINDEX(i) (i >> 16) 35 #define IFINDEX_TO_QUEUEID(i) (i << 16) 37 #define PF_RING_ZC_PKT_FLAGS_GOOD_IP_CS (1 << 0) 38 #define PF_RING_ZC_PKT_FLAGS_BAD_IP_CS (1 << 1) 39 #define PF_RING_ZC_PKT_FLAGS_GOOD_L4_CS (1 << 2) 40 #define PF_RING_ZC_PKT_FLAGS_BAD_L4_CS (1 << 3) 41 //#define PF_RING_ZC_PKT_FLAGS_TX_IP_CS (1 << 4) 42 //#define PF_RING_ZC_PKT_FLAGS_TX_L4_CS (1 << 5) 43 #define PF_RING_ZC_PKT_FLAGS_FLOW_OFFLOAD_UPDATE (1 << 6) 44 #define PF_RING_ZC_PKT_FLAGS_FLOW_OFFLOAD_PACKET (1 << 7) 45 #define PF_RING_ZC_PKT_FLAGS_FLOW_OFFLOAD_MARKER (1 << 8) 51 typedef void pfring_zc_cluster;
52 typedef void pfring_zc_queue;
53 typedef void pfring_zc_buffer_pool;
54 typedef void pfring_zc_worker;
55 typedef void pfring_zc_multi_queue;
110 pfring_zc_queue *queue
127 u_int32_t cluster_id,
128 u_int32_t buffer_len,
129 u_int32_t metadata_len,
130 u_int32_t tot_num_buffers,
131 int32_t numa_node_id,
132 const char *hugepages_mountpoint
141 pfring_zc_cluster *cluster
156 pfring_zc_cluster *cluster,
157 const char *device_name,
158 pfring_zc_queue_mode queue_mode,
170 pfring_zc_cluster *cluster,
185 pfring_zc_queue *queue,
187 u_int8_t wait_for_incoming_packet
200 pfring_zc_queue *queue,
202 u_int32_t max_num_packets,
203 u_int8_t wait_for_incoming_packet
213 pfring_zc_queue *queue
222 pfring_zc_queue *queue
236 pfring_zc_queue *queue,
238 u_int8_t flush_packet
251 pfring_zc_queue *queue,
253 u_int32_t num_packets,
254 u_int8_t flush_packets
264 pfring_zc_queue *queue
276 pfring_zc_queue *queue,
277 pfring_zc_queue_mode direction
290 pfring_zc_queue *queue,
301 pfring_zc_queue *queue
314 pfring_zc_queue *queue,
315 hw_filtering_rule *rule
326 pfring_zc_queue *queue,
339 pfring_zc_queue *queue,
340 u_int8_t *indir_table
352 pfring_zc_cluster *cluster
363 pfring_zc_queue *queue
373 pfring_zc_queue *queue,
384 pfring_zc_queue *queue
395 pfring_zc_queue *queue,
408 pfring_zc_cluster *cluster
418 pfring_zc_cluster *cluster,
433 pfring_zc_multi_queue *
435 pfring_zc_queue *queues[],
449 pfring_zc_multi_queue *multi_queue,
451 u_int64_t queues_mask,
452 u_int8_t flush_packet
475 pfring_zc_queue *in_queue,
504 pfring_zc_queue *in_queues[],
505 pfring_zc_queue *out_queues[],
506 u_int32_t num_in_queues,
507 u_int32_t num_out_queues,
508 pfring_zc_buffer_pool *working_set_pool,
509 pfring_zc_recv_policy recv_policy,
513 u_int32_t active_wait,
514 int32_t core_id_affinity
533 pfring_zc_queue *in_queues[],
534 pfring_zc_multi_queue *out_multi_queue,
535 u_int32_t num_in_queues,
536 pfring_zc_buffer_pool *working_set_pool,
537 pfring_zc_recv_policy recv_policy,
541 u_int32_t active_wait,
542 int32_t core_id_affinity
561 pfring_zc_queue *in_queues[],
562 pfring_zc_queue *out_queue,
563 u_int32_t num_in_queues,
564 pfring_zc_buffer_pool *working_set_pool,
568 u_int32_t active_wait,
569 int32_t core_id_affinity_sorter,
570 int32_t core_id_affinity_timer
579 pfring_zc_worker *worker
590 pfring_zc_buffer_pool *
592 pfring_zc_cluster *cluster,
603 pfring_zc_buffer_pool *pool
613 pfring_zc_buffer_pool *pool,
625 const char *hugepages_mountpoint
634 pfring_zc_buffer_pool *
636 u_int32_t cluster_id,
646 pfring_zc_buffer_pool *pool
658 u_int32_t cluster_id,
660 pfring_zc_queue_mode queue_mode
669 pfring_zc_queue *queue
682 pfring_zc_cluster *cluster,
683 const char *vm_monitor_socket_path
693 pfring_zc_cluster *cluster
704 const char *uio_device
718 pfring_zc_queue *queue
730 pfring_zc_queue *queue
742 pfring_zc_queue *queue
755 pfring_zc_cluster *cluster,
766 pfring_zc_cluster *cluster,
780 pfring_zc_queue *queue,
792 pfring_zc_queue *queue,
824 pfring_zc_queue *queue,
825 u_int32_t *expiration_epoch
837 u_int32_t *expiration_epoch
u_int32_t pfring_zc_get_queue_speed(pfring_zc_queue *queue)
u_int32_t pfring_zc_get_queue_id(pfring_zc_queue *queue)
int pfring_zc_check_device_license(pfring_zc_queue *queue, u_int32_t *expiration_epoch)
u_int16_t flags
Definition: pfring_zc.h:87
void pfring_zc_kill_worker(pfring_zc_worker *worker)
Definition: pfring_zc.h:77
pfring_zc_multi_queue * pfring_zc_create_multi_queue(pfring_zc_queue *queues[], u_int32_t num_queues)
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_vm_register(pfring_zc_cluster *cluster, const char *vm_monitor_socket_path)
u_int32_t pfring_zc_builtin_gtp_hash(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *queue)
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)
char * pfring_zc_version()
int pfring_zc_set_device_app_name(pfring_zc_queue *queue, const char *name)
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 callback, pfring_zc_distribution_func func, void *user_data, u_int32_t active_wait, int32_t core_id_affinity)
u_int16_t len
Definition: pfring_zc.h:86
Definition: pfring_zc.h:462
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 callback, pfring_zc_distribution_func func, void *user_data, u_int32_t active_wait, int32_t core_id_affinity)
int pfring_zc_recv_pkt(pfring_zc_queue *queue, pfring_zc_pkt_buff **pkt_handle, u_int8_t wait_for_incoming_packet)
u_int32_t pfring_zc_builtin_gre_hash(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *queue)
int pfring_zc_remove_bpf_filter(pfring_zc_queue *queue)
int pfring_zc_stats(pfring_zc_queue *queue, pfring_zc_stat *stats)
void pfring_zc_ipc_init(const char *hugepages_mountpoint)
int pfring_zc_set_app_name(pfring_zc_cluster *cluster, const char *name)
PF_RING kernel module header file.
int pfring_zc_remove_hw_rule(pfring_zc_queue *queue, u_int16_t rule_id)
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_ipc_detach_buffer_pool(pfring_zc_buffer_pool *pool)
int pfring_zc_queue_is_full(pfring_zc_queue *queue)
void pfring_zc_ipc_detach_queue(pfring_zc_queue *queue)
Definition: pfring_zc.h:62
int pfring_zc_send_pkt(pfring_zc_queue *queue, pfring_zc_pkt_buff **pkt_handle, u_int8_t flush_packet)
Definition: pfring_zc.h:96
void(* pfring_zc_idle_callback)()
Definition: pfring_zc.h:483
int pfring_zc_check_license()
int pfring_zc_numa_set_numa_affinity(int node_id)
int pfring_zc_numa_get_cpu_node(int core_id)
Definition: pfring_zc.h:68
Definition: pfring_zc.h:461
Definition: pfring_zc.h:61
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_add_hw_rule(pfring_zc_queue *queue, hw_filtering_rule *rule)
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)
u_int32_t hash
Definition: pfring_zc.h:88
u_int32_t pfring_zc_builtin_ip_hash(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *queue)
u_int32_t buffer_len
Definition: pfring_zc.h:97
int pfring_zc_set_device_proc_stats(pfring_zc_queue *queue, const char *stats)
void pfring_zc_destroy_cluster(pfring_zc_cluster *cluster)
pfring_zc_recv_policy
Definition: pfring_zc.h:460
int64_t(* pfring_zc_distribution_func)(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *in_queue, void *user)
Definition: pfring_zc.h:473
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)
void pfring_zc_vm_guest_init(const char *uio_device)
int pfring_zc_set_proc_stats(pfring_zc_cluster *cluster, char *stats)
pfring_zc_pkt_buff * pfring_zc_get_packet_handle_from_pool(pfring_zc_buffer_pool *pool)
void pfring_zc_set_rxfh_indir(pfring_zc_queue *queue, u_int8_t *indir_table)
pfring_zc_pkt_buff * pfring_zc_get_packet_handle(pfring_zc_cluster *cluster)
pfring_zc_timespec ts
Definition: pfring_zc.h:89
int pfring_zc_set_bpf_filter(pfring_zc_queue *queue, char *filter)
void pfring_zc_queue_breakloop(pfring_zc_queue *queue)
int pfring_zc_check_device_license_by_name(char *device_name, u_int32_t *expiration_epoch)
void pfring_zc_release_packet_handle_to_pool(pfring_zc_buffer_pool *pool, pfring_zc_pkt_buff *pkt_handle)
void pfring_zc_get_queue_settings(pfring_zc_queue *queue, pfring_zc_queue_info *info)
void pfring_zc_sync_queue(pfring_zc_queue *queue, pfring_zc_queue_mode direction)
u_int32_t metadata_len
Definition: pfring_zc.h:98
pfring_zc_queue * pfring_zc_create_queue(pfring_zc_cluster *cluster, u_int32_t queue_len)
u_int32_t pfring_zc_get_cluster_id(pfring_zc_cluster *cluster)
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_empty(pfring_zc_queue *queue)
void pfring_zc_release_packet_handle(pfring_zc_cluster *cluster, pfring_zc_pkt_buff *pkt_handle)
int pfring_zc_vm_backend_enable(pfring_zc_cluster *cluster)
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)
u_char * pfring_zc_pkt_buff_data(pfring_zc_pkt_buff *pkt_handle, pfring_zc_queue *queue)
pfring_zc_queue_mode
Definition: pfring_zc.h:60
Definition: pfring_zc.h:85
pfring_zc_buffer_pool * pfring_zc_create_buffer_pool(pfring_zc_cluster *cluster, u_int32_t pool_len)