Lua FFI API¶
PowerDNS Recursor provides a set of functions available through the LUA FFI library that allow you to interact with handle passed to gettag_ffi() and postresolve_ffi().
Functions for gettag_ffi()¶
-
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_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_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_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¶
Added in version 4.6.0.
This function allows you to add an arbitrary string value for a given key in the
metafield 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¶
Added in version 4.6.0.
This function allows you to add an arbitrary int value for a given key in the
metafield of the produced protobuf log message
Functions for postresolve_ffi()¶
Added in version 4.7.0.
All functions below were added in version 4.7.0.
-
pdns_postresolve_ffi_handle_get_qname(pdns_postresolve_ffi_handle_t *ref) -> const char*¶
Get the name queried as a string.
-
pdns_postresolve_ffi_handle_get_qname_raw(pdns_postresolve_ffi_handle_t *ref, const char **qname, size_t *qnameSize) -> void¶
Get the name queried (and its size) in DNS wire format.
-
pdns_postresolve_ffi_handle_get_qtype(const pdns_postresolve_ffi_handle_t *ref) -> uint16¶
Get the qtype of the query.
-
pdns_postresolve_ffi_handle_get_rcode(const pdns_postresolve_ffi_handle_t *ref) -> uint16¶
Get the rcode returned by the resolving process.
-
pdns_postresolve_ffi_handle_set_rcode(const pdns_postresolve_ffi_handle_t *ref, uint16_t rcode) -> void¶
Set the rcode to be returned.
-
pdns_postresolve_ffi_handle_get_appliedpolicy_kind(const pdns_postresolve_ffi_handle_t *ref) -> pdns_policy_kind_t¶
Get the applied policy.
-
pdns_postresolve_ffi_handle_set_appliedpolicy_kind(pdns_postresolve_ffi_handle_t *ref, pdns_policy_kind_t kind) -> void¶
Set the applied policy.
-
pdns_postresolve_ffi_handle_get_record(pdns_postresolve_ffi_handle_t *ref, unsigned int i, pdns_ffi_record_t *record, bool raw) -> bool¶
Get a record indexed by i. Returns false if no record is available at index i.
-
pdns_postresolve_ffi_handle_set_record(pdns_postresolve_ffi_handle_t *ref, unsigned int i, const char *content, size_t contentLen, bool raw) -> bool¶
Set the record at index i.
-
pdns_postresolve_ffi_handle_clear_records(pdns_postresolve_ffi_handle_t *ref) -> void¶
Clear all records.
-
pdns_postresolve_ffi_handle_add_record(pdns_postresolve_ffi_handle_t *ref, const char *name, uint16_t type, uint32_t ttl, const char *content, size_t contentLen, pdns_record_place_t place, bool raw) -> bool¶
Add a record to the existing records.
-
pdns_postresolve_ffi_handle_get_authip(pdns_postresolve_ffi_handle_t *ref) -> const char*¶
Get a string representation of the IP address of the authoritative server that answered the query. The string might by empty if the address is not available.
-
pdns_postresolve_ffi_handle_get_authip_raw(pdns_postresolve_ffi_handle_t *ref, const void **addr, size_t *addrSize) -> void¶
Get the raw IP address (in network byte order) and size of the raw IP address of the authoritative server that answered the query. The string might be empty if the address is not available.