Merge "IPACM: change filter rule deletion order"
diff --git a/ipacm/src/IPACM_Lan.cpp b/ipacm/src/IPACM_Lan.cpp
index 707083c..5e1c36a 100644
--- a/ipacm/src/IPACM_Lan.cpp
+++ b/ipacm/src/IPACM_Lan.cpp
@@ -1682,9 +1682,106 @@
{
goto fail;
}
-
IPACMDBG_H("lan handle_down_evt\n ");
+ /* delete wan filter rule */
+ if (IPACM_Wan::isWanUP() && rx_prop != NULL)
+ {
+ IPACMDBG_H("LAN IF goes down, backhaul type %d\n", IPACM_Wan::backhaul_is_sta_mode);
+ handle_wan_down(IPACM_Wan::backhaul_is_sta_mode);
+ }
+
+ if (IPACM_Wan::isWanUP_V6() && rx_prop != NULL)
+ {
+ IPACMDBG_H("LAN IF goes down, backhaul type %d\n", IPACM_Wan::backhaul_is_sta_mode);
+ handle_wan_down_v6(IPACM_Wan::backhaul_is_sta_mode);
+ }
+
+ /* delete default filter rules */
+ if (ip_type != IPA_IP_v6 && rx_prop != NULL)
+ {
+ if (m_filtering.DeleteFilteringHdls(dft_v4fl_rule_hdl, IPA_IP_v4, IPV4_DEFAULT_FILTERTING_RULES) == false)
+ {
+ IPACMERR("Error Deleting Filtering Rule, aborting...\n");
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+#ifdef CT_OPT
+ if (m_filtering.DeleteFilteringHdls(tcp_ctl_flt_rule_hdl_v4, IPA_IP_v4, NUM_TCP_CTL_FLT_RULE) == false)
+ {
+ IPACMERR("Error deleting default filtering Rule, aborting...\n");
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+#endif
+ for(i=0; i<MAX_OFFLOAD_PAIR; i++)
+ {
+ if(m_filtering.DeleteFilteringHdls(&(lan2lan_flt_rule_hdl_v4[i].rule_hdl), IPA_IP_v4, 1) == false)
+ {
+ IPACMERR("Error deleting lan2lan IPv4 flt rules.\n");
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+ }
+ IPACMDBG_H("Deleted lan2lan IPv4 flt rules.\n");
+
+ /* free private-subnet ipv4 filter rules */
+ if (IPACM_Iface::ipacmcfg->ipa_num_private_subnet > IPA_PRIV_SUBNET_FILTER_RULE_HANDLES)
+ {
+ IPACMERR(" the number of rules are bigger than array, aborting...\n");
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+
+#ifdef FEATURE_IPA_ANDROID
+ if(m_filtering.DeleteFilteringHdls(private_fl_rule_hdl, IPA_IP_v4, IPA_MAX_PRIVATE_SUBNET_ENTRIES) == false)
+ {
+ IPACMERR("Error deleting private subnet IPv4 flt rules.\n");
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+#else
+ if (m_filtering.DeleteFilteringHdls(private_fl_rule_hdl, IPA_IP_v4, IPACM_Iface::ipacmcfg->ipa_num_private_subnet) == false)
+ {
+ IPACMERR("Error Deleting RuleTable(1) to Filtering, aborting...\n");
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+#endif
+ }
+ IPACMDBG_H("Finished delete default iface ipv4 filtering rules \n ");
+
+ if (ip_type != IPA_IP_v4 && rx_prop != NULL)
+ {
+ if (m_filtering.DeleteFilteringHdls(dft_v6fl_rule_hdl,
+ IPA_IP_v6,
+ (IPV6_DEFAULT_FILTERTING_RULES + IPV6_DEFAULT_LAN_FILTERTING_RULES)) == false)
+ {
+ IPACMERR("Error Adding RuleTable(1) to Filtering, aborting...\n");
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+#ifdef CT_OPT
+ if (m_filtering.DeleteFilteringHdls(tcp_ctl_flt_rule_hdl_v6, IPA_IP_v6, NUM_TCP_CTL_FLT_RULE) == false)
+ {
+ IPACMERR("Error deleting default filtering Rule, aborting...\n");
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+#endif
+ for(i=0; i<MAX_OFFLOAD_PAIR; i++)
+ {
+ if(m_filtering.DeleteFilteringHdls(&(lan2lan_flt_rule_hdl_v6[i].rule_hdl), IPA_IP_v6, 1) == false)
+ {
+ IPACMERR("Error deleting lan2lan IPv4 flt rules.\n");
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+ }
+ IPACMDBG_H("Deleted lan2lan IPv6 flt rules.\n");
+ }
+ IPACMDBG_H("Finished delete default iface ipv6 filtering rules \n ");
+
if (ip_type != IPA_IP_v6)
{
if (m_routing.DeleteRoutingHdl(dft_rt_rule_hdl[0], IPA_IP_v4)
@@ -1695,8 +1792,7 @@
goto fail;
}
}
-
- IPACMDBG_H("Finished delete default iface ipv4 rules \n ");
+ IPACMDBG_H("Finished delete default iface ipv4 rules \n ");
/* delete default v6 routing rule */
if (ip_type != IPA_IP_v4)
@@ -1714,7 +1810,6 @@
}
}
-
IPACMDBG_H("Finished delete default iface ipv6 rules \n ");
/* clean eth-client header, routing rules */
IPACMDBG_H("left %d eth clients need to be deleted \n ", num_eth_client);
@@ -1771,114 +1866,12 @@
/* Delete corresponding ipa_rm_resource_name of TX-endpoint after delete all IPV4V6 RT-rule */
IPACM_Iface::ipacmcfg->DelRmDepend(IPACM_Iface::ipacmcfg->ipa_client_rm_map_tbl[tx_prop->tx[0].dst_pipe]);
-
/* check software routing fl rule hdl */
if (softwarerouting_act == true && rx_prop != NULL)
{
handle_software_routing_disable();
}
-
- /* delete default filter rules */
- if (ip_type != IPA_IP_v6 && rx_prop != NULL)
- {
- if (m_filtering.DeleteFilteringHdls(dft_v4fl_rule_hdl, IPA_IP_v4, IPV4_DEFAULT_FILTERTING_RULES) == false)
- {
- IPACMERR("Error Deleting Filtering Rule, aborting...\n");
- res = IPACM_FAILURE;
- goto fail;
- }
-#ifdef CT_OPT
- if (m_filtering.DeleteFilteringHdls(tcp_ctl_flt_rule_hdl_v4, IPA_IP_v4, NUM_TCP_CTL_FLT_RULE) == false)
- {
- IPACMERR("Error deleting default filtering Rule, aborting...\n");
- res = IPACM_FAILURE;
- goto fail;
- }
-#endif
- for(i=0; i<MAX_OFFLOAD_PAIR; i++)
- {
- if(m_filtering.DeleteFilteringHdls(&(lan2lan_flt_rule_hdl_v4[i].rule_hdl), IPA_IP_v4, 1) == false)
- {
- IPACMERR("Error deleting lan2lan IPv4 flt rules.\n");
- res = IPACM_FAILURE;
- goto fail;
- }
- }
- IPACMDBG_H("Deleted lan2lan IPv4 flt rules.\n");
-
- /* free private-subnet ipv4 filter rules */
- if (IPACM_Iface::ipacmcfg->ipa_num_private_subnet > IPA_PRIV_SUBNET_FILTER_RULE_HANDLES)
- {
- IPACMERR(" the number of rules are bigger than array, aborting...\n");
- res = IPACM_FAILURE;
- goto fail;
- }
-
-#ifdef FEATURE_IPA_ANDROID
- if(m_filtering.DeleteFilteringHdls(private_fl_rule_hdl, IPA_IP_v4, IPA_MAX_PRIVATE_SUBNET_ENTRIES) == false)
- {
- IPACMERR("Error deleting private subnet IPv4 flt rules.\n");
- res = IPACM_FAILURE;
- goto fail;
- }
-#else
- if (m_filtering.DeleteFilteringHdls(private_fl_rule_hdl, IPA_IP_v4, IPACM_Iface::ipacmcfg->ipa_num_private_subnet) == false)
- {
- IPACMERR("Error Deleting RuleTable(1) to Filtering, aborting...\n");
- res = IPACM_FAILURE;
- goto fail;
- }
-#endif
- }
-
- IPACMDBG_H("Finished delete default iface ipv4 filtering rules \n ");
-
- if (ip_type != IPA_IP_v4 && rx_prop != NULL)
- {
- if (m_filtering.DeleteFilteringHdls(dft_v6fl_rule_hdl,
- IPA_IP_v6,
- (IPV6_DEFAULT_FILTERTING_RULES + IPV6_DEFAULT_LAN_FILTERTING_RULES)) == false)
- {
- IPACMERR("Error Adding RuleTable(1) to Filtering, aborting...\n");
- res = IPACM_FAILURE;
- goto fail;
- }
-#ifdef CT_OPT
- if (m_filtering.DeleteFilteringHdls(tcp_ctl_flt_rule_hdl_v6, IPA_IP_v6, NUM_TCP_CTL_FLT_RULE) == false)
- {
- IPACMERR("Error deleting default filtering Rule, aborting...\n");
- res = IPACM_FAILURE;
- goto fail;
- }
-#endif
- for(i=0; i<MAX_OFFLOAD_PAIR; i++)
- {
- if(m_filtering.DeleteFilteringHdls(&(lan2lan_flt_rule_hdl_v6[i].rule_hdl), IPA_IP_v6, 1) == false)
- {
- IPACMERR("Error deleting lan2lan IPv4 flt rules.\n");
- res = IPACM_FAILURE;
- goto fail;
- }
- }
- IPACMDBG_H("Deleted lan2lan IPv6 flt rules.\n");
- }
-
- IPACMDBG_H("Finished delete default iface ipv6 filtering rules \n ");
-
- /* delete wan filter rule */
- if (IPACM_Wan::isWanUP() && rx_prop != NULL)
- {
- IPACMDBG_H("LAN IF goes down, backhaul type %d\n", IPACM_Wan::backhaul_is_sta_mode);
- handle_wan_down(IPACM_Wan::backhaul_is_sta_mode);
- }
-
- if (IPACM_Wan::isWanUP_V6() && rx_prop != NULL)
- {
- IPACMDBG_H("LAN IF goes down, backhaul type %d\n", IPACM_Wan::backhaul_is_sta_mode);
- handle_wan_down_v6(IPACM_Wan::backhaul_is_sta_mode);
- }
-
/* posting ip to lan2lan module to delete RT/FILTER rules*/
post_lan2lan_client_disconnect_msg(IPA_IP_v4);
post_lan2lan_client_disconnect_msg(IPA_IP_v6);
diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp
index 2ed10c6..de5b03a 100644
--- a/ipacm/src/IPACM_Wlan.cpp
+++ b/ipacm/src/IPACM_Wlan.cpp
@@ -1844,6 +1844,20 @@
goto fail;
}
+ /* delete wan filter rule */
+ if (IPACM_Wan::isWanUP() && rx_prop != NULL)
+ {
+ IPACMDBG_H("LAN IF goes down, backhaul type %d\n", IPACM_Wan::backhaul_is_sta_mode);
+ IPACM_Lan::handle_wan_down(IPACM_Wan::backhaul_is_sta_mode);
+ }
+
+ if (IPACM_Wan::isWanUP_V6() && rx_prop != NULL)
+ {
+ IPACMDBG_H("LAN IF goes down, backhaul type %d\n", IPACM_Wan::backhaul_is_sta_mode);
+ IPACM_Lan::handle_wan_down_v6(IPACM_Wan::backhaul_is_sta_mode);
+ }
+ IPACMDBG_H("finished deleting wan filtering rules\n ");
+
/* Delete v4 filtering rules */
if (ip_type != IPA_IP_v6 && rx_prop != NULL)
{
@@ -1977,23 +1991,6 @@
}
IPACMDBG_H("finished deleting default RT rules\n ");
-
- /* delete wan filter rule */
- if (IPACM_Wan::isWanUP() && rx_prop != NULL)
- {
- IPACMDBG_H("LAN IF goes down, backhaul type %d\n", IPACM_Wan::backhaul_is_sta_mode);
- IPACM_Lan::handle_wan_down(IPACM_Wan::backhaul_is_sta_mode);
- }
-
- if (IPACM_Wan::isWanUP_V6() && rx_prop != NULL)
- {
- IPACMDBG_H("LAN IF goes down, backhaul type %d\n", IPACM_Wan::backhaul_is_sta_mode);
- IPACM_Lan::handle_wan_down_v6(IPACM_Wan::backhaul_is_sta_mode);
- }
-
- IPACMDBG_H("finished deleting wan filtering rules\n ");
-
-
/* check software routing fl rule hdl */
if (softwarerouting_act == true && rx_prop != NULL )
{