netfilter
firewalling, NAT, and packet mangling for linux
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
expr.h File Reference
#include <stdint.h>
#include <stdbool.h>
#include <sys/types.h>
Include dependency graph for expr.h:
This graph shows which files directly or indirectly include this file:

Macros

#define nft_rule_expr_set_data   nft_rule_expr_set
 
#define nft_rule_expr_get_data   nft_rule_expr_get
 

Enumerations

enum  {
  NFT_RULE_EXPR_ATTR_NAME = 0,
  NFT_RULE_EXPR_ATTR_BASE
}
 
enum  {
  NFT_EXPR_PAYLOAD_DREG = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_PAYLOAD_BASE,
  NFT_EXPR_PAYLOAD_OFFSET,
  NFT_EXPR_PAYLOAD_LEN
}
 
enum  {
  NFT_EXPR_META_KEY = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_META_DREG,
  NFT_EXPR_META_SREG
}
 
enum  {
  NFT_EXPR_CMP_SREG = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_CMP_OP,
  NFT_EXPR_CMP_DATA
}
 
enum  {
  NFT_EXPR_IMM_DREG = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_IMM_DATA,
  NFT_EXPR_IMM_VERDICT,
  NFT_EXPR_IMM_CHAIN
}
 
enum  {
  NFT_EXPR_CTR_PACKETS = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_CTR_BYTES
}
 
enum  {
  NFT_EXPR_BITWISE_SREG = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_BITWISE_DREG,
  NFT_EXPR_BITWISE_LEN,
  NFT_EXPR_BITWISE_MASK,
  NFT_EXPR_BITWISE_XOR
}
 
enum  {
  NFT_EXPR_TG_NAME = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_TG_REV,
  NFT_EXPR_TG_INFO
}
 
enum  {
  NFT_EXPR_MT_NAME = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_MT_REV,
  NFT_EXPR_MT_INFO
}
 
enum  {
  NFT_EXPR_NAT_TYPE = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_NAT_FAMILY,
  NFT_EXPR_NAT_REG_ADDR_MIN,
  NFT_EXPR_NAT_REG_ADDR_MAX,
  NFT_EXPR_NAT_REG_PROTO_MIN,
  NFT_EXPR_NAT_REG_PROTO_MAX,
  NFT_EXPR_NAT_FLAGS
}
 
enum  {
  NFT_EXPR_LOOKUP_SREG = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_LOOKUP_DREG,
  NFT_EXPR_LOOKUP_SET,
  NFT_EXPR_LOOKUP_SET_ID
}
 
enum  {
  NFT_EXPR_LOG_PREFIX = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_LOG_GROUP,
  NFT_EXPR_LOG_SNAPLEN,
  NFT_EXPR_LOG_QTHRESHOLD,
  NFT_EXPR_LOG_LEVEL,
  NFT_EXPR_LOG_FLAGS
}
 
enum  {
  NFT_EXPR_EXTHDR_DREG = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_EXTHDR_TYPE,
  NFT_EXPR_EXTHDR_OFFSET,
  NFT_EXPR_EXTHDR_LEN
}
 
enum  {
  NFT_EXPR_CT_DREG = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_CT_KEY,
  NFT_EXPR_CT_DIR,
  NFT_EXPR_CT_SREG
}
 
enum  {
  NFT_EXPR_BYTEORDER_DREG = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_BYTEORDER_SREG,
  NFT_EXPR_BYTEORDER_OP,
  NFT_EXPR_BYTEORDER_LEN,
  NFT_EXPR_BYTEORDER_SIZE
}
 
enum  {
  NFT_EXPR_LIMIT_RATE = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_LIMIT_UNIT
}
 
enum  {
  NFT_EXPR_REJECT_TYPE = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_REJECT_CODE
}
 
enum  {
  NFT_EXPR_QUEUE_NUM = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_QUEUE_TOTAL,
  NFT_EXPR_QUEUE_FLAGS
}
 
enum  { NFT_EXPR_MASQ_FLAGS = NFT_RULE_EXPR_ATTR_BASE }
 
enum  {
  NFT_EXPR_REDIR_REG_PROTO_MIN = NFT_RULE_EXPR_ATTR_BASE,
  NFT_EXPR_REDIR_REG_PROTO_MAX,
  NFT_EXPR_REDIR_FLAGS
}
 

Functions

struct nft_rule_exprnft_rule_expr_alloc (const char *name)
 
void nft_rule_expr_free (struct nft_rule_expr *expr)
 
bool nft_rule_expr_is_set (const struct nft_rule_expr *expr, uint16_t type)
 
void nft_rule_expr_set (struct nft_rule_expr *expr, uint16_t type, const void *data, uint32_t data_len)
 
void nft_rule_expr_set_u8 (struct nft_rule_expr *expr, uint16_t type, uint8_t data)
 
void nft_rule_expr_set_u16 (struct nft_rule_expr *expr, uint16_t type, uint16_t data)
 
void nft_rule_expr_set_u32 (struct nft_rule_expr *expr, uint16_t type, uint32_t data)
 
