summaryrefslogtreecommitdiff
path: root/ipacm/inc/IPACM_Wan.h
diff options
context:
space:
mode:
authorSkylar Chang <chiaweic@codeaurora.org>2015-02-03 14:40:27 -0800
committerSkylar Chang <chiaweic@codeaurora.org>2015-02-03 17:56:57 -0800
commitb2d6cf941dd8c976cc2961085861dcee10900946 (patch)
tree092b330a37500f88ce59cd38a43e7a518df4080d /ipacm/inc/IPACM_Wan.h
parentca22ece410ed50065390541228d97e17ba74e96b (diff)
downloadipacfg-mgr-b2d6cf941dd8c976cc2961085861dcee10900946.tar.gz
IPACM: support external-AP running bridge mode
To support MTP running as AP+STA mode and connect to external-AP which is running as bridge mode, IPACM needs to construct the ethernet header by using the mac-addr which matched the default gw IP instead of directly using external-ap's MAC via wlan-driver sent. Change-Id: I4af3d244863dac40e5f44078a236b803b702faf1
Diffstat (limited to 'ipacm/inc/IPACM_Wan.h')
-rw-r--r--ipacm/inc/IPACM_Wan.h39
1 files changed, 37 insertions, 2 deletions
diff --git a/ipacm/inc/IPACM_Wan.h b/ipacm/inc/IPACM_Wan.h
index 07036f0..d2da795 100644
--- a/ipacm/inc/IPACM_Wan.h
+++ b/ipacm/inc/IPACM_Wan.h
@@ -133,7 +133,9 @@ private:
uint32_t ODU_fl_hdl[IPA_NUM_DEFAULT_WAN_FILTER_RULES];
int num_firewall_v4,num_firewall_v6;
uint32_t wan_v4_addr;
+ uint32_t wan_v4_addr_gw;
bool wan_v4_addr_set;
+ bool wan_v4_addr_gw_set;
bool active_v4;
bool active_v6;
bool header_set_v4;
@@ -203,6 +205,39 @@ private:
return IPACM_INVALID_INDEX;
}
+ inline int get_wan_client_index_ipv4(uint32_t ipv4_addr)
+ {
+ int cnt;
+ int num_wan_client_tmp = num_wan_client;
+
+ IPACMDBG_H("Passed IPv4 %x\n", ipv4_addr);
+
+ for(cnt = 0; cnt < num_wan_client_tmp; cnt++)
+ {
+ if (get_client_memptr(wan_client, cnt)->ipv4_set)
+ {
+ IPACMDBG_H("stored IPv4 %x\n", get_client_memptr(wan_client, cnt)->v4_addr);
+
+ if(ipv4_addr == get_client_memptr(wan_client, cnt)->v4_addr)
+ {
+ IPACMDBG_H("Matched client index: %d\n", cnt);
+ IPACMDBG_H("The MAC is %02x:%02x:%02x:%02x:%02x:%02x\n",
+ get_client_memptr(wan_client, cnt)->mac[0],
+ get_client_memptr(wan_client, cnt)->mac[1],
+ get_client_memptr(wan_client, cnt)->mac[2],
+ get_client_memptr(wan_client, cnt)->mac[3],
+ get_client_memptr(wan_client, cnt)->mac[4],
+ get_client_memptr(wan_client, cnt)->mac[5]);
+ IPACMDBG_H("header set ipv4(%d) ipv6(%d)\n",
+ get_client_memptr(wan_client, cnt)->ipv4_header_set,
+ get_client_memptr(wan_client, cnt)->ipv6_header_set);
+ return cnt;
+ }
+ }
+ }
+ return IPACM_INVALID_INDEX;
+ }
+
inline int delete_wan_rtrules(int clt_indx, ipa_ip_type iptype)
{
uint32_t tx_index;
@@ -278,8 +313,8 @@ private:
/* wan default route/filter rule configuration */
int handle_route_add_evt(ipa_ip_type iptype);
- /* construct complete ethernet header */
- int handle_header_add_evt(uint8_t *mac_addr);
+ /* construct complete STA ethernet header */
+ int handle_sta_header_add_evt();
int config_dft_firewall_rules(ipa_ip_type iptype);