Electroneum
nftnlrdr_misc.h
Go to the documentation of this file.
1 /*
2  * MiniUPnP project
3  * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
4  * (c) 2015 Tomofumi Hayashi
5  *
6  * This software is subject to the conditions detailed
7  * in the LICENCE file provided within the distribution.
8  */
9 #include <sys/queue.h>
10 
11 #define NFT_TABLE_NAT "nat"
12 #define NFT_TABLE_FILTER "filter"
13 
20  RULE_REG_IP_SD_ADDR, /* source & dest */
23  RULE_REG_TCP_SD_PORT, /* source & dest */
26 };
27 
28 enum rule_type {
34 };
35 
36 typedef struct rule_ {
38  char * table;
39  char * chain;
41  enum rule_type type;
47  in_addr_t eaddr;
48  in_addr_t iaddr;
49  in_addr_t rhost;
60  char *desc;
62 
63 LIST_HEAD(rule_list, rule_);
64 extern struct rule_list head;
65 extern rule_t **peer_cache;
66 extern rule_t **redirect_cache;
67 
68 int
69 nft_send_request(struct nft_rule * rule, uint16_t cmd);
70 struct nft_rule *
71 rule_set_dnat(uint8_t family, const char * ifname, uint8_t proto,
72  in_addr_t rhost, unsigned short eport,
73  in_addr_t ihost, uint32_t iport,
74  const char *descr,
75  const char *handle);
76 struct nft_rule *
78  in_addr_t rhost, unsigned short rport,
79  in_addr_t ehost, unsigned short eport,
80  in_addr_t ihost, unsigned short iport,
81  const char *descr,
82  const char *handle);
83 struct nft_rule *
84 rule_set_filter(uint8_t family, const char * ifname, uint8_t proto,
85  in_addr_t rhost, in_addr_t iaddr, unsigned short eport,
86  unsigned short iport, const char * descr, const char *handle);
87 struct nft_rule *
89 void
91 void print_rule(rule_t *r);
LIST_HEAD(rule_list, rule_)
struct nft_rule * rule_set_snat(uint8_t family, uint8_t proto, in_addr_t rhost, unsigned short rport, in_addr_t ehost, unsigned short eport, in_addr_t ihost, unsigned short iport, const char *descr, const char *handle)
struct rule_ rule_t
void print_rule(rule_t *r)
void reflesh_nft_cache(uint32_t family)
rule_t ** redirect_cache
struct nft_rule * rule_set_filter(uint8_t family, const char *ifname, uint8_t proto, in_addr_t rhost, in_addr_t iaddr, unsigned short eport, unsigned short iport, const char *descr, const char *handle)
rule_t ** peer_cache
struct nft_rule * rule_set_dnat(uint8_t family, const char *ifname, uint8_t proto, in_addr_t rhost, unsigned short eport, in_addr_t ihost, uint32_t iport, const char *descr, const char *handle)
struct nft_rule * rule_del_handle(rule_t *r)
rule_type
Definition: nftnlrdr_misc.h:28
@ RULE_FILTER
Definition: nftnlrdr_misc.h:32
@ RULE_SNAT
Definition: nftnlrdr_misc.h:31
@ RULE_NAT
Definition: nftnlrdr_misc.h:30
@ RULE_NONE
Definition: nftnlrdr_misc.h:29
@ RULE_COUNTER
Definition: nftnlrdr_misc.h:33
int nft_send_request(struct nft_rule *rule, uint16_t cmd)
struct rule_list head
rule_reg_type
Definition: nftnlrdr_misc.h:14
@ RULE_REG_TCP_SD_PORT
Definition: nftnlrdr_misc.h:23
@ RULE_REG_IP_SRC_ADDR
Definition: nftnlrdr_misc.h:18
@ RULE_REG_IP_PROTO
Definition: nftnlrdr_misc.h:21
@ RULE_REG_IMM_VAL
Definition: nftnlrdr_misc.h:24
@ RULE_REG_NONE
Definition: nftnlrdr_misc.h:15
@ RULE_REG_IP_SD_ADDR
Definition: nftnlrdr_misc.h:20
@ RULE_REG_TCP_DPORT
Definition: nftnlrdr_misc.h:22
@ RULE_REG_OIF
Definition: nftnlrdr_misc.h:17
@ RULE_REG_IIF
Definition: nftnlrdr_misc.h:16
@ RULE_REG_IP_DEST_ADDR
Definition: nftnlrdr_misc.h:19
@ RULE_REG_MAX
Definition: nftnlrdr_misc.h:25
unsigned short uint16_t
Definition: stdint.h:125
unsigned int uint32_t
Definition: stdint.h:126
unsigned char uint8_t
Definition: stdint.h:124
unsigned __int64 uint64_t
Definition: stdint.h:136
uint32_t reg1_val
Definition: nftnlrdr_misc.h:56
uint8_t proto
Definition: nftnlrdr_misc.h:53
uint64_t handle
Definition: nftnlrdr_misc.h:40
uint32_t egress_ifidx
Definition: nftnlrdr_misc.h:46
uint16_t iport
Definition: nftnlrdr_misc.h:51
char * table
Definition: nftnlrdr_misc.h:38
uint16_t eport
Definition: nftnlrdr_misc.h:50
uint32_t nat_type
Definition: nftnlrdr_misc.h:42
uint32_t ingress_ifidx
Definition: nftnlrdr_misc.h:45
uint32_t family
Definition: nftnlrdr_misc.h:44
char * desc
Definition: nftnlrdr_misc.h:60
uint16_t rport
Definition: nftnlrdr_misc.h:52
enum rule_type type
Definition: nftnlrdr_misc.h:41
in_addr_t iaddr
Definition: nftnlrdr_misc.h:48
uint64_t packets
Definition: nftnlrdr_misc.h:58
char * chain
Definition: nftnlrdr_misc.h:39
in_addr_t rhost
Definition: nftnlrdr_misc.h:49
enum rule_reg_type reg1_type
Definition: nftnlrdr_misc.h:54
LIST_ENTRY(rule_t) entry
uint32_t filter_action
Definition: nftnlrdr_misc.h:43
uint32_t reg2_val
Definition: nftnlrdr_misc.h:57
enum rule_reg_type reg2_type
Definition: nftnlrdr_misc.h:55
in_addr_t eaddr
Definition: nftnlrdr_misc.h:47
uint64_t bytes
Definition: nftnlrdr_misc.h:59