void nft_rule_expr_set_u64 (struct nft_rule_expr *expr, uint16_t type, uint64_t data)
 
void nft_rule_expr_set_str (struct nft_rule_expr *expr, uint16_t type, const char *str)
 
const void * nft_rule_expr_get (const struct nft_rule_expr *expr, uint16_t type, uint32_t *data_len)
 
uint8_t nft_rule_expr_get_u8 (const struct nft_rule_expr *expr, uint16_t type)
 
uint16_t nft_rule_expr_get_u16 (const struct nft_rule_expr *expr, uint16_t type)
 
uint32_t nft_rule_expr_get_u32 (const struct nft_rule_expr *expr, uint16_t type)
 
uint64_t nft_rule_expr_get_u64 (const struct nft_rule_expr *expr, uint16_t type)
 
const char * nft_rule_expr_get_str (const struct nft_rule_expr *expr, uint16_t type)
 
void nft_rule_expr_build_payload (struct nlmsghdr *nlh, struct nft_rule_expr *expr)
 
int nft_rule_expr_snprintf (char *buf, size_t buflen, struct nft_rule_expr *expr, uint32_t type, uint32_t flags)
 

Macro Definition Documentation

#define nft_rule_expr_get_data   nft_rule_expr_get
#define nft_rule_expr_set_data   nft_rule_expr_set

Enumeration Type Documentation

anonymous enum
Enumerator
NFT_RULE_EXPR_ATTR_NAME 
NFT_RULE_EXPR_ATTR_BASE 
anonymous enum
Enumerator
NFT_EXPR_PAYLOAD_DREG 
NFT_EXPR_PAYLOAD_BASE 
NFT_EXPR_PAYLOAD_OFFSET 
NFT_EXPR_PAYLOAD_LEN 
anonymous enum
Enumerator
NFT_EXPR_META_KEY 
NFT_EXPR_META_DREG 
NFT_EXPR_META_SREG 
anonymous enum
Enumerator
NFT_EXPR_CMP_SREG 
NFT_EXPR_CMP_OP 
NFT_EXPR_CMP_DATA 
anonymous enum
Enumerator
NFT_EXPR_IMM_DREG 
NFT_EXPR_IMM_DATA 
NFT_EXPR_IMM_VERDICT 
NFT_EXPR_IMM_CHAIN 
anonymous enum
Enumerator
NFT_EXPR_CTR_PACKETS 
NFT_EXPR_CTR_BYTES 
anonymous enum
Enumerator
NFT_EXPR_BITWISE_SREG 
NFT_EXPR_BITWISE_DREG 
NFT_EXPR_BITWISE_LEN 
NFT_EXPR_BITWISE_MASK 
NFT_EXPR_BITWISE_XOR 
anonymous enum
Enumerator
NFT_EXPR_TG_NAME 
NFT_EXPR_TG_REV 
NFT_EXPR_TG_INFO 
anonymous enum
Enumerator
NFT_EXPR_MT_NAME 
NFT_EXPR_MT_REV 
NFT_EXPR_MT_INFO 
anonymous enum
Enumerator
NFT_EXPR_NAT_TYPE 
NFT_EXPR_NAT_FAMILY 
NFT_EXPR_NAT_REG_ADDR_MIN 
NFT_EXPR_NAT_REG_ADDR_MAX 
NFT_EXPR_NAT_REG_PROTO_MIN 
NFT_EXPR_NAT_REG_PROTO_MAX 
NFT_EXPR_NAT_FLAGS 
anonymous enum
Enumerator
NFT_EXPR_LOOKUP_SREG 
NFT_EXPR_LOOKUP_DREG 
NFT_EXPR_LOOKUP_SET 
NFT_EXPR_LOOKUP_SET_ID 
anonymous enum
Enumerator
NFT_EXPR_LOG_PREFIX 
NFT_EXPR_LOG_GROUP 
NFT_EXPR_LOG_SNAPLEN 
NFT_EXPR_LOG_QTHRESHOLD 
NFT_EXPR_LOG_LEVEL 
NFT_EXPR_LOG_FLAGS 
anonymous enum
Enumerator
NFT_EXPR_EXTHDR_DREG 
NFT_EXPR_EXTHDR_TYPE 
NFT_EXPR_EXTHDR_OFFSET 
NFT_EXPR_EXTHDR_LEN 
anonymous enum
Enumerator
NFT_EXPR_CT_DREG 
NFT_EXPR_CT_KEY 
NFT_EXPR_CT_DIR 
NFT_EXPR_CT_SREG 
anonymous enum
Enumerator
NFT_EXPR_BYTEORDER_DREG 
NFT_EXPR_BYTEORDER_SREG 
NFT_EXPR_BYTEORDER_OP 
NFT_EXPR_BYTEORDER_LEN 
NFT_EXPR_BYTEORDER_SIZE 
anonymous enum
Enumerator
NFT_EXPR_LIMIT_RATE 
NFT_EXPR_LIMIT_UNIT 
anonymous enum
Enumerator
NFT_EXPR_REJECT_TYPE 
NFT_EXPR_REJECT_CODE 
anonymous enum
Enumerator
NFT_EXPR_QUEUE_NUM 
NFT_EXPR_QUEUE_TOTAL 
NFT_EXPR_QUEUE_FLAGS 
anonymous enum
Enumerator
NFT_EXPR_MASQ_FLAGS 
anonymous enum
Enumerator
NFT_EXPR_REDIR_REG_PROTO_MIN 
NFT_EXPR_REDIR_REG_PROTO_MAX 
NFT_EXPR_REDIR_FLAGS 

