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_ {
37  LIST_ENTRY(rule_t) entry;
38  char * table;
39  char * chain;
47  in_addr_t eaddr;
48  in_addr_t iaddr;
49  in_addr_t rhost;
60  char *desc;
61 } rule_t;
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 *
77 rule_set_snat(uint8_t family, uint8_t proto,
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);
uint32_t reg1_val
Definition: nftnlrdr_misc.h:56
uint64_t bytes
Definition: nftnlrdr_misc.h:59
uint64_t handle
Definition: nftnlrdr_misc.h:40
int nft_send_request(struct nft_rule *rule, uint16_t cmd)
unsigned short uint16_t
Definition: stdint.h:125
rule_t ** peer_cache
unsigned char uint8_t
Definition: stdint.h:124
LIST_HEAD(rule_list, rule_)
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)
in_addr_t eaddr
Definition: nftnlrdr_misc.h:47
enum rule_reg_type reg1_type
Definition: nftnlrdr_misc.h:54
LIST_ENTRY(rule_t) entry
void reflesh_nft_cache(uint32_t family)
unsigned int uint32_t
Definition: stdint.h:126
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)
uint8_t proto
Definition: nftnlrdr_misc.h:53
struct nft_rule * rule_del_handle(rule_t *r)
unsigned __int64 uint64_t
Definition: stdint.h:136
uint32_t nat_type
Definition: nftnlrdr_misc.h:42
in_addr_t iaddr
Definition: nftnlrdr_misc.h:48
uint32_t ingress_ifidx
Definition: nftnlrdr_misc.h:45
rule_type
Definition: nftnlrdr_misc.h:28
rule_reg_type
Definition: nftnlrdr_misc.h:14
uint32_t egress_ifidx
Definition: nftnlrdr_misc.h:46
uint16_t eport
Definition: nftnlrdr_misc.h:50
uint16_t rport
Definition: nftnlrdr_misc.h:52
uint64_t packets
Definition: nftnlrdr_misc.h:58
void print_rule(rule_t *r)
in_addr_t rhost
Definition: nftnlrdr_misc.h:49
enum rule_reg_type reg2_type
Definition: nftnlrdr_misc.h:55
struct rule_list head
uint32_t filter_action
Definition: nftnlrdr_misc.h:43
uint16_t iport
Definition: nftnlrdr_misc.h:51
struct rule_ rule_t
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)
enum rule_type type
Definition: nftnlrdr_misc.h:41
char * table
Definition: nftnlrdr_misc.h:38
char * chain
Definition: nftnlrdr_misc.h:39
uint32_t reg2_val
Definition: nftnlrdr_misc.h:57
rule_t ** redirect_cache
char * desc
Definition: nftnlrdr_misc.h:60
uint32_t family
Definition: nftnlrdr_misc.h:44