summaryrefslogtreecommitdiffstats
path: root/ipacm/inc/IPACM_Wan.h
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-10-07 11:48:55 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2015-10-07 11:48:55 -0700
commit6003744144cb948d5359126e0c7fb22ca39e35aa (patch)
tree1b34ec85bcad75781fd17b3778b49fb31d0bfa35 /ipacm/inc/IPACM_Wan.h
parent5cbcdf91d7817e8daef40beea174234932a7e032 (diff)
parent06de5f1ff678fff654441eee0f7a4991b591336c (diff)
downloadandroid_vendor_qcom_opensource_data-ipa-cfg-mgr-6003744144cb948d5359126e0c7fb22ca39e35aa.tar.gz
android_vendor_qcom_opensource_data-ipa-cfg-mgr-6003744144cb948d5359126e0c7fb22ca39e35aa.tar.bz2
android_vendor_qcom_opensource_data-ipa-cfg-mgr-6003744144cb948d5359126e0c7fb22ca39e35aa.zip
Merge "IPACM: Fix the ipv6-only AP+STA use-case"
Diffstat (limited to 'ipacm/inc/IPACM_Wan.h')
-rw-r--r--ipacm/inc/IPACM_Wan.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/ipacm/inc/IPACM_Wan.h b/ipacm/inc/IPACM_Wan.h
index 65f788f..80838cc 100644
--- a/ipacm/inc/IPACM_Wan.h
+++ b/ipacm/inc/IPACM_Wan.h
@@ -187,8 +187,10 @@ private:
int num_firewall_v4,num_firewall_v6;
uint32_t wan_v4_addr;
uint32_t wan_v4_addr_gw;
+ uint32_t wan_v6_addr_gw[4];
bool wan_v4_addr_set;
bool wan_v4_addr_gw_set;
+ bool wan_v6_addr_gw_set;
bool active_v4;
bool active_v6;
bool header_set_v4;
@@ -293,6 +295,49 @@ private:
return IPACM_INVALID_INDEX;
}
+ inline int get_wan_client_index_ipv6(uint32_t* ipv6_addr)
+ {
+ int cnt, v6_num;
+ int num_wan_client_tmp = num_wan_client;
+
+ IPACMDBG_H("Get ipv6 address 0x%08x.0x%08x.0x%08x.0x%08x\n", ipv6_addr[0], ipv6_addr[1], ipv6_addr[2], ipv6_addr[3]);
+
+ for(cnt = 0; cnt < num_wan_client_tmp; cnt++)
+ {
+ if (get_client_memptr(wan_client, cnt)->ipv6_set)
+ {
+ for(v6_num=0;v6_num < get_client_memptr(wan_client, cnt)->ipv6_set;v6_num++)
+ {
+
+ IPACMDBG_H("stored IPv6 0x%08x.0x%08x.0x%08x.0x%08x\n", get_client_memptr(wan_client, cnt)->v6_addr[v6_num][0],
+ get_client_memptr(wan_client, cnt)->v6_addr[v6_num][1],
+ get_client_memptr(wan_client, cnt)->v6_addr[v6_num][2],
+ get_client_memptr(wan_client, cnt)->v6_addr[v6_num][3]);
+
+ if(ipv6_addr[0] == get_client_memptr(wan_client, cnt)->v6_addr[v6_num][0] &&
+ ipv6_addr[1] == get_client_memptr(wan_client, cnt)->v6_addr[v6_num][1] &&
+ ipv6_addr[2]== get_client_memptr(wan_client, cnt)->v6_addr[v6_num][2] &&
+ ipv6_addr[3] == get_client_memptr(wan_client, cnt)->v6_addr[v6_num][3])
+ {
+ 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;