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;
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),
*
* 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.
*/
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;
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);