Crate nftnl_sys

Source
Expand description

Low level FFI bindings to libnftnl, a userspace library providing a low-level netlink programming interface (API) to the in-kernel nf_tables subsystem.

See nftnl for a higher level safe abstraction.

§Linking to libmnl and libnftnl

By default this crate uses pkg-config to find and link to its C dependencies, libmnl and libnftnl. To manually configure where to look for these libraries, set the environment variables LIBMNL_LIB_DIR and LIBNFTNL_LIB_DIR to point to the directories where libmnl.so (or libmnl.a) and libnftnl.so (or libnftnl.a) reside.

§Selecting version of libnftnl

This crate has bindings for most versions of libnftnl. All bindings are generated by bindgen via the generate_bindings.sh script in this repository.

Only one version of libnftnl can be exposed via this crate. By default the crate exports the bindings for the oldest supported version (libnftnl-1.0.6). To get newer versions activate the corresponding features. See Cargo.toml for available features/versions.

So for example, to get bindings to libnftnl-1.0.9 depend on this crate like this:

[dependencies]
nftnl-sys = { version = "0.1", features = ["nftnl-1-0-9"] }

Re-exports§

pub use libc;

Structs§

nftnl_batch
nftnl_chain
nftnl_chain_list
nftnl_chain_list_iter
nftnl_expr
nftnl_expr_iter
nftnl_gen
nftnl_parse_ctx
nftnl_parse_err
nftnl_rule
nftnl_rule_list
nftnl_rule_list_iter
nftnl_ruleset
nftnl_set
nftnl_set_elem
nftnl_set_elems_iter
nftnl_set_list
nftnl_set_list_iter
nftnl_table
nftnl_table_list
nftnl_table_list_iter
nftnl_trace
nftnl_udata
nftnl_udata_buf

Constants§

