Merge "ipa-cfg-mgr: Add Android.mk files for IPACM and IPANAT"
diff --git a/ipacm/inc/IPACM_Filtering.h b/ipacm/inc/IPACM_Filtering.h
index 48a3d66..7554ba9 100644
--- a/ipacm/inc/IPACM_Filtering.h
+++ b/ipacm/inc/IPACM_Filtering.h
@@ -69,7 +69,6 @@
private:
static const char *DEVICE_NAME;
int fd; /* File descriptor of the IPA device node /dev/ipa */
- int fd_wwan_ioctl;
};
#endif //IPACM_FILTERING_H
diff --git a/ipacm/src/IPACM_Filtering.cpp b/ipacm/src/IPACM_Filtering.cpp
index fac26a2..4882ebb 100644
--- a/ipacm/src/IPACM_Filtering.cpp
+++ b/ipacm/src/IPACM_Filtering.cpp
@@ -57,18 +57,11 @@
{
IPACMERR("Failed opening %s.\n", DEVICE_NAME);
}
-
- fd_wwan_ioctl = open(WWAN_QMI_IOCTL_DEVICE_NAME, O_RDWR);
- if(fd_wwan_ioctl < 0)
- {
- IPACMERR("Failed to open %s.\n",WWAN_QMI_IOCTL_DEVICE_NAME);
- }
}
IPACM_Filtering::~IPACM_Filtering()
{
close(fd);
- close(fd_wwan_ioctl);
}
bool IPACM_Filtering::DeviceNodeIsOpened()
@@ -238,16 +231,12 @@
int ret = 0, cnt, num_rules = 0, pos = 0;
ipa_install_fltr_rule_req_msg_v01 qmi_rule_msg;
+ int fd_wwan_ioctl = open(WWAN_QMI_IOCTL_DEVICE_NAME, O_RDWR);
if(fd_wwan_ioctl < 0)
{
- IPACMERR("WWAN ioctl is not open.\n");
+ IPACMERR("Failed to open %s.\n",WWAN_QMI_IOCTL_DEVICE_NAME);
return false;
}
- else
- {
- IPACMDBG("WWAN ioctl is open.\n");
- }
-
if(rule_table_v4 != NULL)
{
@@ -263,6 +252,7 @@
if(num_rules > QMI_IPA_MAX_FILTERS_V01)
{
IPACMERR("The number of filtering rules exceed limit.\n");
+ close(fd_wwan_ioctl);
return false;
}
else
@@ -329,20 +319,22 @@
if (ret != 0)
{
IPACMERR("Failed adding Filtering rule %p with ret %d\n ", &qmi_rule_msg, ret);
+ close(fd_wwan_ioctl);
return false;
}
}
IPACMDBG("Added Filtering rule %p\n", &qmi_rule_msg);
+ close(fd_wwan_ioctl);
return true;
}
bool IPACM_Filtering::SendFilteringRuleIndex(struct ipa_fltr_installed_notif_req_msg_v01* table)
{
int ret = 0;
-
+ int fd_wwan_ioctl = open(WWAN_QMI_IOCTL_DEVICE_NAME, O_RDWR);
if(fd_wwan_ioctl < 0)
{
- IPACMERR("WWAN ioctl is not open.\n");
+ IPACMERR("Failed to open %s.\n",WWAN_QMI_IOCTL_DEVICE_NAME);
return false;
}
@@ -350,10 +342,12 @@
if (ret != 0)
{
IPACMERR("Failed adding filtering rule index %p with ret %d\n", table, ret);
+ close(fd_wwan_ioctl);
return false;
}
IPACMDBG("Added Filtering rule index %p\n", table);
+ close(fd_wwan_ioctl);
return true;
}
diff --git a/ipacm/src/IPACM_Iface.cpp b/ipacm/src/IPACM_Iface.cpp
index 6fb2e5c..293c311 100644
--- a/ipacm/src/IPACM_Iface.cpp
+++ b/ipacm/src/IPACM_Iface.cpp
@@ -511,6 +511,7 @@
if(iface_query == NULL)
{
IPACMERR("Unable to allocate iface_query memory.\n");
+ close(fd);
return IPACM_FAILURE;
}
IPACMDBG("iface name %s\n", dev_name);
@@ -531,6 +532,7 @@
if(tx_prop == NULL)
{
IPACMERR("Unable to allocate tx_prop memory.\n");
+ close(fd);
return IPACM_FAILURE;
}
memcpy(tx_prop->name, dev_name, sizeof(tx_prop->name));
@@ -562,6 +564,7 @@
if(rx_prop == NULL)
{
IPACMERR("Unable to allocate rx_prop memory.\n");
+ close(fd);
return IPACM_FAILURE;
}
memcpy(rx_prop->name, dev_name,
diff --git a/ipacm/src/IPACM_Netlink.cpp b/ipacm/src/IPACM_Netlink.cpp
index d579952..9c616af 100644
--- a/ipacm/src/IPACM_Netlink.cpp
+++ b/ipacm/src/IPACM_Netlink.cpp
@@ -210,6 +210,11 @@
while(true)
{
+ for(i = 0; i < sk_fd_set->num_fd; i++ )
+ {
+ FD_SET(sk_fd_set->sk_fds[i].sk_fd, &(sk_fd_set->fdset));
+ }
+
if((ret = select(sk_fd_set->max_fd + 1, &(sk_fd_set->fdset), NULL, NULL, NULL)) < 0)
{
IPACMERR("ipa_nl select failed\n");
@@ -230,6 +235,7 @@
i,
sk_fd_set->sk_fds[i].sk_fd);
}
+ FD_CLR(sk_fd_set->sk_fds[i].sk_fd, &(sk_fd_set->fdset));
}
else
{
@@ -1595,6 +1601,7 @@
if(ipa_nl_addfd_map(sk_fdset, sk_info.sk_fd, read_f) != IPACM_SUCCESS)
{
IPACMERR("cannot add nl routing sock for reading\n");
+ close(sk_info.sk_fd);
return IPACM_FAILURE;
}
diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp
index 7993ce5..aeda460 100644
--- a/ipacm/src/IPACM_Wan.cpp
+++ b/ipacm/src/IPACM_Wan.cpp
@@ -2462,6 +2462,7 @@
IPACMERR("ioctl IPA_IOC_QUERY_INTF_EXT_PROPS failed\n");
/* ext_prop memory will free when iface-down*/
free(ext_prop);
+ close(fd);
return ret;
}
@@ -2480,6 +2481,7 @@
IPACM_Wan::is_ext_prop_set = true;
}
free(ext_prop);
+ close(fd);
}
return IPACM_SUCCESS;
}
diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp
index e111bfd..68cf88b 100644
--- a/ipacm/src/IPACM_Wlan.cpp
+++ b/ipacm/src/IPACM_Wlan.cpp
@@ -959,6 +959,7 @@
if (pFilteringTable == NULL)
{
IPACMERR("Error Locate ipa_flt_rule_add memory...\n");
+ close(fd);
return IPACM_FAILURE;
}
memset(pFilteringTable, 0, len);
@@ -2803,4 +2804,4 @@
}
}
return IPACM_SUCCESS;
-}
\ No newline at end of file
+}