Add tethering client data limitation
[platform/core/connectivity/stc-manager.git] / src / helper / helper-nfacct-rule.c
index 70b29a5..d75c3f3 100644 (file)
@@ -285,6 +285,14 @@ bool recreate_counter_by_name(char *cnt_name, nfacct_rule_s *cnt)
 
        STRING_SAVE_COPY(cnt->name, cnt_name);
 
+#if 0
+       /* ========================================================
+        * NOTE:-
+        * Below parsing for tethering case is not in use
+        * stc-manager needs to ignore this for NFACCT_TETH_COUNTER
+        * this is disbaled for future use.
+        * =======================================================*/
+
        //LCOV_EXCL_START
        if (cnt->intend == NFACCT_TETH_COUNTER) {
                char ifname_buf[MAX_IFACE_LENGTH];
@@ -322,6 +330,7 @@ bool recreate_counter_by_name(char *cnt_name, nfacct_rule_s *cnt)
                return true;
        }
        //LCOV_EXCL_STOP
+#endif
 
        io_part = strtok_r(name, "_", &save_ptr);
        if (io_part != NULL)
@@ -449,8 +458,10 @@ static stc_error_e exec_iptables_cmd(nfacct_rule_s *rule)
        iptables_rule.ifname = g_strdup(rule->ifname);
        iptables_rule.target = g_strdup(get_iptables_jump(rule->jump));
 
-       /* In case of tehering use chain 'STC_TETHER' */
-       if (rule->intend == NFACCT_TETH_COUNTER)
+       /* In case of tehering rules use chain 'STC_TETHER' */
+       if (rule->intend == NFACCT_TETH_COUNTER ||
+                       rule->intend == NFACCT_TETH_ALLOW ||
+                       rule->intend == NFACCT_TETH_BLOCK)
                iptables_rule.chain = g_strdup(STC_TETHER_CHAIN);
        else
                iptables_rule.chain = g_strdup(get_iptables_chain(rule->iotype));
@@ -531,7 +542,9 @@ static stc_error_e produce_app_rule(nfacct_rule_s *rule)
 
                /* cgroup extention on FORWARD chain are not allowed
                 * remove classid info in case of tethering rules */
-               if (rule->intend == NFACCT_TETH_COUNTER) {
+               if (rule->intend == NFACCT_TETH_COUNTER ||
+                               rule->intend == NFACCT_TETH_ALLOW ||
+                               rule->intend == NFACCT_TETH_BLOCK) {
                        classid = rule->classid;
                        rule->classid = 0;
                }
@@ -539,7 +552,9 @@ static stc_error_e produce_app_rule(nfacct_rule_s *rule)
                ret = exec_iptables_cmd(rule);
 
                /* restore the classid info in case of tethering rule */
-               if (rule->intend == NFACCT_TETH_COUNTER)
+               if (rule->intend == NFACCT_TETH_COUNTER ||
+                               rule->intend == NFACCT_TETH_ALLOW ||
+                               rule->intend == NFACCT_TETH_BLOCK)
                        rule->classid = classid;
 
                ret_value_msg_if(ret != STC_ERROR_NONE, STC_ERROR_FAIL,
@@ -586,7 +601,9 @@ static stc_error_e produce_app_rule(nfacct_rule_s *rule)
 
                /* cgroup extention on FORWARD chain are not allowed
                 * remove classid info in case of tethering rules */
-               if (rule->intend == NFACCT_TETH_COUNTER) {
+               if (rule->intend == NFACCT_TETH_COUNTER ||
+                               rule->intend == NFACCT_TETH_ALLOW ||
+                               rule->intend == NFACCT_TETH_BLOCK) {
                        classid = rule->classid;
                        rule->classid = 0;
                }
@@ -594,7 +611,9 @@ static stc_error_e produce_app_rule(nfacct_rule_s *rule)
                ret = exec_iptables_cmd(rule);
 
                /* restore the classid info in case of tethering rule */
-               if (rule->intend == NFACCT_TETH_COUNTER)
+               if (rule->intend == NFACCT_TETH_COUNTER ||
+                               rule->intend == NFACCT_TETH_ALLOW ||
+                               rule->intend == NFACCT_TETH_BLOCK)
                        rule->classid = classid;
 
                ret_value_msg_if(ret != STC_ERROR_NONE, STC_ERROR_FAIL,
@@ -795,12 +814,17 @@ void generate_counter_name(nfacct_rule_s *counter)
                STRING_SAVE_COPY(counter->ifname, iftype_name);
        }
 
-       if (counter->intend  == NFACCT_WARN)
+       if (counter->intend  == NFACCT_WARN ||
+                       counter->intend == NFACCT_TETH_WARN)
                warn_symbol = 'w';
-       else if (counter->intend  == NFACCT_BLOCK)
+       else if (counter->intend  == NFACCT_BLOCK ||
+                       counter->intend == NFACCT_TETH_BLOCK)
                warn_symbol = 'r';
-       else if (counter->intend  == NFACCT_ALLOW)
+       else if (counter->intend  == NFACCT_ALLOW ||
+                       counter->intend == NFACCT_TETH_ALLOW)
                warn_symbol = 'a';
+       else if (counter->intend == NFACCT_TETH_COUNTER)
+               warn_symbol = 't';
        snprintf(counter->name, NFACCT_NAME_MAX, "%c%d_%d_%d_%s",
                 warn_symbol, counter->iotype, counter->iftype,
                 counter->classid, counter->ifname);