NFTNL_CHAIN_BYTES
NFTNL_CHAIN_DEV
NFTNL_CHAIN_FAMILY
NFTNL_CHAIN_HANDLE
NFTNL_CHAIN_HOOKNUM
NFTNL_CHAIN_NAME
NFTNL_CHAIN_PACKETS
NFTNL_CHAIN_POLICY
NFTNL_CHAIN_PRIO
NFTNL_CHAIN_TABLE
NFTNL_CHAIN_TYPE
NFTNL_CHAIN_USE
NFTNL_CMD_ADD
NFTNL_CMD_DELETE
NFTNL_CMD_FLUSH
NFTNL_CMD_INSERT
NFTNL_CMD_MAX
NFTNL_CMD_REPLACE
NFTNL_CMD_UNSPEC
NFTNL_EXPR_BASE
NFTNL_EXPR_BITWISE_DREG
NFTNL_EXPR_BITWISE_LEN
NFTNL_EXPR_BITWISE_MASK
NFTNL_EXPR_BITWISE_SREG
NFTNL_EXPR_BITWISE_XOR
NFTNL_EXPR_BYTEORDER_DREG
NFTNL_EXPR_BYTEORDER_LEN
NFTNL_EXPR_BYTEORDER_OP
NFTNL_EXPR_BYTEORDER_SIZE
NFTNL_EXPR_BYTEORDER_SREG
NFTNL_EXPR_CMP_DATA
NFTNL_EXPR_CMP_OP
NFTNL_EXPR_CMP_SREG
NFTNL_EXPR_CTR_BYTES
NFTNL_EXPR_CTR_PACKETS
NFTNL_EXPR_CT_DIR
NFTNL_EXPR_CT_DREG
NFTNL_EXPR_CT_KEY
NFTNL_EXPR_CT_SREG
NFTNL_EXPR_DUP_SREG_ADDR
NFTNL_EXPR_DUP_SREG_DEV
NFTNL_EXPR_DYNSET_EXPR
NFTNL_EXPR_DYNSET_OP
NFTNL_EXPR_DYNSET_SET_ID
NFTNL_EXPR_DYNSET_SET_NAME
NFTNL_EXPR_DYNSET_SREG_DATA
NFTNL_EXPR_DYNSET_SREG_KEY
NFTNL_EXPR_DYNSET_TIMEOUT
NFTNL_EXPR_EXTHDR_DREG
NFTNL_EXPR_EXTHDR_LEN
NFTNL_EXPR_EXTHDR_OFFSET
NFTNL_EXPR_EXTHDR_TYPE
NFTNL_EXPR_FWD_SREG_DEV
NFTNL_EXPR_IMM_CHAIN
NFTNL_EXPR_IMM_DATA
NFTNL_EXPR_IMM_DREG
NFTNL_EXPR_IMM_VERDICT
NFTNL_EXPR_LIMIT_BURST
NFTNL_EXPR_LIMIT_FLAGS
NFTNL_EXPR_LIMIT_RATE
NFTNL_EXPR_LIMIT_TYPE
NFTNL_EXPR_LIMIT_UNIT
NFTNL_EXPR_LOG_FLAGS
NFTNL_EXPR_LOG_GROUP
NFTNL_EXPR_LOG_LEVEL
NFTNL_EXPR_LOG_PREFIX
NFTNL_EXPR_LOG_QTHRESHOLD
NFTNL_EXPR_LOG_SNAPLEN
NFTNL_EXPR_LOOKUP_DREG
NFTNL_EXPR_LOOKUP_SET
NFTNL_EXPR_LOOKUP_SET_ID
NFTNL_EXPR_LOOKUP_SREG
NFTNL_EXPR_MASQ_FLAGS
NFTNL_EXPR_MASQ_REG_PROTO_MAX
NFTNL_EXPR_MASQ_REG_PROTO_MIN
NFTNL_EXPR_META_DREG
NFTNL_EXPR_META_KEY
NFTNL_EXPR_META_SREG
NFTNL_EXPR_MT_INFO
NFTNL_EXPR_MT_NAME
NFTNL_EXPR_MT_REV
NFTNL_EXPR_NAME
NFTNL_EXPR_NAT_FAMILY
NFTNL_EXPR_NAT_FLAGS
NFTNL_EXPR_NAT_REG_ADDR_MAX
NFTNL_EXPR_NAT_REG_ADDR_MIN
NFTNL_EXPR_NAT_REG_PROTO_MAX
NFTNL_EXPR_NAT_REG_PROTO_MIN
NFTNL_EXPR_NAT_TYPE
NFTNL_EXPR_PAYLOAD_BASE
NFTNL_EXPR_PAYLOAD_CSUM_OFFSET
NFTNL_EXPR_PAYLOAD_CSUM_TYPE
NFTNL_EXPR_PAYLOAD_DREG
NFTNL_EXPR_PAYLOAD_LEN
NFTNL_EXPR_PAYLOAD_OFFSET
NFTNL_EXPR_PAYLOAD_SREG
NFTNL_EXPR_QUEUE_FLAGS
NFTNL_EXPR_QUEUE_NUM
NFTNL_EXPR_QUEUE_TOTAL
NFTNL_EXPR_REDIR_FLAGS
NFTNL_EXPR_REDIR_REG_PROTO_MAX
NFTNL_EXPR_REDIR_REG_PROTO_MIN
NFTNL_EXPR_REJECT_CODE
NFTNL_EXPR_REJECT_TYPE
NFTNL_EXPR_TG_INFO
NFTNL_EXPR_TG_NAME
NFTNL_EXPR_TG_REV
NFTNL_GEN_ID
NFTNL_OF_EVENT_ANY
NFTNL_OF_EVENT_DEL
NFTNL_OF_EVENT_NEW
NFTNL_OUTPUT_DEFAULT
NFTNL_OUTPUT_JSON
NFTNL_OUTPUT_XML
NFTNL_PARSE_EBADINPUT
NFTNL_PARSE_EBADTYPE
NFTNL_PARSE_EMISSINGNODE
NFTNL_PARSE_EOPNOTSUPP
NFTNL_PARSE_JSON
NFTNL_PARSE_MAX
NFTNL_PARSE_NONE
NFTNL_PARSE_XML
NFTNL_RULESET_CHAIN
NFTNL_RULESET_CHAINLIST
NFTNL_RULESET_CTX_CHAIN
NFTNL_RULESET_CTX_CMD
NFTNL_RULESET_CTX_DATA
NFTNL_RULESET_CTX_RULE
NFTNL_RULESET_CTX_SET
NFTNL_RULESET_CTX_TABLE
NFTNL_RULESET_CTX_TYPE
NFTNL_RULESET_RULE
NFTNL_RULESET_RULELIST
NFTNL_RULESET_RULESET
NFTNL_RULESET_SET
NFTNL_RULESET_SETLIST
NFTNL_RULESET_SET_ELEMS
NFTNL_RULESET_TABLE
NFTNL_RULESET_TABLELIST
NFTNL_RULESET_UNSPEC
NFTNL_RULE_CHAIN
NFTNL_RULE_COMPAT_FLAGS
NFTNL_RULE_COMPAT_PROTO
NFTNL_RULE_FAMILY
NFTNL_RULE_HANDLE
NFTNL_RULE_POSITION
NFTNL_RULE_TABLE
NFTNL_RULE_USERDATA
NFTNL_SET_DATA_LEN
NFTNL_SET_DATA_TYPE
NFTNL_SET_DESC_SIZE
NFTNL_SET_ELEM_CHAIN
NFTNL_SET_ELEM_DATA
NFTNL_SET_ELEM_EXPIRATION
NFTNL_SET_ELEM_EXPR
NFTNL_SET_ELEM_FLAGS
NFTNL_SET_ELEM_KEY
NFTNL_SET_ELEM_TIMEOUT
NFTNL_SET_ELEM_USERDATA
NFTNL_SET_ELEM_VERDICT
NFTNL_SET_FAMILY
NFTNL_SET_FLAGS
NFTNL_SET_GC_INTERVAL
NFTNL_SET_ID
NFTNL_SET_KEY_LEN
NFTNL_SET_KEY_TYPE
NFTNL_SET_NAME
NFTNL_SET_POLICY
NFTNL_SET_TABLE
NFTNL_SET_TIMEOUT
NFTNL_TABLE_FAMILY
NFTNL_TABLE_FLAGS
NFTNL_TABLE_NAME
NFTNL_TABLE_USE
NFTNL_TRACE_CHAIN
NFTNL_TRACE_FAMILY
NFTNL_TRACE_ID
NFTNL_TRACE_IIF
NFTNL_TRACE_IIFTYPE
NFTNL_TRACE_JUMP_TARGET
NFTNL_TRACE_LL_HEADER
NFTNL_TRACE_MARK
NFTNL_TRACE_NETWORK_HEADER
NFTNL_TRACE_NFPROTO
NFTNL_TRACE_OIF
NFTNL_TRACE_OIFTYPE
NFTNL_TRACE_POLICY
NFTNL_TRACE_RULE_HANDLE
NFTNL_TRACE_TABLE
NFTNL_TRACE_TRANSPORT_HEADER
NFTNL_TRACE_TYPE
NFTNL_TRACE_VERDICT
__NFTNL_CHAIN_MAX
__NFTNL_GEN_MAX
__NFTNL_RULE_MAX
__NFTNL_SET_MAX
__NFTNL_TABLE_MAX
__NFTNL_TRACE_MAX

