diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2015-10-07 11:48:55 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2015-10-07 11:48:55 -0700 |
commit | 6003744144cb948d5359126e0c7fb22ca39e35aa (patch) | |
tree | 1b34ec85bcad75781fd17b3778b49fb31d0bfa35 /ipacm/inc/IPACM_Wan.h | |
parent | 5cbcdf91d7817e8daef40beea174234932a7e032 (diff) | |
parent | 06de5f1ff678fff654441eee0f7a4991b591336c (diff) | |
download | android_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.h | 45 |
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; |