| /* |
| ************************************************************************** |
| * Copyright (c) 2014, The Linux Foundation. All rights reserved. |
| * Permission to use, copy, modify, and/or distribute this software for |
| * any purpose with or without fee is hereby granted, provided that the |
| * above copyright notice and this permission notice appear in all copies. |
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT |
| * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| ************************************************************************** |
| */ |
| |
| struct ecm_classifier_default_instance; |
| |
| /* |
| * Structure used to synchronise a classifier instance with the state as presented by the accel engine |
| */ |
| struct ecm_classifier_default_sync { |
| uint8_t qos; |
| uint32_t qws; |
| uint32_t qwr; |
| uint16_t qbc; |
| uint32_t from_data_total; /* Amount of bytes sent by 'from' */ |
| uint32_t to_data_total; /* Amount of bytes sent by 'to' */ |
| }; |
| |
| typedef void (*ecm_classifier_default_process_callback_t)(struct ecm_classifier_default_instance *dci, ecm_tracker_sender_type_t sender, struct iphdr *ip_hdr, int ip_hdr_len, int ip_total_len, struct sk_buff *skb); |
| typedef ecm_db_timer_group_t (*ecm_classifier_default_timer_group_change_callback_t)(struct ecm_classifier_default_instance *dci); |
| typedef struct ecm_tracker_instance *(*ecm_classifier_default_tracker_get_and_ref_callback_t)(struct ecm_classifier_default_instance *dci); |
| |
| struct ecm_classifier_default_instance { |
| struct ecm_classifier_instance base; /* Base class implemented by this classifier */ |
| |
| /* |
| * Functions specific to the default classifier. |
| */ |
| ecm_classifier_default_process_callback_t process; /* Process new data for connection - Used ONLY by front ends */ |
| ecm_classifier_default_timer_group_change_callback_t timer_group_change; |
| /* Utility to other classifiers: detect if update is needed to timer group */ |
| ecm_classifier_default_tracker_get_and_ref_callback_t tracker_get_and_ref; |
| /* Utility to front end: Obtain default classifier tracker */ |
| }; |
| |
| struct ecm_classifier_default_instance *ecm_classifier_default_instance_alloc(struct ecm_db_connection_instance *ci, int protocol, ecm_db_direction_t dir, int from_port, int to_port); |
| |