Enable nat entry in cache after adding nat entry successfully
Change-Id: I0aff2816f8eda938956849969f599064af1ecc0f
diff --git a/ipacm/src/IPACM_Conntrack_NATApp.cpp b/ipacm/src/IPACM_Conntrack_NATApp.cpp
index dc9700d..9c14004 100644
--- a/ipacm/src/IPACM_Conntrack_NATApp.cpp
+++ b/ipacm/src/IPACM_Conntrack_NATApp.cpp
@@ -203,6 +203,7 @@
CHK_TBL_HDL();
#ifdef IPACM_DEBUG
+ IPACMDBG("Received below nat entry for deletion\n");
IPACM_ConntrackClient::iptodot("Private IP", rule->private_ip);
IPACM_ConntrackClient::iptodot("Target IP", rule->target_ip);
IPACMDBG("Private Port: %d\t Target Port: %d\t", rule->private_port, rule->target_port);
@@ -225,10 +226,23 @@
IPACMERR("%s() %d\n", __FUNCTION__, __LINE__);
return -1;
}
- }
+ IPACMDBG("Deleted below Nat entry Successfully\n");
+ }
+ else
+ {
+ IPACMDBG("Deleted below Nat entry only from cache\n");
+ }
+
memset(&cache[cnt], 0, sizeof(cache[cnt]));
curCnt--;
+
+ IPACM_ConntrackClient::iptodot("Private IP", rule->private_ip);
+ IPACM_ConntrackClient::iptodot("Target IP", rule->target_ip);
+ IPACMDBG("Private Port: %d\t Target Port: %d\t", rule->private_port, rule->target_port);
+ IPACMDBG("protocolcol: %d\n", rule->protocol);
+
+ break;
}
}
@@ -252,6 +266,21 @@
return -1;
}
+ if(rule->private_ip == 0 ||
+ rule->target_ip == 0 ||
+ rule->private_port == 0 ||
+ rule->target_port == 0 ||
+ rule->protocol == 0)
+ {
+ IPACMERR("Invalid Connection, ignoring it\n");
+ IPACM_ConntrackClient::iptodot("Private IP", rule->private_ip);
+ IPACM_ConntrackClient::iptodot("Target IP", rule->target_ip);
+ IPACMDBG("Private Port:%d \t Target Port: %d\t", rule->private_port, rule->target_port);
+ IPACMDBG("Public Port:%d\n", rule->public_port);
+ IPACMDBG("protocol: %d\n", rule->protocol);
+ return 0;
+ }
+
if(!ChkForDup(rule))
{
for(; cnt < max_entries; cnt++)
@@ -279,7 +308,7 @@
nat_rule.private_port = rule->private_port;
nat_rule.public_port = rule->public_port;
nat_rule.protocol = rule->protocol;
-
+
if(isPwrSaveIf(rule->private_ip) ||
isPwrSaveIf(rule->target_ip))
{
@@ -293,8 +322,10 @@
if(ipa_nat_add_ipv4_rule(nat_table_hdl, &nat_rule, &cache[cnt].rule_hdl) < 0)
{
IPACMERR("unable to add the rule\n");
- cache[cnt].enabled = true;
+ return -1;
}
+
+ cache[cnt].enabled = true;
}
cache[cnt].private_ip = rule->private_ip;