Monero
Loading...
Searching...
No Matches
nftnlrdr.c File Reference
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <errno.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <dlfcn.h>
#include <net/if.h>
#include <linux/version.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/netfilter/nfnetlink.h>
#include <linux/netfilter/nf_tables.h>
#include <libmnl/libmnl.h>
#include <libnftnl/table.h>
#include <libnftnl/chain.h>
#include <libnftnl/rule.h>
#include <libnftnl/expr.h>
#include "tiny_nf_nat.h"
#include "config.h"
#include "../macros.h"
#include "../commonrdr.h"
#include "nftnlrdr.h"
#include "nftnlrdr_misc.h"
Include dependency graph for nftnlrdr.c:

Classes

struct  timestamp_entry

Macros

#define d_printf(x)
#define NAT_CHAIN_TYPE   "nat"
#define FILTER_CHAIN_TYPE   "filter"

Functions

int init_redirect (void)
void shutdown_redirect (void)
int set_rdr_name (rdr_name_type param, const char *string)
static unsigned int get_timestamp (unsigned short eport, int proto)
static void remove_timestamp_entry (unsigned short eport, int proto)
static void add_timestamp_entry (unsigned short eport, int proto, unsigned timestamp)
int add_redirect_rule2 (const char *ifname, const char *rhost, unsigned short eport, const char *iaddr, unsigned short iport, int proto, const char *desc, unsigned int timestamp)
int add_peer_redirect_rule2 (const char *ifname, const char *rhost, unsigned short rport, const char *eaddr, unsigned short eport, const char *iaddr, unsigned short iport, int proto, const char *desc, unsigned int timestamp)
int add_filter_rule2 (const char *ifname, const char *rhost, const char *iaddr, unsigned short eport, unsigned short iport, int proto, const char *desc)
int add_peer_dscp_rule2 (const char *ifname, const char *rhost, unsigned short rport, unsigned char dscp, const char *iaddr, unsigned short iport, int proto, const char *desc, unsigned int timestamp)
int delete_filter_rule (const char *ifname, unsigned short port, int proto)
int delete_redirect_and_filter_rules (unsigned short eport, int proto)
int get_peer_rule_by_index (int index, char *ifname, unsigned short *eport, char *iaddr, int iaddrlen, unsigned short *iport, int *proto, char *desc, int desclen, char *rhost, int rhostlen, unsigned short *rport, unsigned int *timestamp, u_int64_t *packets, u_int64_t *bytes)
int get_redirect_rule (const char *ifname, unsigned short eport, int proto, char *iaddr, int iaddrlen, unsigned short *iport, char *desc, int desclen, char *rhost, int rhostlen, unsigned int *timestamp, u_int64_t *packets, u_int64_t *bytes)
int get_redirect_rule_count (const char *ifname)
int get_redirect_rule_by_index (int index, char *ifname, unsigned short *eport, char *iaddr, int iaddrlen, unsigned short *iport, int *proto, char *desc, int desclen, char *rhost, int rhostlen, unsigned int *timestamp, u_int64_t *packets, u_int64_t *bytes)
int get_nat_redirect_rule (const char *nat_chain_name, const char *ifname, unsigned short eport, int proto, char *iaddr, int iaddrlen, unsigned short *iport, char *desc, int desclen, char *rhost, int rhostlen, unsigned int *timestamp, u_int64_t *packets, u_int64_t *bytes)
unsigned short * get_portmappings_in_range (unsigned short startport, unsigned short endport, int proto, unsigned int *number)
int update_portmapping_desc_timestamp (const char *ifname, unsigned short eport, int proto, const char *desc, unsigned int timestamp)
int update_portmapping (const char *ifname, unsigned short eport, int proto, unsigned short iport, const char *desc, unsigned int timestamp)

Variables

static struct timestamp_entrytimestamp_list = NULL

Macro Definition Documentation

◆ d_printf

#define d_printf ( x)

◆ FILTER_CHAIN_TYPE

#define FILTER_CHAIN_TYPE   "filter"

◆ NAT_CHAIN_TYPE

#define NAT_CHAIN_TYPE   "nat"

Function Documentation

◆ add_filter_rule2()

