Merge "IPACM: Fix the KW errors"
diff --git a/ipacm/src/IPACM_IfaceManager.cpp b/ipacm/src/IPACM_IfaceManager.cpp
index c8eb2c9..03233b5 100644
--- a/ipacm/src/IPACM_IfaceManager.cpp
+++ b/ipacm/src/IPACM_IfaceManager.cpp
@@ -267,7 +267,7 @@
{
if(IPACM_Iface::ipacmcfg->ipacm_odu_router_mode == true)
{
- IPACMDBG("Creating ODU interface in router mode\n");
+ IPACMDBG_H("Creating ODU interface in router mode\n");
IPACM_Lan *odu = new IPACM_Lan(ipa_interface_index);
IPACM_EvtDispatcher::registr(IPA_ADDR_ADD_EVENT, odu);
IPACM_EvtDispatcher::registr(IPA_NEIGH_CLIENT_IP_ADDR_ADD_EVENT, odu);
@@ -289,14 +289,14 @@
IPACM_EvtDispatcher::registr(IPA_CRADLE_WAN_MODE_SWITCH, odu);
IPACM_EvtDispatcher::registr(IPA_LINK_DOWN_EVENT, odu);
IPACM_EvtDispatcher::registr(IPA_LAN_DELETE_SELF, odu);
- IPACMDBG("ipa_LAN (%s):ipa_index (%d) instance open/registr ok\n", odu->dev_name, odu->ipa_if_num);
+ IPACMDBG_H("ipa_LAN (%s):ipa_index (%d) instance open/registr ok\n", odu->dev_name, odu->ipa_if_num);
registr(ipa_interface_index, odu);
/* solve the new_addr comes earlier issue */
IPACM_Iface::iface_addr_query(if_index);
}
else
{
- IPACMDBG("Creating ODU interface in bridge mode\n");
+ IPACMDBG_H("Creating ODU interface in bridge mode\n");
IPACM_Lan *odu = new IPACM_Lan(ipa_interface_index);
IPACM_EvtDispatcher::registr(IPA_ADDR_ADD_EVENT, odu);
IPACM_EvtDispatcher::registr(IPA_NEIGH_CLIENT_IP_ADDR_ADD_EVENT, odu);
@@ -304,7 +304,7 @@
IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_DISABLE, odu);
IPACM_EvtDispatcher::registr(IPA_LINK_DOWN_EVENT, odu);
IPACM_EvtDispatcher::registr(IPA_LAN_DELETE_SELF, odu);
- IPACMDBG("ipa_LAN (%s):ipa_index (%d) instance open/registr ok\n", odu->dev_name, odu->ipa_if_num);
+ IPACMDBG_H("ipa_LAN (%s):ipa_index (%d) instance open/registr ok\n", odu->dev_name, odu->ipa_if_num);
registr(ipa_interface_index, odu);
/* solve the new_addr comes earlier issue */
IPACM_Iface::iface_addr_query(if_index);
diff --git a/ipacm/src/IPACM_Lan.cpp b/ipacm/src/IPACM_Lan.cpp
index 9b47008..2e5b51a 100644
--- a/ipacm/src/IPACM_Lan.cpp
+++ b/ipacm/src/IPACM_Lan.cpp
@@ -477,7 +477,13 @@
{
install_ipv6_icmp_flt_rule();
}
+
+#ifdef FEATURE_IPA_ANDROID
+ add_dummy_private_subnet_flt_rule(data->iptype);
+ handle_private_subnet_android(data->iptype);
+#else
handle_private_subnet(data->iptype);
+#endif
if (IPACM_Wan::isWanUP())
{
diff --git a/ipacm/src/IPACM_Netlink.cpp b/ipacm/src/IPACM_Netlink.cpp
index 13b1d6e..3dfc514 100644
--- a/ipacm/src/IPACM_Netlink.cpp
+++ b/ipacm/src/IPACM_Netlink.cpp
@@ -639,13 +639,16 @@
IPACMDBG("RTM_NEWLINK, ifi_flags:%d\n", msg_ptr->nl_link_info.metainfo.ifi_flags);
IPACMDBG("RTM_NEWLINK, ifi_index:%d\n", msg_ptr->nl_link_info.metainfo.ifi_index);
IPACMDBG("RTM_NEWLINK, family:%d\n", msg_ptr->nl_link_info.metainfo.ifi_family);
-
+ /* RTM_NEWLINK event with AF_BRIDGE family should be ignored in Android
+ but this should be processed in case of MDM for Ehernet interface.
+ */
+#ifdef FEATURE_IPA_ANDROID
if (msg_ptr->nl_link_info.metainfo.ifi_family == AF_BRIDGE)
{
IPACMERR(" ignore this RTM_NEWLINK msg \n");
return IPACM_SUCCESS;
}
-
+#endif
if(IFF_UP & msg_ptr->nl_link_info.metainfo.ifi_change)
{
IPACMDBG("GOT useful newlink event\n");
@@ -707,7 +710,7 @@
IPACMERR("Error while getting interface name\n");
return IPACM_FAILURE;
}
- IPACMDBG("Got a usb link_up event (Interface %s, %d) \n", dev_name, msg_ptr->nl_link_info.metainfo.ifi_index);
+ IPACMDBG("Got a usb link_up event (Interface %s, %d) \n", dev_name, msg_ptr->nl_link_info.metainfo.ifi_index);
/*--------------------------------------------------------------------------
Post LAN iface (ECM) link up event
@@ -715,7 +718,7 @@
evt_data.event = IPA_USB_LINK_UP_EVENT;
evt_data.evt_data = data_fid;
IPACM_EvtDispatcher::PostEvt(&evt_data);
- IPACMDBG("Posting usb IPA_LINK_UP_EVENT with if index: %d\n",
+ IPACMDBG_H("Posting usb IPA_LINK_UP_EVENT with if index: %d\n",
data_fid->if_index);
}
else if(!(msg_ptr->nl_link_info.metainfo.ifi_flags & IFF_LOWER_UP))
@@ -734,17 +737,16 @@
IPACMERR("Error while getting interface name\n");
return IPACM_FAILURE;
}
- IPACMDBG_H("Got a usb link_down event (Interface %s) \n", dev_name);
+ IPACMDBG_H("Got a usb link_down event (Interface %s) \n", dev_name);
- /*--------------------------------------------------------------------------
- Post LAN iface (ECM) link down event
- ---------------------------------------------------------------------------*/
- evt_data.event = IPA_LINK_DOWN_EVENT;
+ /*--------------------------------------------------------------------------
+ Post LAN iface (ECM) link down event
+ ---------------------------------------------------------------------------*/
+ evt_data.event = IPA_LINK_DOWN_EVENT;
evt_data.evt_data = data_fid;
IPACM_EvtDispatcher::PostEvt(&evt_data);
IPACMDBG_H("Posting usb IPA_LINK_DOWN_EVENT with if index: %d\n",
data_fid->if_index);
-
}
}
break;
@@ -766,13 +768,16 @@
IPACMDBG("RTM_DELLINK, ifi_flags:%d\n", msg_ptr->nl_link_info.metainfo.ifi_flags);
IPACMDBG("RTM_DELLINK, ifi_index:%d\n", msg_ptr->nl_link_info.metainfo.ifi_index);
IPACMDBG("RTM_DELLINK, family:%d\n", msg_ptr->nl_link_info.metainfo.ifi_family);
-
+ /* RTM_NEWLINK event with AF_BRIDGE family should be ignored in Android
+ but this should be processed in case of MDM for Ehernet interface.
+ */
+#ifdef FEATURE_IPA_ANDROID
if (msg_ptr->nl_link_info.metainfo.ifi_family == AF_BRIDGE)
{
IPACMERR(" ignore this RTM_DELLINK msg \n");
return IPACM_SUCCESS;
}
-
+#endif
ret_val = ipa_get_if_name(dev_name, msg_ptr->nl_link_info.metainfo.ifi_index);
if(ret_val != IPACM_SUCCESS)
{
diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp
index 06080a0..0aec857 100644
--- a/ipacm/src/IPACM_Wan.cpp
+++ b/ipacm/src/IPACM_Wan.cpp
@@ -1655,7 +1655,9 @@
return IPACM_FAILURE;
}
- if(iptype == IPA_IP_v6 && firewall_config.firewall_enable == true)
+ if(iptype == IPA_IP_v6 &&
+ firewall_config.firewall_enable == true &&
+ check_dft_firewall_rules_attr_mask(&firewall_config))
{
m_pFilteringTable->commit = 1;
m_pFilteringTable->ep = rx_prop->rx[0].src_pipe;
@@ -3558,11 +3560,17 @@
return IPACM_FAILURE;
}
IPACM_Iface::ipacmcfg->decreaseFltRuleCount(rx_prop->rx[0].src_pipe, IPA_IP_v6, 1);
- if (m_filtering.DeleteFilteringHdls(&ipv6_frag_firewall_flt_rule_hdl, IPA_IP_v6, 1) == false)
+
+ if (firewall_config.firewall_enable == true &&
+ check_dft_firewall_rules_attr_mask(&firewall_config))
{
- IPACMERR("Error deleting IPv6 frag filtering rules.\n");
+ if (m_filtering.DeleteFilteringHdls(&ipv6_frag_firewall_flt_rule_hdl, IPA_IP_v6, 1) == false)
+ {
+ IPACMERR("Error deleting IPv6 frag filtering rules.\n");
+ return IPACM_FAILURE;
+ }
+ IPACM_Iface::ipacmcfg->decreaseFltRuleCount(rx_prop->rx[0].src_pipe, IPA_IP_v6, 1);
}
- IPACM_Iface::ipacmcfg->decreaseFltRuleCount(rx_prop->rx[0].src_pipe, IPA_IP_v6, 1);
num_firewall_v6 = 0;
}
diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp
index 89c3b5e..0deda4f 100644
--- a/ipacm/src/IPACM_Wlan.cpp
+++ b/ipacm/src/IPACM_Wlan.cpp
@@ -479,7 +479,7 @@
IPACMDBG_H("Received IPA_WAN_V6_DOWN in WLAN-instance and need clean up client IPv6 address \n");
/* reset wifi-client ipv6 rt-rules */
handle_wlan_client_reset_rt(IPA_IP_v6);
- IPACMDBG_H("Backhaul is sta mode?%d\n", data_wan->is_sta);
+ IPACMDBG_H("Backhaul is sta mode ? %d\n", data_wan->is_sta);
if(data_wan->is_sta == false && wlan_ap_index > 0)
{
IPACMDBG_H("This is not the first AP instance and not STA mode, ignore WAN_DOWN event.\n");
@@ -2346,10 +2346,9 @@
/* Delete v4 filtering rules */
if (ip_type != IPA_IP_v6 && rx_prop != NULL)
{
-#ifdef FEATURE_ETH_BRIDGE_LE
+ /* delete IPv4 icmp filter rules */
if(wlan_ap_index == 0)
{
- /* delete IPv4 icmp filter rules */
if(m_filtering.DeleteFilteringHdls(ipv4_icmp_flt_rule_hdl, IPA_IP_v4, NUM_IPV4_ICMP_FLT_RULE) == false)
{
IPACMERR("Error Deleting ICMPv4 Filtering Rule, aborting...\n");
@@ -2357,6 +2356,10 @@
goto fail;
}
IPACM_Iface::ipacmcfg->decreaseFltRuleCount(rx_prop->rx[0].src_pipe, IPA_IP_v4, NUM_IPV4_ICMP_FLT_RULE);
+ }
+#ifdef FEATURE_ETH_BRIDGE_LE
+ if(wlan_ap_index == 0)
+ {
/* delete default filter rules */
for(i=0; i<IPV4_DEFAULT_FILTERTING_RULES; i++)
{