2014-10-05 23:44:31 +02:00
|
|
|
Scriptable functions
|
|
|
|
====================
|
|
|
|
|
|
|
|
Network
|
|
|
|
-------
|
|
|
|
|
|
|
|
.. function:: ntohs(netshort)
|
|
|
|
|
|
|
|
This subroutine converts values between the host and network byte order.
|
2017-06-16 12:16:05 +02:00
|
|
|
Specifically, **ntohs()** converts 16-bit quantities from network byte order
|
|
|
|
to host byte order.
|
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
:param netshort: 16-bit short addr
|
|
|
|
:rtype: converted addr
|
2017-06-16 12:16:05 +02:00
|
|
|
|
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
Cache
|
|
|
|
-----
|
|
|
|
|
|
|
|
.. function:: storeQueryInCache(qstate, qinfo, msgrep, is_referral)
|
|
|
|
|
|
|
|
Store pending query in local cache.
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
:param qstate: :class:`module_qstate`
|
|
|
|
:param qinfo: :class:`query_info`
|
|
|
|
:param msgrep: :class:`reply_info`
|
|
|
|
:param is_referal: integer
|
|
|
|
:rtype: boolean
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
.. function:: invalidateQueryInCache(qstate, qinfo)
|
|
|
|
|
|
|
|
Invalidate record in local cache.
|
|
|
|
|
|
|
|
:param qstate: :class:`module_qstate`
|
|
|
|
:param qinfo: :class:`query_info`
|
|
|
|
|
|
|
|
|
2017-06-16 12:16:05 +02:00
|
|
|
EDNS options
|
|
|
|
------------
|
|
|
|
|
|
|
|
.. function:: register_edns_option(env, code, bypass_cache_stage=False, no_aggregation=False)
|
|
|
|
|
|
|
|
Register EDNS option code.
|
|
|
|
|
|
|
|
:param env: :class:`module_env`
|
|
|
|
:param code: option code(integer)
|
|
|
|
:param bypass_cache_stage: whether to bypass the cache response stage
|
|
|
|
:param no_aggregation: whether this query should be unique
|
|
|
|
:return: ``1`` if successful, ``0`` otherwise
|
|
|
|
:rtype: integer
|
|
|
|
|
|
|
|
.. function:: edns_opt_list_find(list, code)
|
|
|
|
|
|
|
|
Find the EDNS option code in the EDNS option list.
|
|
|
|
|
|
|
|
:param list: linked list of :class:`edns_option`
|
|
|
|
:param code: option code (integer)
|
|
|
|
:return: the edns option if found or None
|
|
|
|
:rtype: :class:`edns_option` or None
|
|
|
|
|
|
|
|
.. function:: edns_opt_list_remove(list, code);
|
|
|
|
|
|
|
|
Remove an ENDS option code from the list.
|
|
|
|
.. note:: All :class:`edns_option` with the code will be removed
|
|
|
|
|
|
|
|
:param list: linked list of :class:`edns_option`
|
|
|
|
:param code: option code (integer)
|
|
|
|
:return: ``1`` if at least one :class:`edns_option` was removed, ``0`` otherwise
|
|
|
|
:rtype: integer
|
|
|
|
|
|
|
|
.. function:: edns_opt_list_append(list, code, data, region)
|
|
|
|
|
|
|
|
Append given EDNS option code with data to the list.
|
|
|
|
|
|
|
|
:param list: linked list of :class:`edns_option`
|
|
|
|
:param code: option code (integer)
|
|
|
|
:param data: EDNS data. **Must** be a :class:`bytearray`
|
|
|
|
:param region: :class:`regional`
|
|
|
|
|
|
|
|
.. function:: edns_opt_list_is_empty(list)
|
|
|
|
|
|
|
|
Check if an EDNS option list is empty.
|
|
|
|
|
|
|
|
:param list: linked list of :class:`edns_option`
|
|
|
|
:return: ``1`` if list is empty, ``0`` otherwise
|
|
|
|
:rtype: integer
|
|
|
|
|
|
|
|
|
|
|
|
Inplace callbacks
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
.. function:: inplace_cb_reply(qinfo, qstate, rep, rcode, edns, opt_list_out, region)
|
|
|
|
|
|
|
|
Function prototype for callback functions used in
|
|
|
|
`register_inplace_cb_reply`_, `register_inplace_cb_reply_cache`_,
|
|
|
|
`register_inplace_cb_reply_local` and `register_inplace_cb_reply_servfail`.
|
|
|
|
|
|
|
|
:param qinfo: :class:`query_info`
|
|
|
|
:param qstate: :class:`module_qstate`
|
|
|
|
:param rep: :class:`reply_info`
|
|
|
|
:param rcode: return code (integer), check ``RCODE_`` constants.
|
|
|
|
:param edns: :class:`edns_data`
|
|
|
|
:param opt_list_out: :class:`edns_option`. EDNS option list to append options to.
|
|
|
|
:param region: :class:`regional`
|
|
|
|
|
|
|
|
.. function:: register_inplace_cb_reply(py_cb, env)
|
|
|
|
|
|
|
|
Register py_cb as an inplace reply callback function.
|
|
|
|
|
|
|
|
:param py_cb: Python function that follows `inplace_cb_reply`_'s prototype. **Must** be callable.
|
|
|
|
:param env: :class:`module_env`
|
|
|
|
:return: True on success, False otherwise
|
|
|
|
:rtype: boolean
|
|
|
|
|
|
|
|
.. function:: register_inplace_cb_reply_cache(py_cb, env)
|
|
|
|
|
|
|
|
Register py_cb as an inplace reply_cache callback function.
|
|
|
|
|
|
|
|
:param py_cb: Python function that follows `inplace_cb_reply`_'s prototype. **Must** be callable.
|
|
|
|
:param env: :class:`module_env`
|
|
|
|
:return: True on success, False otherwise
|
|
|
|
:rtype: boolean
|
|
|
|
|
|
|
|
.. function:: register_inplace_cb_reply_local(py_cb, env)
|
|
|
|
|
|
|
|
Register py_cb as an inplace reply_local callback function.
|
|
|
|
|
|
|
|
:param py_cb: Python function that follows `inplace_cb_reply`_'s prototype. **Must** be callable.
|
|
|
|
:param env: :class:`module_env`
|
|
|
|
:return: True on success, False otherwise
|
|
|
|
:rtype: boolean
|
|
|
|
|
|
|
|
.. function:: register_inplace_cb_reply_servfail(py_cb, env)
|
|
|
|
|
|
|
|
Register py_cb as an inplace reply_servfail callback function.
|
|
|
|
|
|
|
|
:param py_cb: Python function that follows `inplace_cb_reply`_'s prototype. **Must** be callable.
|
|
|
|
:param env: :class:`module_env`
|
|
|
|
:return: True on success, False otherwise
|
|
|
|
:rtype: boolean
|
|
|
|
|
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
Logging
|
|
|
|
-------
|
|
|
|
|
|
|
|
.. function:: verbose(level, msg)
|
|
|
|
|
|
|
|
Log a verbose message, pass the level for this message.
|
|
|
|
No trailing newline is needed.
|
|
|
|
|
|
|
|
:param level: verbosity level for this message, compared to global verbosity setting.
|
|
|
|
:param msg: string message
|
|
|
|
|
|
|
|
.. function:: log_info(msg)
|
|
|
|
|
|
|
|
Log informational message. No trailing newline is needed.
|
|
|
|
|
|
|
|
:param msg: string message
|
|
|
|
|
|
|
|
.. function:: log_err(msg)
|
|
|
|
|
|
|
|
Log error message. No trailing newline is needed.
|
|
|
|
|
|
|
|
:param msg: string message
|
|
|
|
|
|
|
|
.. function:: log_warn(msg)
|
|
|
|
|
|
|
|
Log warning message. No trailing newline is needed.
|
|
|
|
|
|
|
|
:param msg: string message
|
|
|
|
|
|
|
|
.. function:: log_hex(msg, data, length)
|
|
|
|
|
|
|
|
Log a hex-string to the log. Can be any length.
|
|
|
|
performs mallocs to do so, slow. But debug useful.
|
|
|
|
|
|
|
|
:param msg: string desc to accompany the hexdump.
|
|
|
|
:param data: data to dump in hex format.
|
|
|
|
:param length: length of data.
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
.. function:: log_dns_msg(str, qinfo, reply)
|
|
|
|
|
|
|
|
Log DNS message.
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
:param str: string message
|
|
|
|
:param qinfo: :class:`query_info`
|
|
|
|
:param reply: :class:`reply_info`
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
.. function:: log_query_info(verbosity_value, str, qinf)
|
|
|
|
|
|
|
|
Log query information.
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
:param verbosity_value: see constants
|
|
|
|
:param str: string message
|
|
|
|
:param qinf: :class:`query_info`
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
.. function:: regional_log_stats(r)
|
|
|
|
|
|
|
|
Log regional statistics.
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
:param r: :class:`regional`
|
|
|
|
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
Debugging
|
|
|
|
---------
|
|
|
|
|
|
|
|
.. function:: strextstate(module_ext_state)
|
|
|
|
|
|
|
|
Debug utility, module external qstate to string.
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
:param module_ext_state: the state value.
|
|
|
|
:rtype: descriptive string.
|
|
|
|
|
|
|
|
.. function:: strmodulevent(module_event)
|
|
|
|
|
|
|
|
Debug utility, module event to string.
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
:param module_event: the module event value.
|
|
|
|
:rtype: descriptive string.
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
.. function:: ldns_rr_type2str(atype)
|
|
|
|
|
|
|
|
Convert RR type to string.
|
2017-06-16 12:16:05 +02:00
|
|
|
|
2014-10-05 23:44:31 +02:00
|
|
|
.. function:: ldns_rr_class2str(aclass)
|
|
|
|
|
|
|
|
Convert RR class to string.
|