int add_filter_rule2 ( const char * ifname,
const char * rhost,
const char * iaddr,
unsigned short eport,
unsigned short iport,
int proto,
const char * desc )

◆ add_peer_dscp_rule2()

int add_peer_dscp_rule2 ( const char * ifname,
const char * rhost,
unsigned short rport,
unsigned char dscp,
const char * iaddr,
unsigned short iport,
int proto,
const char * desc,
unsigned int timestamp )

◆ add_peer_redirect_rule2()

int add_peer_redirect_rule2 ( const char * ifname,
const char * rhost,
unsigned short rport,
const char * eaddr,
unsigned short eport,
const char * iaddr,
unsigned short iport,
int proto,
const char * desc,
unsigned int timestamp )

◆ add_redirect_rule2()

int add_redirect_rule2 ( const char * ifname,
const char * rhost,
unsigned short eport,
const char * iaddr,
unsigned short iport,
int proto,
const char * desc,
unsigned int timestamp )

◆ add_timestamp_entry()

void add_timestamp_entry ( unsigned short eport,
int proto,
unsigned timestamp )
static

◆ delete_filter_rule()

int delete_filter_rule ( const char * ifname,
unsigned short port,
int proto )

◆ delete_redirect_and_filter_rules()

int delete_redirect_and_filter_rules ( unsigned short eport,
int proto )

◆ get_nat_redirect_rule()

int get_nat_redirect_rule ( const char * nat_chain_name,
const char * ifname,
unsigned short eport,
int proto,
char * iaddr,
int iaddrlen,
unsigned short * iport,
char * desc,
int desclen,
char * rhost,
int rhostlen,
unsigned int * timestamp,
u_int64_t * packets,
u_int64_t * bytes )

◆ get_peer_rule_by_index()

int get_peer_rule_by_index ( int index,
char * ifname,
unsigned short * eport,
char * iaddr,
int iaddrlen,
unsigned short * iport,
int * proto,
char * desc,
int desclen,
char * rhost,
int rhostlen,
unsigned short * rport,
unsigned int * timestamp,
u_int64_t * packets,
u_int64_t * bytes )

◆ get_portmappings_in_range()

unsigned short * get_portmappings_in_range ( unsigned short startport,
unsigned short endport,
int proto,
unsigned int * number )

◆ get_redirect_rule()

int get_redirect_rule ( const char * ifname,
unsigned short eport,
int proto,
char * iaddr,
int iaddrlen,
unsigned short * iport,
char * desc,
int desclen,
char * rhost,
int rhostlen,
unsigned int * timestamp,
u_int64_t * packets,
u_int64_t * bytes )

◆ get_redirect_rule_by_index()

int get_redirect_rule_by_index ( int index,
char * ifname,
unsigned short * eport,
char * iaddr,
int iaddrlen,
unsigned short * iport,
int * proto,
char * desc,
int desclen,
char * rhost,
int rhostlen,
unsigned int * timestamp,
u_int64_t * packets,
u_int64_t * bytes )

◆ get_redirect_rule_count()

int get_redirect_rule_count ( const char * ifname)

◆ get_timestamp()

unsigned int get_timestamp ( unsigned short eport,
int proto )
static

◆ init_redirect()

int init_redirect ( void )

◆ remove_timestamp_entry()

void remove_timestamp_entry ( unsigned short eport,
int proto )
static

◆ set_rdr_name()

int set_rdr_name ( rdr_name_type param,
const char * string )

used by the core to override default chain names if specified in config file

Parameters
paramwhich string to set
stringthe new name to use. Do not dispose after setting (i.e. use strdup if not static).
Returns
0 if successful

◆ shutdown_redirect()

void shutdown_redirect ( void )

◆ update_portmapping()

int update_portmapping ( const char * ifname,
unsigned short eport,
int proto,
unsigned short iport,
const char * desc,
unsigned int timestamp )

◆ update_portmapping_desc_timestamp()

int update_portmapping_desc_timestamp ( const char * ifname,
unsigned short eport,
int proto,
const char * desc,
unsigned int timestamp )

Variable Documentation

◆ timestamp_list

struct timestamp_entry* timestamp_list = NULL
static