Lua FFI API

We provide a set of functions available through the LUA FFI library that allow you to interact with the the gettag_ffi() parameter.

Functions

pdns_ffi_param_get_qname(pdns_ffi_param_t* ref) → const char*

Get the query’s qualified name

pdns_ffi_param_get_qtype(const pdns_ffi_param_t* ref) → uint16_t

Get the query’s type

pdns_ffi_param_get_remote(pdns_ffi_param_t* ref) → const char*

Get the sender’s IP address

pdns_ffi_param_get_remote_port(const pdns_ffi_param_t* ref) → uint16_t

Get the sender’s port

pdns_ffi_param_get_local(pdns_ffi_param_t* ref) → const char*

Get the local IP address the query was received on

pdns_ffi_param_get_local_port(const pdns_ffi_param_t* ref) → uint16_t

Get the local port the query was received on

pdns_ffi_param_get_edns_cs(pdns_ffi_param_t* ref) → const char*

Get query’s EDNS client subnet

pdns_ffi_param_get_edns_cs_source_mask(const pdns_ffi_param_t* ref) → uint8_t

Get query’s EDNS client subnet mask

pdns_ffi_param_get_edns_options(pdns_ffi_param_t* ref, const pdns_ednsoption_t** out) → size_t

Get query’s EDNS options. Returns the length of the resulting out array

pdns_ffi_param_get_edns_options_by_code(pdns_ffi_param_t* ref, uint16_t optionCode, const pdns_ednsoption_t** out) → size_t

Get query’s EDNS option for a given code. Returns the length of the resulting out array

pdns_ffi_param_get_proxy_protocol_values(pdns_ffi_param_t* ref, const pdns_proxyprotocol_value_t** out) → size_t

Get query’s proxy protocol values. Returns the length of the resulting out array

pdns_ffi_param_get_edns_cs_raw(pdns_ffi_param_t* ref, const void** net, size_t* netSize) → void

Fill out net with query’s EDNS client subnet

pdns_ffi_param_get_remote_raw(pdns_ffi_param_t* ref, const void** addr, size_t* addrSize) → void

Fill out addr with sender’s IP address

pdns_ffi_param_get_qname_raw(pdns_ffi_param_t* ref, const char** qname, size_t* qnameSize) → void

Fill out qname with query’s qualified name

pdns_ffi_param_get_local_raw(pdns_ffi_param_t* ref, const void** addr, size_t* addrSize) → void

Fill out addr with local IP address the query was received on

pdns_ffi_param_set_tag(pdns_ffi_param_t* ref, unsigned int tag) → void

Tag the query with the given number

pdns_ffi_param_add_policytag(pdns_ffi_param_t* ref, const char* name) → void

Add the given tag to the query

pdns_ffi_param_set_requestorid(pdns_ffi_param_t* ref, const char* name) → void

Set query’s requestor ID

pdns_ffi_param_set_devicename(pdns_ffi_param_t* ref, const char* name) → void

Set query’s device name

pdns_ffi_param_set_deviceid(pdns_ffi_param_t* ref, size_t len, const void* name) → void

Set query’s device ID

pdns_ffi_param_set_routingtag(pdns_ffi_param_t* ref, const char* name) → void

Set routing tag which is used as an extra name to identify records in the record cache, see gettag()

pdns_ffi_param_set_variable(pdns_ffi_param_t* ref, bool variable) → void

Mark as variable and ensure it’s not inserted into the packetcache

pdns_ffi_param_set_ttl_cap(pdns_ffi_param_t* ref, uint32_t ttl) → void

Cap the max TTL of the returned records

pdns_ffi_param_set_log_query(pdns_ffi_param_t* ref, bool logQuery) → void

Turn on/off query logging

pdns_ffi_param_set_log_response(pdns_ffi_param_t* ref, bool logResponse) → void

Turn on/off response logging

pdns_ffi_param_set_rcode(pdns_ffi_param_t* ref, int rcode) → void

Set response RCode

pdns_ffi_param_set_follow_cname_records(pdns_ffi_param_t* ref, bool follow) → void

Instruct the recursor to do a proper resolution in order to follow any CNAME records added

pdns_ffi_param_set_extended_error_code(pdns_ffi_param_t* ref, uint16_t code) → void

Set extended DNS error info code

pdns_ffi_param_set_extended_error_extra(pdns_ffi_param_t* ref, size_t len, const char* extra) → void

Set extended DNS error extra text

pdns_ffi_param_set_padding_disabled(pdns_ffi_param_t* ref, bool disabled) → void

Disable padding

pdns_ffi_param_add_record(pdns_ffi_param_t* ref, const char* name, uint16_t type, uint32_t ttl, const char* content, size_t contentSize, pdns_record_place_t place) → bool

Adds a record. Returns true if it was correctly added, false otherwise

pdns_ffi_param_add_meta_single_string_kv(pdns_ffi_param_t* ref, const char* key, const char* val) → void

New in version 4.6.0.

This function allows you to add an arbitrary string value for a given key in the meta field of the produced protobuf log message

pdns_ffi_param_add_meta_single_int64_kv(pdns_ffi_param_t *ref, const char* key, int64_t val) → void

New in version 4.6.0.

This function allows you to add an arbitrary int value for a given key in the meta field of the produced protobuf log message