![]() |
PF_RING API
API documentation for PF_RING: high-speed packet capture, filtering and analysis framework.
|
PF_RING kernel module header file. More...
#include <netinet/in.h>#include <endian.h>Go to the source code of this file.
Classes | |
| struct | pkt_offset |
| union | ip_addr |
| struct | eth_vlan_hdr |
| struct | kcompact_ipv6_hdr |
| struct | kcompact_ipv6_opt_hdr |
| struct | gre_header |
| struct | gtp_v1_hdr |
| struct | gtp_v1_opt_hdr |
| struct | gtp_v1_ext_hdr |
| struct | __attribute__ |
| struct | mobile_ip_hdr |
| struct | vxlan_hdr |
| struct | pkt_parsing_info |
| struct | pfring_extended_pkthdr |
| struct | pfring_pkthdr |
| struct | pfring_timespec |
| struct | _sw_filtering_hash_bucket |
| struct | flowSlotInfo |
| struct | add_to_cluster |
| struct | create_cluster_referee_info |
| struct | public_cluster_object_info |
| struct | lock_cluster_object_info |
Macros | |
| #define | __LITTLE_ENDIAN_BITFIELD |
| #define | RING_VERSION "9.2.0" |
| #define | RING_VERSION_NUM 0x090200 |
| #define | RING_FLOWSLOT_VERSION 21 |
| #define | RING_MAGIC |
| #define | RING_MAGIC_VALUE 0x88 |
| #define | RING_USE_SOCKADDR_LL /* use sockaddr_ll instead of sockaddr */ |
| #define | MIN_NUM_SLOTS 512 |
| #define | DEFAULT_NUM_SLOTS 4096 |
| #define | DEFAULT_BUCKET_LEN 128 |
| #define | MAX_NUM_DEVICES 256 |
| #define | MAX_NUM_RING_SOCKETS 512 |
| #define | MAX_CLUSTER_QUEUES 64 |
| #define | DEFAULT_MIN_PKT_QUEUED 128 |
| #define | DEFAULT_POLL_WATERMARK_TIMEOUT 0 |
| #define | FILTERING_SAMPLING_RATIO 10 |
| #define | SO_ADD_TO_CLUSTER 99 |
| #define | SO_REMOVE_FROM_CLUSTER 100 |
| #define | SO_SET_STRING 101 |
| #define | SO_ADD_FILTERING_RULE 102 |
| #define | SO_REMOVE_FILTERING_RULE 103 |
| #define | SO_TOGGLE_FILTER_POLICY 104 |
| #define | SO_SET_SAMPLING_RATE 105 |
| #define | SO_ACTIVATE_RING 106 |
| #define | SO_RING_BUCKET_LEN 107 |
| #define | SO_SET_CHANNEL_ID 108 |
| #define | SO_PURGE_IDLE_HASH_RULES 109 /* inactivity (sec) */ |
| #define | SO_SET_APPL_NAME 110 |
| #define | SO_SET_PACKET_DIRECTION 111 |
| #define | SO_SET_MASTER_RING 112 |
| #define | SO_ADD_HW_FILTERING_RULE 113 |
| #define | SO_DEL_HW_FILTERING_RULE 114 |
| #define | SO_DISCARD_INJECTED_PKTS 115 /* discard stack injected packets */ |
| #define | SO_DEACTIVATE_RING 116 |
| #define | SO_SET_POLL_WATERMARK 117 |
| #define | SO_SET_VIRTUAL_FILTERING_DEVICE 118 |
| #define | SO_REHASH_RSS_PACKET 119 |
| #define | SO_SET_FILTERING_SAMPLING_RATE 120 |
| #define | SO_SET_POLL_WATERMARK_TIMEOUT 121 |
| #define | SO_SET_DEV_TIME 122 |
| #define | SO_ADJ_DEV_TIME 123 |
| #define | SO_SHUTDOWN_RING 124 |
| #define | SO_PURGE_IDLE_RULES 125 /* inactivity (sec) */ |
| #define | SO_SET_SOCKET_MODE 126 |
| #define | SO_USE_SHORT_PKT_HEADER 127 |
| #define | SO_CONTROL_DEV_QUEUE 128 |
| #define | SO_ENABLE_RX_PACKET_BOUNCE 131 |
| #define | SO_SET_APPL_STATS 133 |
| #define | SO_SET_STACK_INJECTION_MODE 134 /* stack injection/interception from userspace */ |
| #define | SO_CREATE_CLUSTER_REFEREE 135 |
| #define | SO_PUBLISH_CLUSTER_OBJECT 136 |
| #define | SO_LOCK_CLUSTER_OBJECT 137 |
| #define | SO_UNLOCK_CLUSTER_OBJECT 138 |
| #define | SO_SET_CUSTOM_BOUND_DEV_NAME 139 |
| #define | SO_SET_IFF_PROMISC 140 |
| #define | SO_SET_VLAN_ID 141 |
| #define | SO_GET_RING_VERSION 170 |
| #define | SO_GET_FILTERING_RULE_STATS 171 |
| #define | SO_GET_HASH_FILTERING_RULE_STATS 172 |
| #define | SO_GET_ZC_DEVICE_INFO 173 |
| #define | SO_GET_NUM_RX_CHANNELS 174 |
| #define | SO_GET_RING_ID 175 |
| #define | SO_GET_BPF_EXTENSIONS 176 |
| #define | SO_GET_BOUND_DEVICE_ADDRESS 177 |
| #define | SO_GET_NUM_QUEUED_PKTS 178 |
| #define | SO_GET_PKT_HEADER_LEN 179 |
| #define | SO_GET_LOOPBACK_TEST 180 |
| #define | SO_GET_BUCKET_LEN 181 |
| #define | SO_GET_DEVICE_TYPE 182 |
| #define | SO_GET_EXTRA_DMA_MEMORY 183 |
| #define | SO_GET_BOUND_DEVICE_IFINDEX 184 |
| #define | SO_GET_DEVICE_IFINDEX 185 |
| #define | SO_GET_APPL_STATS_FILE_NAME 186 |
| #define | SO_GET_LINK_STATUS 187 |
| #define | SO_GET_DEV_TX_TIME 188 |
| #define | SO_GET_DEV_STATS 189 |
| #define | SO_SELECT_ZC_DEVICE 190 |
| #define | SO_GET_CLUSTER_OBJECT_INFO 191 |
| #define | PF_RING_ERROR_GENERIC -1 |
| #define | PF_RING_ERROR_INVALID_ARGUMENT -2 |
| #define | PF_RING_ERROR_NO_PKT_AVAILABLE -3 |
| #define | PF_RING_ERROR_NO_TX_SLOT_AVAILABLE -4 |
| #define | PF_RING_ERROR_WRONG_CONFIGURATION -5 |
| #define | PF_RING_ERROR_END_OF_DEMO_MODE -6 |
| #define | PF_RING_ERROR_NOT_SUPPORTED -7 |
| #define | PF_RING_ERROR_INVALID_LIB_VERSION -8 |
| #define | PF_RING_ERROR_UNKNOWN_ADAPTER -9 |
| #define | PF_RING_ERROR_NOT_ENOUGH_MEMORY -10 |
| #define | PF_RING_ERROR_INVALID_STATUS -11 |
| #define | PF_RING_ERROR_RING_NOT_ENABLED -12 |
| #define | PF_RING_ERROR_BAD_IFNAME -13 |
| #define | PF_RING_ERROR_MOD_NOT_LOADED -14 |
| #define | PF_RING_ERROR_UNABLE_TO_MAP -15 |
| #define | PF_RING_ERROR_UNABLE_TO_GET_INFO -16 |
| #define | PF_RING_ERROR_MMAP_FAILURE -17 |
| #define | PF_RING_ERROR_INIT_FAILURE -18 |
| #define | REFLECTOR_NAME_LEN 8 |
| #define | IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } } |
| #define | ETH_ALEN 6 |
| #define | REFLECT_PACKET_DEVICE_NONE 0 |
| #define | ipv4_tos ip_tos |
| #define | ipv6_tos ip_tos |
| #define | ipv4_src ip_src.v4 |
| #define | ipv4_dst ip_dst.v4 |
| #define | ipv6_src ip_src.v6 |
| #define | ipv6_dst ip_dst.v6 |
| #define | host4_low host_low.v4 |
| #define | host4_high host_high.v4 |
| #define | host6_low host_low.v6 |
| #define | host6_high host_high.v6 |
| #define | host4_peer_a host_peer_a.v4 |
| #define | host4_peer_b host_peer_b.v4 |
| #define | host6_peer_a host_peer_a.v6 |
| #define | host6_peer_b host_peer_b.v6 |
| #define | NEXTHDR_HOP 0 |
| #define | NEXTHDR_IPV6 41 |
| #define | NEXTHDR_ROUTING 43 |
| #define | NEXTHDR_FRAGMENT 44 |
| #define | NEXTHDR_ESP 50 |
| #define | NEXTHDR_AUTH 51 |
| #define | NEXTHDR_NONE 59 |
| #define | NEXTHDR_DEST 60 |
| #define | NEXTHDR_MOBILITY 135 |
| #define | GRE_HEADER_CHECKSUM 0x8000 |
| #define | GRE_HEADER_ROUTING 0x4000 |
| #define | GRE_HEADER_KEY 0x2000 |
| #define | GRE_HEADER_SEQ_NUM 0x1000 |
| #define | GRE_HEADER_VERSION 0x0007 |
| #define | GTP_SIGNALING_PORT 2123 |
| #define | GTP_U_DATA_PORT 2152 |
| #define | GTP_VERSION_1 0x1 |
| #define | GTP_VERSION_2 0x2 |
| #define | GTP_PROTOCOL_TYPE 0x1 |
| #define | GTP_FLAGS_VERSION 0xE0 |
| #define | GTP_FLAGS_VERSION_SHIFT 5 |
| #define | GTP_FLAGS_PROTOCOL_TYPE 0x10 |
| #define | GTP_FLAGS_RESERVED 0x08 |
| #define | GTP_FLAGS_EXTENSION 0x04 |
| #define | GTP_FLAGS_SEQ_NUM 0x02 |
| #define | GTP_FLAGS_NPDU_NUM 0x01 |
| #define | GTP_EXT_HDR_LEN_UNIT_BYTES 4 |
| #define | NO_TUNNEL_ID 0xFFFFFFFF |
| #define | MOBILE_IP_PORT 434 |
| #define | VXLAN_IP_PORT 4789 |
| #define | UNKNOWN_INTERFACE -1 |
| #define | FAKE_PACKET |
| #define | PKT_FLAGS_CHECKSUM_OFFLOAD 1 << 0 /* IP/TCP checksum offload enabled */ |
| #define | PKT_FLAGS_CHECKSUM_OK 1 << 1 /* Valid checksum (with IP/TCP checksum offload enabled) */ |
| #define | PKT_FLAGS_IP_MORE_FRAG 1 << 2 /* IP More fragments flag set */ |
| #define | PKT_FLAGS_IP_FRAG_OFFSET 1 << 3 /* IP fragment offset set (not 0) */ |
| #define | PKT_FLAGS_VLAN_HWACCEL 1 << 4 /* VLAN stripped by hw */ |
| #define | PKT_FLAGS_FLOW_HIT 1 << 5 /* PF_RING_FLOW_OFFLOAD: flow hit */ |
| #define | PKT_FLAGS_FLOW_MISS 1 << 6 /* PF_RING_FLOW_OFFLOAD: flow miss */ |
| #define | PKT_FLAGS_FLOW_UNHANDLED 1 << 7 /* PF_RING_FLOW_OFFLOAD: flow unhandled */ |
| #define | MAX_NUM_LIST_ELEMENTS MAX_NUM_RING_SOCKETS /* sizeof(bits_set) [see below] */ |
| #define | FILTER_TUNNEL_ID_FLAG 1 << 0 |
| #define | FILTERING_RULE_AUTO_RULE_ID 0xFFFF |
| #define | MAGIC_HW_FILTERING_RULE_REQUEST 0x29010020 /* deprecated? */ |
| #define | PF_RING_FLOW_UPDATE_CAUSE_SW 0 |
| #define | PF_RING_FLOW_UPDATE_CAUSE_TIMEOUT 1 |
| #define | PF_RING_FLOW_UPDATE_CAUSE_TCP_TERM 2 |
| #define | PF_RING_FLOW_UPDATE_CAUSE_PERIODIC 3 |
| #define | PF_RING_FLOW_UPDATE_CAUSE_PROBE 4 |
| #define | PF_RING_FLOW_UPDATE_CAUSE_UNKNOWN 5 |
| #define | DEFAULT_RING_HASH_SIZE 4096 |
| #define | RING_MIN_SLOT_SIZE (60+sizeof(struct pfring_pkthdr)) |
| #define | RING_MAX_SLOT_SIZE (1514+sizeof(struct pfring_pkthdr)) |
| #define | min_val(a, b) ((a < b) ? a : b) |
| #define | max_val(a, b) ((a > b) ? a : b) |
| #define | PF_RING 27 /* (0x1b) Packet Ring */ |
| #define | SOCK_RING PF_RING |
| #define | SIORINGPOLL 0x8888 |
| #define | IFNAMSIZ 16 |
| #define | RING_ANY_CHANNEL ((u_int64_t)-1) |
| #define | MAX_NUM_RX_CHANNELS 64 /* channel_id_mask is a 64 bit mask */ |
| #define | UNKNOWN_NUM_RX_CHANNELS 1 |
| #define | RING_ANY_VLAN ((u_int16_t)0xFFFF) |
| #define | RING_NO_VLAN ((u_int16_t)0) |
| #define | MAX_CLUSTER_TYPE_ID cluster_per_flow_ip_with_dup_tuple_ext |
| #define | CLUSTER_OPTION_RELAXED_DISTRIBUTION (1<<0) |
Functions | |
| struct pkt_offset | __attribute__ ((packed)) |
| struct gtp_v1_hdr | __attribute__ ((__packed__)) |
Variables | ||
| typedef | __attribute__ | |
| int16_t | eth_offset | |
| int16_t | vlan_offset | |
| int16_t | l3_offset | |
| int16_t | l4_offset | |
| int16_t | payload_offset | |
| u_int16_t | h_vlan_id | |
| u_int16_t | h_proto | |
| u_int8_t | priority | |
| u_int8_t | version | |
| u_int8_t | flow_lbl [3] | |
| u_int16_t | payload_len | |
| u_int8_t | nexthdr | |
| u_int8_t | hop_limit | |
| struct in6_addr | saddr | |
| struct in6_addr | daddr | |
| u_int8_t | hdrlen | |
| u_int8_t | padding [6] | |
| u_int16_t | flags_and_version | |
| u_int16_t | proto | |
| u_int8_t | flags | |
| u_int8_t | message_type | |
| u_int32_t | teid | |
| u_int16_t | seq_num | |
| u_int8_t | npdu_num | |
| u_int8_t | next_ext_hdr | |
| u_int8_t | len | |
| u_int8_t | next_header | |
| u_int16_t | reserved | |
| u_int16_t | gdp | |
| u_int8_t | vni [3] | |
| u_int8_t | res | |
| u_int8_t | dmac [ETH_ALEN] | |
| u_int8_t | smac [ETH_ALEN] | |
| u_int16_t | eth_type | |
| u_int16_t | vlan_id | |
| u_int16_t | qinq_vlan_id | |
| u_int8_t | ip_version | |
| u_int8_t | l3_proto | |
| u_int8_t | ip_tos | |
| ip_addr | ip_src | |
| ip_addr | ip_dst | |
| u_int16_t | l4_src_port | |
| u_int16_t | l4_dst_port | |
| u_int8_t | icmp_type | |
| u_int8_t | icmp_code | |
| struct { | ||
| u_int8_t flags | ||
| u_int32_t seq_num | ||
| u_int32_t ack_num | ||
| } | tcp | |
| tunnel_info | tunnel | |
| int32_t | last_matched_rule_id | |
| struct pkt_offset | offset | |
| u_int64_t | timestamp_ns | |
| u_int8_t | rx_direction | |
| u_int8_t | port_id | |
| u_int16_t | device_id | |
| int32_t | if_index | |
| u_int32_t | pkt_hash | |
| struct { | ||
| int32_t bounce_interface | ||
| struct sk_buff * reserved | ||
| } | tx | |
| struct { | ||
| u_int32_t pid | ||
| } | process | |
| struct pkt_parsing_info | parsed_pkt | |
| struct timeval | ts | |
| u_int32_t | caplen | |
| struct pfring_extended_pkthdr | extended_hdr | |
| u_int32_t | tv_sec | |
| u_int32_t | tv_nsec | |
| struct pf_ring_socket * | pfr | |
| hash_filtering_rule | rule | |
| u_int64_t | match | |
| u_int64_t | filtered | |
| u_int64_t | match_forward | |
| struct _sw_filtering_hash_bucket * | next | |
| u_int16_t | sample_rate | |
| u_int32_t | min_num_slots | |
| u_int32_t | slot_len | |
| u_int32_t | data_len | |
| u_int64_t | tot_mem | |
| volatile u_int64_t | insert_off | |
| u_int64_t | kernel_remove_off | |
| u_int64_t | tot_pkts | |
| u_int64_t | tot_lost | |
| volatile u_int64_t | tot_insert | |
| u_int64_t | kernel_tot_read | |
| u_int64_t | tot_fwd_ok | |
| u_int64_t | tot_fwd_notok | |
| u_int64_t | good_pkt_sent | |
| u_int64_t | pkt_send_error | |
| char | k_padding [4096-128] | |
| volatile u_int64_t | tot_read | |
| volatile u_int64_t | remove_off | |
| char | u_padding [4096-16] | |
| u_int16_t | cluster_id | |
| u_int16_t | queue_id | |
| u_int32_t | options | |
| cluster_type | the_type | |
| u_int32_t | recovered | |
| u_int32_t | object_type | |
| u_int32_t | object_id | |
| u_int32_t | lock_mask | |
| u_int32_t | locked_mask | |
PF_RING kernel module header file.
This header file should NOT be included in PF_RING-based applications directly.
| #define FAKE_PACKET |