summaryrefslogtreecommitdiff
path: root/ipacm/src/IPACM_Config.cpp
diff options
context:
space:
mode:
authorSkylar Chang <chiaweic@codeaurora.org>2013-10-02 16:52:42 -0700
committerSkylar Chang <chiaweic@codeaurora.org>2013-12-12 17:50:14 -0800
commit05ad9f31536dafdbd96bb73c32f9ad6e31b52227 (patch)
tree4a6767b50716e77753692351421b5c8834bbb101 /ipacm/src/IPACM_Config.cpp
parenta1c9c9d0f0f5bbadfc832a4c6fd4d0871cde7165 (diff)
downloadipacfg-mgr-05ad9f31536dafdbd96bb73c32f9ad6e31b52227.tar.gz
IPACM: Added support for 9x35 HW/SW architecture
- Support WAN DL filtering rules addition through QMI messages on Q6 endpoint - Install WAN UL filtering rules received from modem on LAN/WLAN endpoints - Add ICMP/ALG related WAN DL filtering rules - Change WLAN header to support new format - Not configure rules for AMPDU pipe Change-Id: I7ee848099cfaaae1523d9cbebf59268bc0e7cfed Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
Diffstat (limited to 'ipacm/src/IPACM_Config.cpp')
-rw-r--r--[-rwxr-xr-x]ipacm/src/IPACM_Config.cpp85
1 files changed, 84 insertions, 1 deletions
diff --git a/ipacm/src/IPACM_Config.cpp b/ipacm/src/IPACM_Config.cpp
index fd14ceb..c28942d 100755..100644
--- a/ipacm/src/IPACM_Config.cpp
+++ b/ipacm/src/IPACM_Config.cpp
@@ -66,6 +66,12 @@ IPACM_Config::IPACM_Config()
memset(&rt_tbl_wan_v4, 0, sizeof(rt_tbl_wan_v4));
memset(&rt_tbl_v6, 0, sizeof(rt_tbl_v6));
memset(&rt_tbl_wan_v6, 0, sizeof(rt_tbl_wan_v6));
+ memset(&rt_tbl_wan_dl, 0, sizeof(rt_tbl_wan_dl));
+
+ memset(&ext_prop_v4, 0, sizeof(ext_prop_v4));
+ memset(&ext_prop_v6, 0, sizeof(ext_prop_v6));
+
+ qmap_id = ~0;
IPACMDBG(" create IPACM_Config constructor\n");
return;
@@ -169,13 +175,17 @@ int IPACM_Config::Init(void)
rt_tbl_wan_v4.ip = IPA_IP_v4;
strncpy(rt_tbl_wan_v4.name, V4_WAN_ROUTE_TABLE_NAME, sizeof(rt_tbl_wan_v4.name));
-
+
rt_tbl_v6.ip = IPA_IP_v6;
strncpy(rt_tbl_v6.name, V6_COMMON_ROUTE_TABLE_NAME, sizeof(rt_tbl_v6.name));
rt_tbl_wan_v6.ip = IPA_IP_v6;
strncpy(rt_tbl_wan_v6.name, V6_WAN_ROUTE_TABLE_NAME, sizeof(rt_tbl_wan_v6.name));
+ rt_tbl_wan_dl.ip = IPA_IP_MAX;
+ strncpy(rt_tbl_wan_dl.name, WAN_DL_ROUTE_TABLE_NAME, sizeof(rt_tbl_wan_dl.name));
+
+
/* Construct IPACM ipa_client map to rm_resource table */
ipa_client_rm_map_tbl[IPA_CLIENT_HSIC1_PROD]= IPA_RM_RESOURCE_HSIC_PROD;
ipa_client_rm_map_tbl[IPA_CLIENT_HSIC2_PROD]= IPA_RM_RESOURCE_HSIC_PROD;
@@ -540,3 +550,76 @@ void IPACM_Config::DelRmDepend(ipa_rm_resource_name rm1)
}
return ;
}
+
+int IPACM_Config::SetExtProp(ipa_ioc_query_intf_ext_props *prop)
+{
+ int i, num;
+
+ if(prop == NULL || prop->num_ext_props <= 0)
+ {
+ IPACMERR("There is no extended property!\n");
+ return IPACM_FAILURE;
+ }
+
+ num = prop->num_ext_props;
+ for(i=0; i<num; i++)
+ {
+ if(prop->ext[i].ip == IPA_IP_v4)
+ {
+ if(ext_prop_v4.num_ext_props >= MAX_NUM_EXT_PROPS)
+ {
+ IPACMDBG("IPv4 extended property table is full!\n");
+ continue;
+ }
+ memcpy(&ext_prop_v4.prop[ext_prop_v4.num_ext_props], &prop->ext[i], sizeof(struct ipa_ioc_ext_intf_prop));
+ ext_prop_v4.num_ext_props++;
+ }
+ else if(prop->ext[i].ip == IPA_IP_v6)
+ {
+ if(ext_prop_v6.num_ext_props >= MAX_NUM_EXT_PROPS)
+ {
+ IPACMDBG("IPv6 extended property table is full!\n");
+ continue;
+ }
+ memcpy(&ext_prop_v6.prop[ext_prop_v6.num_ext_props], &prop->ext[i], sizeof(struct ipa_ioc_ext_intf_prop));
+ ext_prop_v6.num_ext_props++;
+ }
+ else
+ {
+ IPACMERR("The IP type is not expected!\n");
+ return IPACM_FAILURE;
+ }
+ }
+
+ IPACMDBG("Set extended property succeeded.\n");
+
+ return IPACM_SUCCESS;
+}
+
+ipacm_ext_prop* IPACM_Config::GetExtProp(ipa_ip_type ip_type)
+{
+ if(ip_type == IPA_IP_v4)
+ return &ext_prop_v4;
+ else if(ip_type == IPA_IP_v6)
+ return &ext_prop_v6;
+ else
+ {
+ IPACMERR("Failed to get extended property: the IP version is neither IPv4 nor IPv6!\n");
+ return NULL;
+ }
+}
+
+int IPACM_Config::DelExtProp(ipa_ip_type ip_type)
+{
+ if(ip_type != IPA_IP_v6)
+ {
+ memset(&ext_prop_v4, 0, sizeof(ext_prop_v4));
+ }
+
+ if(ip_type != IPA_IP_v4)
+ {
+ memset(&ext_prop_v6, 0, sizeof(ext_prop_v6));
+ }
+
+ return IPACM_SUCCESS;
+}