diff --git a/ipacm/src/Android.mk b/ipacm/src/Android.mk
index c7c879b..32fec4b 100644
--- a/ipacm/src/Android.mk
+++ b/ipacm/src/Android.mk
@@ -70,6 +70,7 @@
 LOCAL_SHARED_LIBRARIES += libnfnetlink
 LOCAL_SHARED_LIBRARIES += libnetfilter_conntrack
 LOCAL_SHARED_LIBRARIES += libdhcpcd
+LOCAL_CLANG := true
 include $(BUILD_EXECUTABLE)
 
 ################################################################################
diff --git a/ipacm/src/IPACM_Lan.cpp b/ipacm/src/IPACM_Lan.cpp
index 2cc5088..f0d1dc4 100644
--- a/ipacm/src/IPACM_Lan.cpp
+++ b/ipacm/src/IPACM_Lan.cpp
@@ -6728,28 +6728,28 @@
 
 eth_bridge_client_rt_info* IPACM_Lan::eth_bridge_get_client_rt_info_ptr(uint8_t index, eth_bridge_src_iface src, ipa_ip_type iptype)
 {
-	void* result;
+	char* result;
 
 	if(src == SRC_LAN)
 	{
 		if(iptype == IPA_IP_v4)
 		{
-			result = (void*)((void*)eth_bridge_lan_client_rt_from_lan_info_v4 + index * client_rt_info_size_v4);
+			result = (char *)eth_bridge_lan_client_rt_from_lan_info_v4 + index * client_rt_info_size_v4;
 		}
 		else
 		{
-			result = (void*)((void*)eth_bridge_lan_client_rt_from_lan_info_v6 + index * client_rt_info_size_v6);
+			result = (char *)eth_bridge_lan_client_rt_from_lan_info_v6 + index * client_rt_info_size_v6;
 		}
 	}
 	else
 	{
 		if(iptype == IPA_IP_v4)
 		{
-			result = (void*)((void*)eth_bridge_lan_client_rt_from_wlan_info_v4 + index * client_rt_info_size_v4);
+			result = (char *)eth_bridge_lan_client_rt_from_wlan_info_v4 + index * client_rt_info_size_v4;
 		}
 		else
 		{
-			result = (void*)((void*)eth_bridge_lan_client_rt_from_wlan_info_v6 + index * client_rt_info_size_v6);
+			result = (char *)eth_bridge_lan_client_rt_from_wlan_info_v6 + index * client_rt_info_size_v6;
 		}
 	}
 	return (eth_bridge_client_rt_info*)result;
diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp
index c30a81b..db2ef1b 100644
--- a/ipacm/src/IPACM_Wan.cpp
+++ b/ipacm/src/IPACM_Wan.cpp
@@ -1865,35 +1865,27 @@
 	memset(&firewall_config, 0, sizeof(firewall_config));
 	strlcpy(firewall_config.firewall_config_file, "/etc/mobileap_firewall.xml", sizeof(firewall_config.firewall_config_file));
 
-	if (firewall_config.firewall_config_file)
+	IPACMDBG_H("Firewall XML file is %s \n", firewall_config.firewall_config_file);
+	if (IPACM_SUCCESS == IPACM_read_firewall_xml(firewall_config.firewall_config_file, &firewall_config))
 	{
-		IPACMDBG_H("Firewall XML file is %s \n", firewall_config.firewall_config_file);
-		if (IPACM_SUCCESS == IPACM_read_firewall_xml(firewall_config.firewall_config_file, &firewall_config))
+		IPACMDBG_H("QCMAP Firewall XML read OK \n");
+		/* find the number of v4/v6 firewall rules */
+		for (i = 0; i < firewall_config.num_extd_firewall_entries; i++)
 		{
-			IPACMDBG_H("QCMAP Firewall XML read OK \n");
-	/* find the number of v4/v6 firewall rules */
-	for (i = 0; i < firewall_config.num_extd_firewall_entries; i++)
-	{
-		if (firewall_config.extd_firewall_entries[i].ip_vsn == 4)
-		{
-			rule_v4++;
+			if (firewall_config.extd_firewall_entries[i].ip_vsn == 4)
+			{
+				rule_v4++;
+			}
+			else
+			{
+				rule_v6++;
+			}
 		}
-		else
-		{
-			rule_v6++;
-		}
-	}
-	IPACMDBG_H("firewall rule v4:%d v6:%d total:%d\n", rule_v4, rule_v6, firewall_config.num_extd_firewall_entries);
-		}
-		else
-		{
-			IPACMERR("QCMAP Firewall XML read failed, no that file, use default configuration \n");
-		}
+		IPACMDBG_H("firewall rule v4:%d v6:%d total:%d\n", rule_v4, rule_v6, firewall_config.num_extd_firewall_entries);
 	}
 	else
 	{
-		IPACMERR("No firewall xml mentioned \n");
-		return IPACM_FAILURE;
+		IPACMERR("QCMAP Firewall XML read failed, no that file, use default configuration \n");
 	}
 
 	/* construct ipa_ioc_add_flt_rule with N firewall rules */
@@ -2576,22 +2568,14 @@
 	memset(&firewall_config, 0, sizeof(firewall_config));
 	strlcpy(firewall_config.firewall_config_file, "/etc/mobileap_firewall.xml", sizeof(firewall_config.firewall_config_file));
 
-	if (firewall_config.firewall_config_file)
+	IPACMDBG_H("Firewall XML file is %s \n", firewall_config.firewall_config_file);
+	if (IPACM_SUCCESS == IPACM_read_firewall_xml(firewall_config.firewall_config_file, &firewall_config))
 	{
-		IPACMDBG_H("Firewall XML file is %s \n", firewall_config.firewall_config_file);
-		if (IPACM_SUCCESS == IPACM_read_firewall_xml(firewall_config.firewall_config_file, &firewall_config))
-		{
-			IPACMDBG_H("QCMAP Firewall XML read OK \n");
-		}
-		else
-		{
-			IPACMERR("QCMAP Firewall XML read failed, no that file, use default configuration \n");
-		}
+		IPACMDBG_H("QCMAP Firewall XML read OK \n");
 	}
 	else
 	{
-		IPACMERR("No firewall xml mentioned \n");
-		return IPACM_FAILURE;
+		IPACMERR("QCMAP Firewall XML read failed, no that file, use default configuration \n");
 	}
 
 	/* add IPv6 frag rule when firewall is enabled*/
diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp
index bb70724..f933a69 100644
--- a/ipacm/src/IPACM_Wlan.cpp
+++ b/ipacm/src/IPACM_Wlan.cpp
@@ -4737,27 +4737,27 @@
 
 eth_bridge_client_rt_info* IPACM_Wlan::eth_bridge_get_client_rt_info_ptr(uint8_t index, eth_bridge_src_iface src, ipa_ip_type iptype)
 {
-	void* result;
+	char* result;
 	if(src == SRC_WLAN)
 	{
 		if(iptype == IPA_IP_v4)
 		{
-			result = (void*)((void*)eth_bridge_wlan_client_rt_from_wlan_info_v4 + index * client_rt_info_size_v4);
+			result = (char *)eth_bridge_wlan_client_rt_from_wlan_info_v4 + index * client_rt_info_size_v4;
 		}
 		else
 		{
-			result = (void*)((void*)eth_bridge_wlan_client_rt_from_wlan_info_v6 + index * client_rt_info_size_v6);
+			result = (char *)eth_bridge_wlan_client_rt_from_wlan_info_v6 + index * client_rt_info_size_v6;
 		}
 	}
 	else
 	{
 		if(iptype == IPA_IP_v4)
 		{
-			result = (void*)((void*)eth_bridge_wlan_client_rt_from_lan_info_v4 + index * client_rt_info_size_v4);
+			result = (char *)eth_bridge_wlan_client_rt_from_lan_info_v4 + index * client_rt_info_size_v4;
 		}
 		else
 		{
-			result = (void*)((void*)eth_bridge_wlan_client_rt_from_lan_info_v6 + index * client_rt_info_size_v6);
+			result = (char *)eth_bridge_wlan_client_rt_from_lan_info_v6 + index * client_rt_info_size_v6;
 		}
 	}
 	return (eth_bridge_client_rt_info*)result;
diff --git a/ipanat/src/Android.mk b/ipanat/src/Android.mk
index ea14920..a54a57a 100644
--- a/ipanat/src/Android.mk
+++ b/ipanat/src/Android.mk
@@ -20,7 +20,7 @@
 LOCAL_MODULE := libipanat
 LOCAL_MODULE_TAGS := optional
 LOCAL_PRELINK_MODULE := false
-
+LOCAL_CLANG := true
 include $(BUILD_SHARED_LIBRARY)
 
 endif # $(TARGET_ARCH)
