diff options
author | Davide Garberi <dade.garberi@gmail.com> | 2019-01-19 20:33:01 +0100 |
---|---|---|
committer | Davide Garberi <dade.garberi@gmail.com> | 2019-01-26 13:56:25 +0100 |
commit | 53a1ffbf112cf677a1fa6168d34d47b39a59aa1b (patch) | |
tree | 80c9ff5fc08f59cb4feb2f11bd0f1c1540cab354 /data-ipa-cfg-mgr/ipacm/inc/IPACM_LanToLan.h | |
parent | 5e5938dad03868d1fc1615f809ec1dda2aaf55ee (diff) |
msm8996-common: Use common data-ipa-cfg-mgr
* Located at vendor/qcom/opensource/data-ipa-cfg-mgr
Signed-off-by: Davide Garberi <dade.garberi@gmail.com>
Change-Id: I6b1f1a034b8e4cafe5ae28a16327cc4e2ec6afa3
Signed-off-by: Davide Garberi <dade.garberi@gmail.com>
Diffstat (limited to 'data-ipa-cfg-mgr/ipacm/inc/IPACM_LanToLan.h')
-rw-r--r-- | data-ipa-cfg-mgr/ipacm/inc/IPACM_LanToLan.h | 282 |
1 files changed, 0 insertions, 282 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 e517e97..0000000 --- a/data-ipa-cfg-mgr/ipacm/inc/IPACM_LanToLan.h +++ /dev/null @@ -1,282 +0,0 @@ -/* -Copyright (c) 2014-2017, 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" - -#ifdef FEATURE_IPA_ANDROID -#include <libxml/list.h> -#else/* defined(FEATURE_IPA_ANDROID) */ -#include <list> -#endif /* ndefined(FEATURE_IPA_ANDROID)*/ - -#define MAX_NUM_CACHED_CLIENT_ADD_EVENT 10 -#define MAX_NUM_IFACE 10 -#define MAX_NUM_CLIENT 16 - -struct vlan_iface_info -{ - char vlan_iface_name[IPA_RESOURCE_NAME_MAX]; - uint8_t vlan_id; - uint32_t vlan_iface_ipv6_addr[4]; - uint8_t vlan_client_mac[6]; - uint32_t vlan_client_ipv6_addr[4]; -}; - -struct l2tp_vlan_mapping_info -{ - /* the following are l2tp iface info (name, session id) */ - char l2tp_iface_name[IPA_RESOURCE_NAME_MAX]; - uint8_t l2tp_session_id; - /* the following are mdm vlan iface info (name, vlan id, ipv6 addr) */ - char vlan_iface_name[IPA_RESOURCE_NAME_MAX]; - uint8_t vlan_id; - uint32_t vlan_iface_ipv6_addr[4]; - /* the following are MIB3 vlan client info (mac, ipv6 addr) */ - uint8_t vlan_client_mac[6]; - uint32_t vlan_client_ipv6_addr[4]; - /* the following is MIB3 l2tp client info (mac) */ - uint8_t l2tp_client_mac[6]; -}; - -struct rt_rule_info -{ - int num_hdl[IPA_IP_MAX]; /* one client may need more than one routing rules on the same routing table depending on tx_prop */ - uint32_t rule_hdl[IPA_IP_MAX][MAX_NUM_PROP]; -}; - -struct l2tp_rt_rule_info -{ - uint32_t first_pass_hdr_hdl; /* first pass hdr template (IPv4 and IPv6 use the same hdr template) */ - uint32_t first_pass_hdr_proc_ctx_hdl[IPA_IP_MAX]; /* first pass hdr proc ctx */ - uint32_t second_pass_hdr_hdl; /* second pass hdr template (IPv4 and IPv6 use the same hdr template) */ - int num_rt_hdl[IPA_IP_MAX]; /* number of TX properties for IPv4 and IPv6 respectively */ - uint32_t first_pass_rt_rule_hdl[IPA_IP_MAX][MAX_NUM_PROP]; /* first pass routing rule */ - uint32_t second_pass_rt_rule_hdl[MAX_NUM_PROP]; /*second pass routing rule (only ipv6 rt rule is needed) */ -}; - -struct client_info -{ - uint8_t mac_addr[6]; - rt_rule_info inter_iface_rt_rule_hdl[IPA_HDR_L2_MAX]; /* routing rule handles of inter interface communication based on source l2 header type */ - rt_rule_info intra_iface_rt_rule_hdl; /* routing rule handles of inter interface communication */ - bool is_l2tp_client; - l2tp_vlan_mapping_info *mapping_info; - l2tp_rt_rule_info l2tp_rt_rule_hdl[IPA_HDR_L2_MAX]; -}; - -struct flt_rule_info -{ - client_info *p_client; - uint32_t flt_rule_hdl[IPA_IP_MAX]; - uint32_t l2tp_first_pass_flt_rule_hdl[IPA_IP_MAX]; /* L2TP filtering rules are destination MAC based */ - uint32_t l2tp_second_pass_flt_rule_hdl; -}; - -struct peer_iface_info -{ - class IPACM_LanToLan_Iface *peer; - char rt_tbl_name_for_rt[IPA_IP_MAX][IPA_RESOURCE_NAME_MAX]; - char rt_tbl_name_for_flt[IPA_IP_MAX][IPA_RESOURCE_NAME_MAX]; - list<flt_rule_info> flt_rule; -}; - -class IPACM_LanToLan_Iface -{ -public: - IPACM_LanToLan_Iface(IPACM_Lan *p_iface); - ~IPACM_LanToLan_Iface(); - - void add_client_rt_rule_for_new_iface(); - - void add_all_inter_interface_client_flt_rule(ipa_ip_type iptype); - - void add_all_intra_interface_client_flt_rule(ipa_ip_type iptype); - - void handle_down_event(); - - void handle_wlan_scc_mcc_switch(); - - void handle_intra_interface_info(); - - void handle_new_iface_up(char rt_tbl_name_for_flt[][IPA_RESOURCE_NAME_MAX], char rt_tbl_name_for_rt[][IPA_RESOURCE_NAME_MAX], - IPACM_LanToLan_Iface *peer_iface); - - void handle_client_add(uint8_t *mac, bool is_l2tp_client, l2tp_vlan_mapping_info *mapping_info); - - void handle_client_del(uint8_t *mac); - - void print_data_structure_info(); - - IPACM_Lan* get_iface_pointer(); - - bool get_m_is_ip_addr_assigned(ipa_ip_type iptype); - - void set_m_is_ip_addr_assigned(ipa_ip_type iptype, bool value); - - bool get_m_support_inter_iface_offload(); - - bool get_m_support_intra_iface_offload(); - - void increment_ref_cnt_peer_l2_hdr_type(ipa_hdr_l2_type peer_l2_type); - - void decrement_ref_cnt_peer_l2_hdr_type(ipa_hdr_l2_type peer_l2_type); -#ifdef FEATURE_L2TP - void switch_to_l2tp_iface(); - - bool set_l2tp_iface(char *vlan_iface_name); - - bool is_l2tp_iface(); - - void handle_l2tp_enable(); - - void handle_l2tp_disable(); -#endif -private: - - IPACM_Lan *m_p_iface; - bool m_is_ip_addr_assigned[IPA_IP_MAX]; - bool m_support_inter_iface_offload; - bool m_support_intra_iface_offload; - bool m_is_l2tp_iface; - - int ref_cnt_peer_l2_hdr_type[IPA_HDR_L2_MAX]; /* reference count of l2 header type of peer interfaces */ - uint32_t hdr_proc_ctx_for_inter_interface[IPA_HDR_L2_MAX]; - uint32_t hdr_proc_ctx_for_intra_interface; - uint32_t hdr_proc_ctx_for_l2tp; /* uc needs to remove 62 bytes IPv6 + L2TP + inner Ethernet header */ - - list<client_info> m_client_info; /* client list */ - list<peer_iface_info> m_peer_iface_info; /* peer information list */ - - /* The following members are for intra-interface communication*/ - peer_iface_info m_intra_interface_info; - - void add_one_client_flt_rule(IPACM_LanToLan_Iface *peer_iface, client_info *client); - - void add_client_flt_rule(peer_iface_info *peer, client_info *client, ipa_ip_type iptype); - - void del_one_client_flt_rule(IPACM_LanToLan_Iface *peer_iface, client_info *client); - - void del_client_flt_rule(peer_iface_info *peer, client_info *client); - - void add_client_rt_rule(peer_iface_info *peer, client_info *client); - - void del_client_rt_rule(peer_iface_info *peer, client_info *client); - - void add_l2tp_client_rt_rule(peer_iface_info *peer, client_info *client); - - void clear_all_flt_rule_for_one_peer_iface(peer_iface_info *peer); - - void clear_all_rt_rule_for_one_peer_iface(peer_iface_info *peer); - - void add_hdr_proc_ctx(ipa_hdr_l2_type peer_l2_type); - - void del_hdr_proc_ctx(ipa_hdr_l2_type peer_l2_type); - - void print_peer_info(peer_iface_info *peer_info); - -}; - -class IPACM_LanToLan : public IPACM_Listener -{ - -public: - - static IPACM_LanToLan* p_instance; - static IPACM_LanToLan* get_instance(); -#ifdef FEATURE_L2TP - bool has_l2tp_iface(); -#endif - -private: - - IPACM_LanToLan(); - - ~IPACM_LanToLan(); - - bool m_has_l2tp_iface; - - list<class IPACM_LanToLan_Iface> m_iface; - - list<ipacm_event_eth_bridge> m_cached_client_add_event; - - list<vlan_iface_info> m_vlan_iface; - - list<l2tp_vlan_mapping_info> m_l2tp_vlan_mapping; - - void handle_iface_up(ipacm_event_eth_bridge *data); - - void handle_iface_down(ipacm_event_eth_bridge *data); - - void handle_client_add(ipacm_event_eth_bridge *data); - - void handle_client_del(ipacm_event_eth_bridge *data); - - void handle_wlan_scc_mcc_switch(ipacm_event_eth_bridge *data); - -#ifdef FEATURE_L2TP - void handle_add_vlan_iface(ipa_ioc_vlan_iface_info *data); - - void handle_del_vlan_iface(ipa_ioc_vlan_iface_info *data); - - void handle_add_l2tp_vlan_mapping(ipa_ioc_l2tp_vlan_mapping_info *data); - - void handle_del_l2tp_vlan_mapping(ipa_ioc_l2tp_vlan_mapping_info *data); - - void handle_vlan_client_info(ipacm_event_data_all *data); - - void handle_vlan_iface_info(ipacm_event_data_all *data); -#endif - - void handle_new_iface_up(IPACM_LanToLan_Iface *new_iface, IPACM_LanToLan_Iface *exist_iface); - - void event_callback(ipa_cm_event_id event, void* param); - - void handle_cached_client_add_event(IPACM_Lan *p_iface); - - void clear_cached_client_add_event(IPACM_Lan *p_iface); - - void print_data_structure_info(); - -}; - -#endif |