diff options
Diffstat (limited to 'data-ipa-cfg-mgr/ipacm/inc/IPACM_LanToLan.h')
-rw-r--r-- | data-ipa-cfg-mgr/ipacm/inc/IPACM_LanToLan.h | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/data-ipa-cfg-mgr/ipacm/inc/IPACM_LanToLan.h b/data-ipa-cfg-mgr/ipacm/inc/IPACM_LanToLan.h deleted file mode 100644 index 06d5832..0000000 --- a/data-ipa-cfg-mgr/ipacm/inc/IPACM_LanToLan.h +++ /dev/null @@ -1,175 +0,0 @@ -/* -Copyright (c) 2014, The Linux Foundation. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of The Linux Foundation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * IPACM_LanToLan.h - * - * Created on: Mar 4th, 2014 - * Author: Shihuan Liu - */ - -#ifndef IPACM_LANTOLAN_H -#define IPACM_LANTOLAN_H - -#include <stdint.h> -#include "linux/msm_ipa.h" -#include "IPACM_Iface.h" -#include "IPACM_Defs.h" -#include "IPACM_Lan.h" -#include <unordered_map> - -#ifdef FEATURE_IPA_ANDROID -#include <libxml/list.h> -#else/* defined(FEATURE_IPA_ANDROID) */ -#include <list> -#endif /* ndefined(FEATURE_IPA_ANDROID)*/ - -struct client_info; - -struct peer_info -{ - struct client_info* peer_pointer; - int num_connection; -}; - -//used to store rule handles for offload link (one direction) -struct offload_link_info -{ - struct client_info* peer_pointer; - uint32_t flt_rule_hdl; - lan_to_lan_rt_rule_hdl rt_rule_hdl; - uint32_t hdr_hdl; -}; - -typedef list<peer_info> peer_info_list; -typedef list<offload_link_info> offload_link_info_list; -typedef list<ipacm_event_connection> connection_list; - -struct client_info -{ - union - { - uint32_t ipv4_addr; - uint32_t ipv6_addr[4]; - } ip; - uint8_t mac_addr[6]; - bool is_active; - bool is_powersave; - IPACM_Lan* p_iface; - peer_info_list peer; - offload_link_info_list link; -}; - -struct v6_addr -{ - uint32_t ipv6_addr[4]; -}; - -typedef unordered_map<uint32_t, client_info> client_table_v4; -typedef unordered_map<uint64_t, client_info> client_table_v6; - - -class IPACM_LanToLan : public IPACM_Listener -{ - -public: - - IPACM_LanToLan(); - ~IPACM_LanToLan(); - - void handle_new_connection(ipacm_event_connection* new_conn); - void handle_del_connection(ipacm_event_connection* del_conn); - - static IPACM_LanToLan* getLan2LanInstance(); - -private: - - uint8_t num_offload_pair_v4_; - uint8_t num_offload_pair_v6_; - client_table_v4 client_info_v4_; - client_table_v6 client_info_v6_; - - connection_list connection_v4_; - connection_list connection_v6_; - - static IPACM_LanToLan* p_instance; - - void event_callback(ipa_cm_event_id event, void* param); - - void handle_client_active(ipacm_event_lan_client* data); - - void check_potential_link(ipa_ip_type iptype, client_info* client); - - int add_offload_link(ipa_ip_type iptype, client_info* client, client_info* peer); - - void handle_client_inactive(ipacm_event_lan_client* data); - - int turnoff_offload_links(ipa_ip_type iptype, client_info* client); - - int del_offload_link(ipa_ip_type iptype, IPACM_Lan* client, IPACM_Lan* peer, offload_link_info* link); - - void handle_client_disconnect(ipacm_event_lan_client* data); - - int clear_peer_list(client_info* client); - - void handle_client_power_save(ipacm_event_lan_client* data); - - void handle_client_power_recover(ipacm_event_lan_client* data); - - int remove_flt_rules(ipa_ip_type iptype, client_info* client); - - int add_flt_rules(ipa_ip_type iptype, client_info* client); - -//the following are for connections - - void handle_new_lan2lan_connection(ipacm_event_connection* data); - - bool add_connection(client_info* src_client, client_info* dst_client); - - void handle_del_lan2lan_connection(ipacm_event_connection* data); - - bool remove_connection(client_info* src_client, client_info* dst_client); - - void erase_offload_link(ipa_ip_type iptype, client_info* src_client, client_info* dst_client); - - void generate_new_connection(ipa_ip_type iptype, client_info* client); - - bool is_lan2lan_connection(ipacm_event_connection* data); - - bool is_potential_lan2lan_connection(ipacm_event_connection* new_conn); - - void cache_new_connection(ipacm_event_connection* new_conn); - - void remove_cache_connection(ipacm_event_connection* del_conn); - - void check_cache_connection(ipa_ip_type iptype, client_info* client); - -}; - -#endif |