Functions§

nftnl_batch_alloc
nftnl_batch_begin
nftnl_batch_buffer
nftnl_batch_buffer_len
nftnl_batch_end
nftnl_batch_free
nftnl_batch_iovec
nftnl_batch_iovec_len
nftnl_batch_is_supported
nftnl_batch_update
nftnl_chain_alloc
nftnl_chain_fprintf
nftnl_chain_free
nftnl_chain_get
nftnl_chain_get_data
nftnl_chain_get_s32
nftnl_chain_get_str
nftnl_chain_get_u8
nftnl_chain_get_u32
nftnl_chain_get_u64
nftnl_chain_is_set
nftnl_chain_list_add
nftnl_chain_list_add_tail
nftnl_chain_list_alloc
nftnl_chain_list_del
nftnl_chain_list_foreach
nftnl_chain_list_free
nftnl_chain_list_is_empty
nftnl_chain_list_iter_create
nftnl_chain_list_iter_destroy
nftnl_chain_list_iter_next
nftnl_chain_nlmsg_build_payload
nftnl_chain_nlmsg_parse
nftnl_chain_parse
nftnl_chain_parse_file
nftnl_chain_set
nftnl_chain_set_data
nftnl_chain_set_s32
nftnl_chain_set_str
nftnl_chain_set_u8
nftnl_chain_set_u32
nftnl_chain_set_u64
nftnl_chain_snprintf
nftnl_chain_unset
nftnl_expr_alloc
nftnl_expr_foreach
nftnl_expr_free
nftnl_expr_get
nftnl_expr_get_str
nftnl_expr_get_u8
nftnl_expr_get_u16
nftnl_expr_get_u32
nftnl_expr_get_u64
nftnl_expr_is_set
nftnl_expr_iter_create
nftnl_expr_iter_destroy
nftnl_expr_iter_next
nftnl_expr_set
nftnl_expr_set_str
nftnl_expr_set_u8
nftnl_expr_set_u16
nftnl_expr_set_u32
nftnl_expr_set_u64
nftnl_expr_snprintf
nftnl_gen_alloc
nftnl_gen_fprintf
nftnl_gen_free
nftnl_gen_get
nftnl_gen_get_data
nftnl_gen_get_u32
nftnl_gen_is_set
nftnl_gen_nlmsg_parse
nftnl_gen_set
nftnl_gen_set_data
nftnl_gen_set_u32
nftnl_gen_snprintf
nftnl_gen_unset
nftnl_nlmsg_build_hdr
nftnl_parse_err_alloc
nftnl_parse_err_free
nftnl_parse_perror
nftnl_rule_add_expr
nftnl_rule_alloc
nftnl_rule_fprintf
nftnl_rule_free
nftnl_rule_get
nftnl_rule_get_data
nftnl_rule_get_str
nftnl_rule_get_u8
nftnl_rule_get_u32
nftnl_rule_get_u64
nftnl_rule_is_set
nftnl_rule_list_add
nftnl_rule_list_add_tail
nftnl_rule_list_alloc
nftnl_rule_list_del
nftnl_rule_list_foreach
nftnl_rule_list_free
nftnl_rule_list_is_empty
nftnl_rule_list_iter_create
nftnl_rule_list_iter_cur
nftnl_rule_list_iter_destroy
nftnl_rule_list_iter_next
nftnl_rule_nlmsg_build_payload
nftnl_rule_nlmsg_parse
nftnl_rule_parse
nftnl_rule_parse_file
nftnl_rule_set
nftnl_rule_set_data
nftnl_rule_set_str
nftnl_rule_set_u32
nftnl_rule_set_u64
nftnl_rule_snprintf
nftnl_rule_unset
nftnl_ruleset_alloc
nftnl_ruleset_ctx_free
nftnl_ruleset_ctx_get
nftnl_ruleset_ctx_get_u32
nftnl_ruleset_ctx_is_set
nftnl_ruleset_fprintf
nftnl_ruleset_free
nftnl_ruleset_get
nftnl_ruleset_is_set
nftnl_ruleset_parse
nftnl_ruleset_parse_buffer_cb
nftnl_ruleset_parse_file
nftnl_ruleset_parse_file_cb
nftnl_ruleset_set
nftnl_ruleset_snprintf
nftnl_ruleset_unset
nftnl_set_alloc
nftnl_set_clone
nftnl_set_elem_add
nftnl_set_elem_alloc
nftnl_set_elem_clone
nftnl_set_elem_foreach
nftnl_set_elem_fprintf
nftnl_set_elem_free
nftnl_set_elem_get
nftnl_set_elem_get_str
nftnl_set_elem_get_u32
nftnl_set_elem_get_u64
nftnl_set_elem_is_set
nftnl_set_elem_nlmsg_build_payload
nftnl_set_elem_parse
nftnl_set_elem_parse_file
nftnl_set_elem_set
nftnl_set_elem_set_str
nftnl_set_elem_set_u32
nftnl_set_elem_set_u64
nftnl_set_elem_snprintf
nftnl_set_elem_unset
nftnl_set_elems_iter_create
nftnl_set_elems_iter_cur
nftnl_set_elems_iter_destroy
nftnl_set_elems_iter_next
nftnl_set_elems_nlmsg_build_payload
nftnl_set_elems_nlmsg_build_payload_iter
nftnl_set_elems_nlmsg_parse
nftnl_set_fprintf
nftnl_set_free
nftnl_set_get
nftnl_set_get_data
nftnl_set_get_str
nftnl_set_get_u32
nftnl_set_get_u64
nftnl_set_is_set
nftnl_set_list_add
nftnl_set_list_add_tail
nftnl_set_list_alloc
nftnl_set_list_del
nftnl_set_list_foreach
nftnl_set_list_free
nftnl_set_list_is_empty
nftnl_set_list_iter_create
nftnl_set_list_iter_cur
nftnl_set_list_iter_destroy
nftnl_set_list_iter_next
nftnl_set_nlmsg_build_payload
nftnl_set_nlmsg_parse
nftnl_set_parse
nftnl_set_parse_file
nftnl_set_set
nftnl_set_set_data
nftnl_set_set_str
nftnl_set_set_u32
nftnl_set_set_u64
nftnl_set_snprintf
nftnl_set_unset
nftnl_table_alloc
nftnl_table_fprintf
nftnl_table_free
nftnl_table_get
nftnl_table_get_data
nftnl_table_get_str
nftnl_table_get_u8
nftnl_table_get_u32
nftnl_table_is_set
nftnl_table_list_add
nftnl_table_list_add_tail
nftnl_table_list_alloc
nftnl_table_list_del
nftnl_table_list_foreach
nftnl_table_list_free
nftnl_table_list_is_empty
nftnl_table_list_iter_create
nftnl_table_list_iter_destroy
nftnl_table_list_iter_next
nftnl_table_nlmsg_build_payload
nftnl_table_nlmsg_parse
nftnl_table_parse
nftnl_table_parse_file
nftnl_table_set
nftnl_table_set_data
nftnl_table_set_str
nftnl_table_set_u8
nftnl_table_set_u32
nftnl_table_snprintf
nftnl_table_unset
nftnl_trace_alloc
nftnl_trace_free
nftnl_trace_get_data
nftnl_trace_get_str
nftnl_trace_get_u16
nftnl_trace_get_u32
nftnl_trace_get_u64
nftnl_trace_is_set
nftnl_trace_nlmsg_parse
nftnl_udata_buf_alloc
nftnl_udata_buf_data
nftnl_udata_buf_free
nftnl_udata_buf_len
nftnl_udata_buf_put
nftnl_udata_end
nftnl_udata_get
nftnl_udata_len
nftnl_udata_next
nftnl_udata_parse
nftnl_udata_put
nftnl_udata_put_strz
nftnl_udata_start
nftnl_udata_type

Type Aliases§

nftnl_chain_attr
nftnl_cmd_type
nftnl_output_flags
nftnl_output_type
nftnl_parse_type
nftnl_rule_attr
nftnl_ruleset_type
nftnl_set_attr
nftnl_table_attr
nftnl_trace_attr
nftnl_udata_cb_t