Function Documentation

struct nft_rule_expr* nft_rule_expr_alloc ( const char *  name)
void nft_rule_expr_build_payload ( struct nlmsghdr nlh,
struct nft_rule_expr expr 
)

References expr_ops::build, mnl_attr_nest_end(), mnl_attr_nest_start(), mnl_attr_put_strz(), expr_ops::name, NFTA_EXPR_DATA, NFTA_EXPR_NAME, NFTA_LIST_ELEM, and nft_rule_expr::ops.

Referenced by nft_rule_nlmsg_build_payload().

Here is the call graph for this function:

Here is the caller graph for this function:

void nft_rule_expr_free ( struct nft_rule_expr expr)

References expr_ops::free, nft_rule_expr::ops, and xfree.

Referenced by nft_rule_free().

Here is the caller graph for this function:

const void* nft_rule_expr_get ( const struct nft_rule_expr expr,
uint16_t  type,
uint32_t *  data_len 
)
const char* nft_rule_expr_get_str ( const struct nft_rule_expr expr,
uint16_t  type 
)

References nft_rule_expr_get().

Referenced by nft_parse_immediate(), nft_parse_target(), nft_rule_to_arptables_command_state(), nft_rule_to_iptables_command_state(), and nft_set_lookup_id().

Here is the call graph for this function:

Here is the caller graph for this function:

uint16_t nft_rule_expr_get_u16 ( const struct nft_rule_expr expr,
uint16_t  type 
)

References data, nft_rule_expr_get(), and NULL.

Here is the call graph for this function:

uint32_t nft_rule_expr_get_u32 ( const struct nft_rule_expr expr,
uint16_t  type 
)

References data, nft_rule_expr_get(), and NULL.

Referenced by get_cmp_data(), nft_parse_bitwise(), nft_parse_cmp(), nft_parse_immediate(), nft_parse_meta(), nft_parse_payload(), nft_parse_target(), and parse_meta().

Here is the call graph for this function:

Here is the caller graph for this function:

uint64_t nft_rule_expr_get_u64 ( const struct nft_rule_expr expr,
uint16_t  type 
)

References data, nft_rule_expr_get(), and NULL.

Referenced by nft_parse_counter().

Here is the call graph for this function:

Here is the caller graph for this function:

uint8_t nft_rule_expr_get_u8 ( const struct nft_rule_expr expr,
uint16_t  type 
)

References data, nft_rule_expr_get(), and NULL.

Here is the call graph for this function:

bool nft_rule_expr_is_set ( const struct nft_rule_expr expr,
uint16_t  type 
)

References nft_rule_expr::flags, and type.

void nft_rule_expr_set ( struct nft_rule_expr expr,
uint16_t  type,
const void *  data,
uint32_t  data_len 
)
void nft_rule_expr_set_str ( struct nft_rule_expr expr,
uint16_t  type,
const char *  str 
)

References nft_rule_expr_set().

Referenced by add_jumpto().

Here is the call graph for this function:

Here is the caller graph for this function:

void nft_rule_expr_set_u16 ( struct nft_rule_expr expr,
uint16_t  type,
uint16_t  data 
)

References nft_rule_expr_set().

Here is the call graph for this function:

void nft_rule_expr_set_u32 ( struct nft_rule_expr expr,
uint16_t  type,
uint32_t  data 
)

References nft_rule_expr_set().

Referenced by add_bitwise_u16(), add_cmp_ptr(), add_jumpto(), add_meta(), add_payload(), and add_verdict().

Here is the call graph for this function:

Here is the caller graph for this function:

void nft_rule_expr_set_u64 ( struct nft_rule_expr expr,
uint16_t  type,
uint64_t  data 
)

References nft_rule_expr_set().

Referenced by add_counters().

Here is the call graph for this function:

Here is the caller graph for this function:

void nft_rule_expr_set_u8 ( struct nft_rule_expr expr,
uint16_t  type,
uint8_t  data 
)

References nft_rule_expr_set().

Here is the call graph for this function:

int nft_rule_expr_snprintf ( char *  buf,
size_t  buflen,
struct nft_rule_expr expr,
uint32_t  type,
uint32_t  flags 
)

References len, nft_rule_expr::ops, size, expr_ops::snprintf, and SNPRINTF_BUFFER_SIZE.

Referenced by netlink_dump_expr().

Here is the caller graph for this function: