Merge "Return errors to caller" into tizen_5.5
[platform/core/connectivity/stc-manager.git] / src / helper / helper-nfacct-rule.h
index 7ce4ed7..e8923b8 100755 (executable)
@@ -31,6 +31,7 @@ typedef enum {
        NFACCT_COUNTER_UNKNOWN,
        NFACCT_COUNTER_IN = (1 << 1),
        NFACCT_COUNTER_OUT = (1 << 2),
+       NFACCT_COUNTER_FORWARD = (1 << 3),
        NFACCT_COUNTER_LAST_ELEM
 } nfacct_rule_direction;
 
@@ -53,10 +54,29 @@ typedef enum {
        NFACCT_COUNTER,
        NFACCT_WARN,
        NFACCT_BLOCK,
+       NFACCT_ALLOW,
        NFACCT_TETH_COUNTER,
+       NFACCT_TETH_WARN,
+       NFACCT_TETH_BLOCK,
+       NFACCT_TETH_ALLOW,
        NFACCT_RULE_LAST_ELEM,
 } nfacct_rule_intend;
 
+typedef enum {
+       NFACCT_TYPE_UNKNOWN,
+       NFACCT_TYPE_IPV4,
+       NFACCT_TYPE_IPV6,
+       NFACCT_TYPE_IPV4_IPV6,
+       NFACCT_TYPE_LAST_ELEM
+} nfacct_rule_iptype;
+
+typedef enum {
+       NFACCT_IPRANGE_TYPE_NONE,
+       NFACCT_IPRANGE_TYPE_SINGLE,
+       NFACCT_IPRANGE_TYPE_MASK,
+       NFACCT_IPRANGE_TYPE_RANGE,
+} nfacct_rule_iprange_type;
+
 enum nfnl_acct_flags {
        NFACCT_F_QUOTA_PKTS     = (1 << 0),
        NFACCT_F_QUOTA_BYTES    = (1 << 1),
@@ -70,7 +90,7 @@ enum nfnl_acct_flags {
  *
  *  and inherited nfacct_rule_counter and nfacct_rule_restriction
  *  with additional field:
- *     quota, quota_id, roaming, rst_state
+ *     quota, quota_id, roaming, rstn_state
  *
  * But ANSI C doesn't support inheritance.
  */
@@ -81,20 +101,28 @@ struct nfacct_rule {
        pid_t pid;
        uint32_t classid;
        stc_iface_type_e iftype;
+       nfacct_rule_action action;
        nfacct_rule_direction iotype;
        nfacct_rule_intend intend;
+       nfacct_rule_jump jump; /* in most cases jump is evalutation based on intend, but not always */
+       stc_app_state_e app_state;
+       stc_rstn_state_e rstn_state;
+       nfacct_rule_iptype iptype;
+       nfacct_rule_iprange_type src_iprange_type;
+       nfacct_rule_iprange_type dst_iprange_type;
+       char *src_ip1;
+       char *src_ip2;
+       char *dst_ip1;
+       char *dst_ip2;
+
        struct counter_arg *carg;
        stc_error_e(*iptables_rule)(struct nfacct_rule *counter);
-       uint64_t quota;
+       long long int quota;
        int quota_id;
        stc_roaming_type_e roaming;
-       stc_restriction_state_e rst_state;
 
-       /**
-        * in most cases jump is evalutation based
-        * on intend, but not always
-        */
-       nfacct_rule_jump jump;
+       long long int send_limit;
+       long long int rcv_limit;
 };
 
 typedef struct nfacct_rule nfacct_rule_s;
@@ -105,18 +133,9 @@ void generate_counter_name(nfacct_rule_s *counter);
 bool recreate_counter_by_name(char *cnt_name, nfacct_rule_s *counter);
 
 stc_error_e nfacct_send_get_all(struct counter_arg *carg);
-stc_error_e nfacct_send_get_counters(struct counter_arg *carg,
-                                    const char *name);
-stc_error_e nfacct_send_get(nfacct_rule_s *rule);
-stc_error_e nfacct_send_del(nfacct_rule_s *counter);
-
-stc_error_e exec_iptables_cmd(const char *cmd_buf, pid_t *pid);
-stc_error_e produce_net_rule(nfacct_rule_s *rule,
-                            const uint64_t send_limit,
-                            const uint64_t rcv_limit,
-                            const nfacct_rule_action action,
-                            const nfacct_rule_jump jump,
-                            const nfacct_rule_direction iotype);
+stc_error_e produce_net_rule(nfacct_rule_s *rule);
+stc_error_e produce_net_list(GSList *rule_list,
+               nfacct_rule_iptype iptype, nfacct_rule_action action);
 
 netlink_serialization_command *
 netlink_create_command(struct netlink_serialization_params *params);