#ifndef _IP_FW3_BASIC_H
#define _IP_FW3_BASIC_H
#define MODULE_BASIC_ID 0
#define MODULE_BASIC_NAME "basic"
enum ipfw3_basic_opcodes {
O_BASIC_ACCEPT,
O_BASIC_DENY,
O_BASIC_COUNT,
O_BASIC_SKIPTO,
O_BASIC_FORWARD,
O_BASIC_IN,
O_BASIC_OUT,
O_BASIC_VIA,
O_BASIC_XMIT,
O_BASIC_RECV,
O_BASIC_PROTO,
O_BASIC_IP_SRC,
O_BASIC_IP_SRC_N_PORT,
O_BASIC_IP_SRC_MASK,
O_BASIC_IP_SRC_ME,
O_BASIC_IP_SRC_LOOKUP,
O_BASIC_IP_DST,
O_BASIC_IP_DST_N_PORT,
O_BASIC_IP_DST_MASK,
O_BASIC_IP_DST_ME,
O_BASIC_IP_DST_LOOKUP,
O_BASIC_IP_SRCPORT,
O_BASIC_IP_DSTPORT,
O_BASIC_PROB,
O_BASIC_KEEP_STATE,
O_BASIC_CHECK_STATE,
O_BASIC_TAG,
O_BASIC_UNTAG,
O_BASIC_TAGGED,
O_BASIC_COMMENT,
};
#define IS_EXPIRED(state) (state->lifetime > 0 && \
(state->timestamp + state->lifetime) < time_second) || \
((state->expiry != 0) && (state->expiry < time_second))
#ifdef _KERNEL
#include <net/ipfw3_basic/ip_fw3_state.h>
void check_count(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_skipto(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_forward(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_in(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_out(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_via(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_proto(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_prob(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_from(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_from_lookup(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_from_me(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_from_mask(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_to(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_to_lookup(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_to_me(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_to_mask(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_tag(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_untag(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_tagged(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_src_port(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_dst_port(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_src_n_port(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
void check_dst_n_port(int *cmd_ctl, int *cmd_val, struct ip_fw_args **args,
struct ip_fw **f, ipfw_insn *cmd, uint16_t ip_len);
int match_state(ipfw_insn *cmd, struct ipfw_flow_id *fid,
struct ipfw3_state *state);
int count_match_state(ipfw_insn *cmd, struct ipfw_flow_id *fid,
struct ipfw3_state *state, int *count);
int ip_fw3_basic_init(void);
int ip_fw3_basic_fini(void);
#endif
#endif