Merge "IPACM: support IPA_RM dependency for CPE project"
diff --git a/ipacm/src/IPACM_Conntrack_NATApp.cpp b/ipacm/src/IPACM_Conntrack_NATApp.cpp
index 3d388f9..c4a7e52 100644
--- a/ipacm/src/IPACM_Conntrack_NATApp.cpp
+++ b/ipacm/src/IPACM_Conntrack_NATApp.cpp
@@ -77,24 +77,27 @@
memset(cache, 0, size);
nALGPort = pConfig->GetAlgPortCnt();
- pALGPorts = (ipacm_alg *)malloc(sizeof(ipacm_alg) * nALGPort);
- if(pALGPorts == NULL)
+ if(nALGPort > 0)
{
- IPACMERR("Unable to allocate memory for alg prots\n");
- goto fail;
- }
- memset(pALGPorts, 0, sizeof(ipacm_alg) * nALGPort);
+ pALGPorts = (ipacm_alg *)malloc(sizeof(ipacm_alg) * nALGPort);
+ if(pALGPorts == NULL)
+ {
+ IPACMERR("Unable to allocate memory for alg prots\n");
+ goto fail;
+ }
+ memset(pALGPorts, 0, sizeof(ipacm_alg) * nALGPort);
- if(pConfig->GetAlgPorts(nALGPort, pALGPorts) != 0)
- {
- IPACMERR("Unable to retrieve ALG prots\n");
- goto fail;
- }
+ if(pConfig->GetAlgPorts(nALGPort, pALGPorts) != 0)
+ {
+ IPACMERR("Unable to retrieve ALG prots\n");
+ goto fail;
+ }
- IPACMDBG("Printing %d alg ports information\n", nALGPort);
- for(int cnt=0; cnt<nALGPort; cnt++)
- {
- IPACMDBG("%d: Proto[%d], port[%d]\n", cnt, pALGPorts[cnt].protocol, pALGPorts[cnt].port);
+ IPACMDBG("Printing %d alg ports information\n", nALGPort);
+ for(int cnt=0; cnt<nALGPort; cnt++)
+ {
+ IPACMDBG("%d: Proto[%d], port[%d]\n", cnt, pALGPorts[cnt].protocol, pALGPorts[cnt].port);
+ }
}
return 0;
diff --git a/ipacm/src/IPACM_Lan.cpp b/ipacm/src/IPACM_Lan.cpp
index 6758933..a5b5eae 100644
--- a/ipacm/src/IPACM_Lan.cpp
+++ b/ipacm/src/IPACM_Lan.cpp
@@ -78,6 +78,9 @@
ipv6_set = 0;
ipv4_header_set = false;
ipv6_header_set = false;
+ odu_route_rule_v4_hdl = NULL;
+ odu_route_rule_v6_hdl = NULL;
+ eth_client = NULL;
int m_fd_odu, ret = IPACM_SUCCESS;
Nat_App = NatApp::GetInstance();
@@ -4025,11 +4028,14 @@
flt_rule.rule.eq_attrib.rule_eq_bitmap = 0;
- flt_rule.rule.eq_attrib.rule_eq_bitmap |= (1<<14);
- flt_rule.rule.eq_attrib.metadata_meq32_present = 1;
- flt_rule.rule.eq_attrib.metadata_meq32.offset = 0;
- flt_rule.rule.eq_attrib.metadata_meq32.value = rx_prop->rx[0].attrib.meta_data;
- flt_rule.rule.eq_attrib.metadata_meq32.mask = rx_prop->rx[0].attrib.meta_data_mask;
+ if(rx_prop->rx[0].attrib.attrib_mask & IPA_FLT_META_DATA)
+ {
+ flt_rule.rule.eq_attrib.rule_eq_bitmap |= (1<<14);
+ flt_rule.rule.eq_attrib.metadata_meq32_present = 1;
+ flt_rule.rule.eq_attrib.metadata_meq32.offset = 0;
+ flt_rule.rule.eq_attrib.metadata_meq32.value = rx_prop->rx[0].attrib.meta_data;
+ flt_rule.rule.eq_attrib.metadata_meq32.mask = rx_prop->rx[0].attrib.meta_data_mask;
+ }
flt_rule.rule.eq_attrib.rule_eq_bitmap |= (1<<1);
flt_rule.rule.eq_attrib.protocol_eq_present = 1;
diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp
index 5a3c27d..f2cda33 100644
--- a/ipacm/src/IPACM_Wan.cpp
+++ b/ipacm/src/IPACM_Wan.cpp
@@ -75,6 +75,10 @@
{
num_firewall_v4 = 0;
num_firewall_v6 = 0;
+ wan_route_rule_v4_hdl = NULL;
+ wan_route_rule_v6_hdl = NULL;
+ wan_route_rule_v6_hdl_a5 = NULL;
+ wan_client = NULL;
if(iface_query != NULL)
{
diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp
index 760cb61..165ef72 100644
--- a/ipacm/src/IPACM_Wlan.cpp
+++ b/ipacm/src/IPACM_Wlan.cpp
@@ -90,6 +90,7 @@
num_wifi_client = 0;
header_name_count = 0;
+ wlan_client = NULL;
if(iface_query != NULL)
{
@@ -2471,9 +2472,15 @@
for (i = 0; i < num_wifi_client; i++)
{
- free(get_client_memptr(wlan_client, i)->p_hdr_info);
+ if(get_client_memptr(wlan_client, i)->p_hdr_info != NULL)
+ {
+ free(get_client_memptr(wlan_client, i)->p_hdr_info);
+ }
}
- free(wlan_client);
+ if(wlan_client != NULL)
+ {
+ free(wlan_client);
+ }
if (tx_prop != NULL)
{
free(tx_prop);
@@ -3211,11 +3218,14 @@
flt_rule.rule.eq_attrib.rule_eq_bitmap = 0;
- flt_rule.rule.eq_attrib.rule_eq_bitmap |= (1<<14);
- flt_rule.rule.eq_attrib.metadata_meq32_present = 1;
- flt_rule.rule.eq_attrib.metadata_meq32.offset = 0;
- flt_rule.rule.eq_attrib.metadata_meq32.value = rx_prop->rx[0].attrib.meta_data;
- flt_rule.rule.eq_attrib.metadata_meq32.mask = rx_prop->rx[0].attrib.meta_data_mask;
+ if(rx_prop->rx[0].attrib.attrib_mask & IPA_FLT_META_DATA)
+ {
+ flt_rule.rule.eq_attrib.rule_eq_bitmap |= (1<<14);
+ flt_rule.rule.eq_attrib.metadata_meq32_present = 1;
+ flt_rule.rule.eq_attrib.metadata_meq32.offset = 0;
+ flt_rule.rule.eq_attrib.metadata_meq32.value = rx_prop->rx[0].attrib.meta_data;
+ flt_rule.rule.eq_attrib.metadata_meq32.mask = rx_prop->rx[0].attrib.meta_data_mask;
+ }
flt_rule.rule.eq_attrib.rule_eq_bitmap |= (1<<1);
flt_rule.rule.eq_attrib.protocol_eq_present = 1;