1 /* 2 pmacct (Promiscuous mode IP Accounting package) 3 pmacct is Copyright (C) 2003-2019 by Paolo Lucente 4 */ 5 6 /* 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 2 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program; if no, write to the Free Software 19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 */ 21 22 #ifndef PKT_HANDLERS_H 23 #define PKT_HANDLERS_H 24 25 extern struct channels_list_entry channels_list[MAX_N_PLUGINS]; /* communication channels: core <-> plugins */ 26 extern pkt_handler phandler[N_PRIMITIVES]; 27 28 extern void evaluate_packet_handlers(); 29 extern void src_mac_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 30 extern void dst_mac_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 31 extern void vlan_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 32 extern void cos_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 33 extern void etype_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 34 extern void mpls_label_top_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 35 extern void mpls_label_bottom_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 36 extern void mpls_stack_depth_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 37 extern void src_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 38 extern void dst_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 39 extern void src_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 40 extern void dst_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 41 extern void ip_tos_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 42 extern void ip_proto_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 43 extern void tcp_flags_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 44 extern void tunnel_src_mac_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 45 extern void tunnel_dst_mac_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 46 extern void tunnel_src_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 47 extern void tunnel_dst_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 48 extern void tunnel_ip_proto_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 49 extern void tunnel_ip_tos_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 50 extern void tunnel_src_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 51 extern void tunnel_dst_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 52 extern void vxlan_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 53 extern void counters_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 54 extern void counters_renormalize_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 55 extern void time_new_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 56 extern void time_pcap_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 57 extern void post_tag_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 58 extern void post_tag2_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 59 extern void flows_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 60 extern void class_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 61 extern void in_iface_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 62 extern void out_iface_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 63 extern void sampling_rate_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 64 extern void sampling_direction_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 65 extern void timestamp_start_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 66 extern void timestamp_arrival_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 67 extern void custom_primitives_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 68 extern void sfprobe_payload_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 69 extern void nfprobe_extras_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 70 extern void mpls_vpn_rd_frommap_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 71 72 extern void NF_src_mac_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 73 extern void NF_dst_mac_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 74 extern void NF_vlan_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 75 extern void NF_cos_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 76 extern void NF_etype_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 77 extern void NF_src_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 78 extern void NF_dst_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 79 extern void NF_src_nmask_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 80 extern void NF_dst_nmask_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 81 extern void NF_src_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 82 extern void NF_dst_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 83 extern void NF_src_as_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 84 extern void NF_dst_as_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 85 extern void NF_peer_src_as_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 86 extern void NF_peer_dst_as_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 87 extern void NF_peer_src_ip_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 88 extern void NF_peer_dst_ip_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 89 extern void NF_ip_tos_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 90 extern void NF_ip_proto_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 91 extern void NF_tcp_flags_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 92 extern void NF_counters_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 93 extern void NF_time_msecs_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 94 extern void NF_time_secs_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 95 extern void NF_time_new_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 96 extern void NF_flows_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 97 extern void NF_class_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 98 extern void NF_in_iface_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 99 extern void NF_out_iface_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 100 extern void NF_sampling_rate_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 101 extern void NF_sampling_direction_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 102 extern void NF_post_nat_src_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 103 extern void NF_post_nat_dst_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 104 extern void NF_post_nat_src_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 105 extern void NF_post_nat_dst_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 106 extern void NF_nat_event_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 107 extern void NF_mpls_label_top_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 108 extern void NF_mpls_label_bottom_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 109 extern void NF_mpls_stack_depth_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 110 extern void NF_mpls_vpn_id_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 111 extern void NF_mpls_pw_id_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 112 extern void NF_vxlan_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 113 extern void NF_timestamp_start_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 114 extern void NF_timestamp_end_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 115 extern void NF_timestamp_arrival_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 116 extern void NF_sequence_number_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 117 extern void NF_version_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 118 extern void NF_sysid_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 119 extern void NF_custom_primitives_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 120 extern void NF_counters_renormalize_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 121 extern void NF_counters_map_renormalize_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 122 extern void NF_cust_tag_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 123 extern void NF_cust_tag2_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 124 extern void NF_cust_label_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 125 extern void NF_tee_payload_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 126 127 extern void bgp_ext_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 128 extern void nfprobe_bgp_ext_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 129 extern void sfprobe_bgp_ext_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 130 extern void bgp_peer_src_as_frommap_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 131 extern void bgp_src_local_pref_frommap_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 132 extern void bgp_src_med_frommap_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 133 extern void bgp_src_nmask_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 134 extern void bgp_dst_nmask_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 135 extern void bgp_peer_dst_ip_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 136 137 extern void igp_src_nmask_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 138 extern void igp_dst_nmask_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 139 extern void igp_peer_dst_ip_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 140 141 extern void SF_src_mac_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 142 extern void SF_dst_mac_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 143 extern void SF_vlan_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 144 extern void SF_cos_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 145 extern void SF_etype_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 146 extern void SF_src_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 147 extern void SF_dst_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 148 extern void SF_src_nmask_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 149 extern void SF_dst_nmask_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 150 extern void SF_src_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 151 extern void SF_dst_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 152 extern void SF_src_as_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 153 extern void SF_dst_as_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 154 extern void SF_peer_src_ip_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 155 extern void SF_peer_dst_ip_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 156 extern void SF_ip_tos_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 157 extern void SF_ip_proto_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 158 extern void SF_tcp_flags_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 159 extern void SF_flows_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 160 extern void SF_counters_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 161 extern void SF_counters_renormalize_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 162 extern void SF_counters_map_renormalize_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 163 extern void SF_tag_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 164 extern void SF_tag2_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 165 extern void SF_class_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 166 extern void SF_in_iface_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 167 extern void SF_out_iface_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 168 extern void SF_sampling_rate_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 169 extern void SF_sampling_direction_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 170 extern void SF_sampling_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 171 extern void SF_timestamp_start_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 172 extern void SF_timestamp_arrival_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 173 extern void SF_sequence_number_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 174 extern void SF_version_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 175 extern void SF_sysid_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 176 extern void SF_bgp_peer_src_as_fromext_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 177 extern void SF_bgp_peer_src_as_fromstd_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 178 extern void SF_as_path_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 179 extern void SF_peer_src_as_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 180 extern void SF_peer_dst_as_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 181 extern void SF_local_pref_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 182 extern void SF_std_comms_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 183 extern void SF_tunnel_src_mac_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 184 extern void SF_tunnel_dst_mac_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 185 extern void SF_tunnel_src_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 186 extern void SF_tunnel_dst_host_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 187 extern void SF_tunnel_ip_proto_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 188 extern void SF_tunnel_ip_tos_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 189 extern void SF_tunnel_src_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 190 extern void SF_tunnel_dst_port_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 191 extern void SF_vxlan_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 192 extern void SF_tee_payload_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 193 extern void SF_mpls_label_top_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 194 extern void SF_mpls_label_bottom_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 195 extern void SF_mpls_stack_depth_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 196 extern void SF_mpls_pw_id_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 197 extern void SF_custom_primitives_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 198 199 extern void pre_tag_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 200 extern void pre_tag2_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 201 extern void pre_tag_label_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 202 extern void sampling_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 203 extern void sfprobe_sampling_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 204 205 #if defined (WITH_GEOIP) 206 extern void pm_geoip_init(); 207 extern void src_host_country_geoip_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 208 extern void dst_host_country_geoip_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 209 #endif 210 211 #if defined (WITH_GEOIPV2) 212 extern void pm_geoipv2_init(); 213 extern void pm_geoipv2_close(); 214 extern void src_host_geoipv2_lookup_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 215 extern void dst_host_geoipv2_lookup_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 216 extern void src_host_country_geoipv2_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 217 extern void dst_host_country_geoipv2_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 218 extern void src_host_pocode_geoipv2_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 219 extern void dst_host_pocode_geoipv2_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 220 extern void src_host_coords_geoipv2_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 221 extern void dst_host_coords_geoipv2_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 222 #endif 223 224 #if defined (WITH_NDPI) 225 extern void ndpi_class_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 226 extern void NF_ndpi_class_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 227 extern void SF_ndpi_class_handler(struct channels_list_entry *, struct packet_ptrs *, char **); 228 #endif 229 230 extern int evaluate_lm_method(struct packet_ptrs *, u_int8_t, u_int32_t, u_int32_t); 231 extern char *lookup_tpl_ext_db(void *, u_int32_t, u_int16_t); 232 #endif //PKT_HANDLERS_H 233