|
unbound
0.1
|
#include "config.h"#include "testcode/fake_event.h"#include "util/netevent.h"#include "util/net_help.h"#include "util/data/msgparse.h"#include "util/data/msgreply.h"#include "util/data/msgencode.h"#include "util/data/dname.h"#include "util/config_file.h"#include "services/listen_dnsport.h"#include "services/outside_network.h"#include "services/cache/infra.h"#include "testcode/replay.h"#include "testcode/testpkts.h"#include "util/log.h"#include "util/fptr_wlist.h"#include "sldns/sbuffer.h"#include "sldns/wire2str.h"#include "sldns/str2wire.h"#include <signal.h>Data Structures | |
| struct | fake_commpoint |
| fake commpoint, stores information More... | |
Macros | |
| #define | FAKE_COMMPOINT_TYPECODE 97347923 |
| unique code to check that fake_commpoint is that structure | |
Functions | |
| static void | timeval_add (struct timeval *d, const struct timeval *add) |
| add timers and the values do not overflow or become negative | |
| void | fake_temp_file (const char *adj, const char *id, char *buf, size_t len) |
| Get filename to store temporary config stuff. More... | |
| void | fake_event_init (struct replay_scenario *scen) |
| Initialise fake event services. More... | |
| void | fake_event_cleanup (void) |
| Deinit fake event services. | |
| static void | log_pkt (const char *desc, uint8_t *pkt, size_t len) |
| helper function that logs a sldns_pkt packet to logfile | |
| static const char * | repevt_string (enum replay_event_type t) |
| Returns a string describing the event type. | |
| static void | delete_fake_pending (struct fake_pending *pend) |
| delete a fake pending | |
| static void | delete_replay_answer (struct replay_answer *a) |
| delete a replay answer | |
| static int | pending_matches_current (struct replay_runtime *runtime, struct entry **entry, struct fake_pending **pend) |
| return: true if pending query matches the now event. | |
| static int | pending_find_match (struct replay_runtime *runtime, struct entry **entry, struct fake_pending *pend) |
| Find the range that matches this pending message. More... | |
| static int | pending_matches_range (struct replay_runtime *runtime, struct entry **entry, struct fake_pending **pend) |
| See if outgoing pending query matches an entry. More... | |
| static void | pending_list_delete (struct replay_runtime *runtime, struct fake_pending *pend) |
| Remove the item from the pending list. | |
| static int | count_reply_packets (struct entry *entry) |
| number of replies in entry | |
| static void | fill_buffer_with_reply (sldns_buffer *buffer, struct entry *entry, uint8_t *q, size_t qlen, int tcp_pkt_counter) |
| Fill buffer with reply from the entry. | |
| static void | answer_callback_from_entry (struct replay_runtime *runtime, struct entry *entry, struct fake_pending *pend) |
| Perform range entry on pending message. More... | |
| static void | answer_check_it (struct replay_runtime *runtime) |
| Check the now moment answer check event. | |
| static void | fake_front_query (struct replay_runtime *runtime, struct replay_moment *todo) |
| Create commpoint (as return address) for a fake incoming query. | |
| static void | fake_pending_callback (struct replay_runtime *runtime, struct replay_moment *todo, int error) |
| Perform callback for fake pending message. | |
| static void | moment_assign (struct replay_runtime *runtime, struct replay_moment *mom) |
| pass time | |
| static void | time_passes (struct replay_runtime *runtime, struct replay_moment *mom) |
| pass time | |
| static void | autotrust_check (struct replay_runtime *runtime, struct replay_moment *mom) |
| check autotrust file contents | |
| static void | tempfile_check (struct replay_runtime *runtime, struct replay_moment *mom) |
| check tempfile file contents | |
| static void | do_infra_rtt (struct replay_runtime *runtime) |
| Store RTT in infra cache. | |
| static void | expon_timeout_backoff (struct replay_runtime *runtime) |
| perform exponential backoff on the timeout | |
| static void | advance_moment (struct replay_runtime *runtime) |
| Advance to the next moment. | |
| static void | do_moment_and_advance (struct replay_runtime *runtime) |
| Perform actions or checks determined by the moment. More... | |
| static void | run_scenario (struct replay_runtime *runtime) |
| run the scenario in event callbacks | |
| struct listen_dnsport * | listen_create (struct comm_base *base, struct listen_port *ATTR_UNUSED(ports), size_t bufsize, int ATTR_UNUSED(tcp_accept_count), int ATTR_UNUSED(tcp_idle_timeout), struct tcl_list *ATTR_UNUSED(tcp_conn_limit), void *ATTR_UNUSED(sslctx), struct dt_env *ATTR_UNUSED(dtenv), comm_point_callback_type *cb, void *cb_arg) |
| void | listen_delete (struct listen_dnsport *listen) |
| delete the listening structure More... | |
| struct comm_base * | comm_base_create (int ATTR_UNUSED(sigs)) |
| void | comm_base_delete (struct comm_base *b) |
| Destroy a comm base. More... | |
| void | comm_base_timept (struct comm_base *b, time_t **tt, struct timeval **tv) |
| Obtain two pointers. More... | |
| void | comm_base_dispatch (struct comm_base *b) |
| Dispatch the comm base events. More... | |
| void | comm_base_exit (struct comm_base *b) |
| Exit from dispatch loop. More... | |
| struct comm_signal * | comm_signal_create (struct comm_base *base, void(*callback)(int, void *), void *cb_arg) |
| Create a signal handler. More... | |
| int | comm_signal_bind (struct comm_signal *ATTR_UNUSED(comsig), int ATTR_UNUSED(sig)) |
| void | comm_signal_delete (struct comm_signal *comsig) |
| Delete the signal communication point. More... | |
| void | comm_point_send_reply (struct comm_reply *repinfo) |
| Send reply. More... | |
| void | comm_point_drop_reply (struct comm_reply *repinfo) |
| Drop reply. More... | |
| struct outside_network * | outside_network_create (struct comm_base *base, size_t bufsize, size_t ATTR_UNUSED(num_ports), char **ATTR_UNUSED(ifs), int ATTR_UNUSED(num_ifs), int ATTR_UNUSED(do_ip4), int ATTR_UNUSED(do_ip6), size_t ATTR_UNUSED(num_tcp), int ATTR_UNUSED(dscp), struct infra_cache *infra, struct ub_randstate *ATTR_UNUSED(rnd), int ATTR_UNUSED(use_caps_for_id), int *ATTR_UNUSED(availports), int ATTR_UNUSED(numavailports), size_t ATTR_UNUSED(unwanted_threshold), int ATTR_UNUSED(outgoing_tcp_mss), void(*unwanted_action)(void *), void *ATTR_UNUSED(unwanted_param), int ATTR_UNUSED(do_udp), void *ATTR_UNUSED(sslctx), int ATTR_UNUSED(delayclose), int ATTR_UNUSED(tls_use_sni), struct dt_env *ATTR_UNUSED(dtenv)) |
| void | outside_network_delete (struct outside_network *outnet) |
| Delete outside_network structure. More... | |
| void | outside_network_quit_prepare (struct outside_network *ATTR_UNUSED(outnet)) |
| struct pending * | pending_udp_query (struct serviced_query *sq, sldns_buffer *packet, int timeout, comm_point_callback_type *callback, void *callback_arg) |
| Send UDP query, create pending answer. More... | |
| struct waiting_tcp * | pending_tcp_query (struct serviced_query *sq, sldns_buffer *packet, int timeout, comm_point_callback_type *callback, void *callback_arg) |
| Send TCP query. More... | |
| struct serviced_query * | outnet_serviced_query (struct outside_network *outnet, struct query_info *qinfo, uint16_t flags, int dnssec, int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), char *ATTR_UNUSED(tls_auth_name), struct sockaddr_storage *addr, socklen_t addrlen, uint8_t *zone, size_t zonelen, struct module_qstate *qstate, comm_point_callback_type *callback, void *callback_arg, sldns_buffer *ATTR_UNUSED(buff), struct module_env *ATTR_UNUSED(env)) |
| void | outnet_serviced_query_stop (struct serviced_query *sq, void *cb_arg) |
| Remove service query callback. More... | |
| struct listen_port * | listening_ports_open (struct config_file *ATTR_UNUSED(cfg), int *ATTR_UNUSED(reuseport)) |
| void | listening_ports_free (struct listen_port *list) |
| Close and delete the (list of) listening ports. | |
| struct comm_point * | comm_point_create_local (struct comm_base *ATTR_UNUSED(base), int ATTR_UNUSED(fd), size_t ATTR_UNUSED(bufsize), comm_point_callback_type *ATTR_UNUSED(callback), void *ATTR_UNUSED(callback_arg)) |
| struct comm_point * | comm_point_create_raw (struct comm_base *ATTR_UNUSED(base), int ATTR_UNUSED(fd), int ATTR_UNUSED(writing), comm_point_callback_type *ATTR_UNUSED(callback), void *ATTR_UNUSED(callback_arg)) |
| void | comm_point_start_listening (struct comm_point *ATTR_UNUSED(c), int ATTR_UNUSED(newfd), int ATTR_UNUSED(sec)) |
| void | comm_point_stop_listening (struct comm_point *ATTR_UNUSED(c)) |
| void | comm_point_delete (struct comm_point *c) |
| Close and deallocate (free) the comm point. More... | |
| size_t | listen_get_mem (struct listen_dnsport *ATTR_UNUSED(listen)) |
| size_t | outnet_get_mem (struct outside_network *ATTR_UNUSED(outnet)) |
| size_t | comm_point_get_mem (struct comm_point *ATTR_UNUSED(c)) |
| size_t | serviced_get_mem (struct serviced_query *ATTR_UNUSED(c)) |
| int | outnet_udp_cb (struct comm_point *ATTR_UNUSED(c), void *ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply *ATTR_UNUSED(reply_info)) |
| int | outnet_tcp_cb (struct comm_point *ATTR_UNUSED(c), void *ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply *ATTR_UNUSED(reply_info)) |
| void | pending_udp_timer_cb (void *ATTR_UNUSED(arg)) |
| void | pending_udp_timer_delay_cb (void *ATTR_UNUSED(arg)) |
| void | outnet_tcptimer (void *ATTR_UNUSED(arg)) |
| void | comm_point_udp_callback (int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void *ATTR_UNUSED(arg)) |
| void | comm_point_udp_ancil_callback (int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void *ATTR_UNUSED(arg)) |
| void | comm_point_tcp_accept_callback (int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void *ATTR_UNUSED(arg)) |
| void | comm_point_tcp_handle_callback (int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void *ATTR_UNUSED(arg)) |
| void | comm_timer_callback (int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void *ATTR_UNUSED(arg)) |
| void | comm_signal_callback (int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void *ATTR_UNUSED(arg)) |
| void | comm_point_http_handle_callback (int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void *ATTR_UNUSED(arg)) |
| void | comm_point_local_handle_callback (int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void *ATTR_UNUSED(arg)) |
| void | comm_point_raw_handle_callback (int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void *ATTR_UNUSED(arg)) |
| void | comm_base_handle_slow_accept (int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void *ATTR_UNUSED(arg)) |
| int | serviced_udp_callback (struct comm_point *ATTR_UNUSED(c), void *ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply *ATTR_UNUSED(reply_info)) |
| int | serviced_tcp_callback (struct comm_point *ATTR_UNUSED(c), void *ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply *ATTR_UNUSED(reply_info)) |
| int | pending_cmp (const void *ATTR_UNUSED(a), const void *ATTR_UNUSED(b)) |
| int | serviced_cmp (const void *ATTR_UNUSED(a), const void *ATTR_UNUSED(b)) |
| struct comm_timer * | comm_timer_create (struct comm_base *base, void(*cb)(void *), void *cb_arg) |
| create timer. More... | |
| void | comm_timer_disable (struct comm_timer *timer) |
| disable timer. More... | |
| void | comm_timer_set (struct comm_timer *timer, struct timeval *tv) |
| reset timevalue for timer. More... | |
| void | comm_timer_delete (struct comm_timer *timer) |
| delete timer. More... | |
| void | comm_base_set_slow_accept_handlers (struct comm_base *ATTR_UNUSED(b), void(*stop_acc)(void *), void(*start_acc)(void *), void *ATTR_UNUSED(arg)) |
| struct ub_event_base * | comm_base_internal (struct comm_base *ATTR_UNUSED(b)) |
| void | daemon_remote_exec (struct worker *ATTR_UNUSED(worker)) |
| void | listen_start_accept (struct listen_dnsport *ATTR_UNUSED(listen)) |
| void | listen_stop_accept (struct listen_dnsport *ATTR_UNUSED(listen)) |
| void | daemon_remote_start_accept (struct daemon_remote *ATTR_UNUSED(rc)) |
| void | daemon_remote_stop_accept (struct daemon_remote *ATTR_UNUSED(rc)) |
| int | create_udp_sock (int ATTR_UNUSED(family), int ATTR_UNUSED(socktype), struct sockaddr *ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), int ATTR_UNUSED(v6only), int *ATTR_UNUSED(inuse), int *ATTR_UNUSED(noproto), int ATTR_UNUSED(rcv), int ATTR_UNUSED(snd), int ATTR_UNUSED(listen), int *ATTR_UNUSED(reuseport), int ATTR_UNUSED(transparent), int ATTR_UNUSED(freebind), int ATTR_UNUSED(use_systemd), int ATTR_UNUSED(dscp)) |
| struct comm_point * | comm_point_create_udp (struct comm_base *ATTR_UNUSED(base), int ATTR_UNUSED(fd), sldns_buffer *ATTR_UNUSED(buffer), comm_point_callback_type *ATTR_UNUSED(callback), void *ATTR_UNUSED(callback_arg)) |
| struct comm_point * | comm_point_create_tcp_out (struct comm_base *ATTR_UNUSED(base), size_t ATTR_UNUSED(bufsize), comm_point_callback_type *ATTR_UNUSED(callback), void *ATTR_UNUSED(callback_arg)) |
| struct comm_point * | outnet_comm_point_for_udp (struct outside_network *outnet, comm_point_callback_type *cb, void *cb_arg, struct sockaddr_storage *ATTR_UNUSED(to_addr), socklen_t ATTR_UNUSED(to_addrlen)) |
| struct comm_point * | outnet_comm_point_for_tcp (struct outside_network *outnet, comm_point_callback_type *cb, void *cb_arg, struct sockaddr_storage *to_addr, socklen_t to_addrlen, struct sldns_buffer *query, int timeout, int ATTR_UNUSED(ssl), char *ATTR_UNUSED(host)) |
| struct comm_point * | outnet_comm_point_for_http (struct outside_network *outnet, comm_point_callback_type *cb, void *cb_arg, struct sockaddr_storage *to_addr, socklen_t to_addrlen, int timeout, int ssl, char *host, char *path) |
| Create http commpoint suitable for communication to the destination. More... | |
| int | comm_point_send_udp_msg (struct comm_point *c, sldns_buffer *packet, struct sockaddr *addr, socklen_t addrlen) |
| Send an udp message over a commpoint. More... | |
| int | outnet_get_tcp_fd (struct sockaddr_storage *ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), int ATTR_UNUSED(tcp_mss), int ATTR_UNUSED(dscp)) |
| int | outnet_tcp_connect (int ATTR_UNUSED(s), struct sockaddr_storage *ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen)) |
| int | tcp_req_info_add_meshstate (struct tcp_req_info *ATTR_UNUSED(req), struct mesh_area *ATTR_UNUSED(mesh), struct mesh_state *ATTR_UNUSED(m)) |
| void | tcp_req_info_remove_mesh_state (struct tcp_req_info *ATTR_UNUSED(req), struct mesh_state *ATTR_UNUSED(m)) |
| size_t | tcp_req_info_get_stream_buffer_size (void) |
| get the size of currently used tcp stream wait buffers (in bytes) | |
Variables | |
| static struct replay_scenario * | saved_scenario = NULL |
| Global variable: the scenario. More... | |
Event service that replays a scenario. This implements the same exported symbols as the files: util/netevent.c services/listen_dnsport.c services/outside_network.c But these do not actually access the network or events, instead the scenario is played.
| void fake_temp_file | ( | const char * | adj, |
| const char * | id, | ||
| char * | buf, | ||
| size_t | len | ||
| ) |
Get filename to store temporary config stuff.
The pid is added. in /tmp.
| adj | adjective, like "_cfg_", "_auto_" |
| id | identifier, like "example.com". |
| buf | where to store. |
| len | length of buf. |
Referenced by autotrust_check(), setup_config(), and tempfile_check().
| void fake_event_init | ( | struct replay_scenario * | scen | ) |
Initialise fake event services.
The fake event services will automatically start when the main program calls netevent.h functions, such as comm_base_dispatch().
| scen | Set the scenario to use for upcoming event handling. |
References saved_scenario.
|
static |
Find the range that matches this pending message.
| runtime | runtime with current moment, and range list. |
| entry | returns the pointer to entry that matches. |
| pend | the pending that the entry must match. |
References replay_range::addr, fake_pending::addr, replay_range::addrlen, fake_pending::addrlen, replay_range::end_step, find_match(), log_addr(), log_info(), log_pkt(), replay_range::match, replay_range::next_range, replay_runtime::now, fake_pending::pkt, replay_scenario::range_list, replay_runtime::scenario, sockaddr_cmp(), replay_range::start_step, replay_moment::time_step, and fake_pending::transport.
Referenced by pending_matches_range().
|
static |
See if outgoing pending query matches an entry.
| runtime | runtime. |
| entry | if true, the entry that matches is returned. |
| pend | if true, the outgoing message that matches is returned. |
References fake_pending::next, pending_find_match(), replay_runtime::pending_list, fake_pending::runtime, and fake_pending::tcp_pkt_counter.
Referenced by run_scenario().
|
static |
Perform range entry on pending message.
| runtime | runtime buffer size preference. |
| entry | entry that codes for the reply to do. |
| pend | pending query that is answered, callback called. |
References comm_point::buffer, replay_runtime::bufsize, comm_reply::c, fake_pending::callback, fake_pending::cb_arg, comm_point::fd, sldns_buffer_new(), fake_pending::transport, and comm_point::type.
Referenced by run_scenario().
|
static |
Perform actions or checks determined by the moment.
Also advances the time by one step.
| runtime | scenario runtime information. |
References advance_moment(), replay_runtime::answer_list, replay_moment::evt_type, fake_front_query(), log_err(), log_info(), replay_runtime::now, replay_moment::repevt_front_query, replay_moment::repevt_front_reply, replay_moment::repevt_nothing, repevt_string(), and replay_moment::time_step.
Referenced by run_scenario().
| void listen_delete | ( | struct listen_dnsport * | listen | ) |
delete the listening structure
| listen | listening structure. |
References listen_dnsport::cps, listen_list_delete(), sldns_buffer_free(), stream_wait_count_lock, stream_wait_lock_inited, and listen_dnsport::udp_buff.
| void comm_base_delete | ( | struct comm_base * | b | ) |
Destroy a comm base.
All comm points must have been deleted.
| b | the base to delete. |
Referenced by libworker_delete().
| void comm_base_timept | ( | struct comm_base * | b, |
| time_t ** | tt, | ||
| struct timeval ** | tv | ||
| ) |
Obtain two pointers.
The pointers never change (until base_delete()). The pointers point to time values that are updated regularly.
| b | the communication base that will update the time values. |
| tt | pointer to time in seconds is returned. |
| tv | pointer to time in microseconds is returned. |
Referenced by outside_network_create(), and ub_comm_base_now().
| void comm_base_dispatch | ( | struct comm_base * | b | ) |
Dispatch the comm base events.
| b | the communication to perform. |
Referenced by libworker_dobg(), and worker_work().
| void comm_base_exit | ( | struct comm_base * | b | ) |
Exit from dispatch loop.
| b | the communication base that is in dispatch(). |
Referenced by do_reload(), do_stop(), libworker_do_cmd(), libworker_fg_done_cb(), and worker_sighandler().
| struct comm_signal* comm_signal_create | ( | struct comm_base * | base, |
| void(*)(int, void *) | callback, | ||
| void * | cb_arg | ||
| ) |
Create a signal handler.
Call signal_bind() later to bind to a signal.
| base | communication base to use. |
| callback | called when signal is caught. |
| cb_arg | user argument to callback |
| void comm_signal_delete | ( | struct comm_signal * | comsig | ) |
| void comm_point_send_reply | ( | struct comm_reply * | repinfo | ) |
Send reply.
Put message into commpoint buffer.
| repinfo | The reply info copied from a commpoint callback call. |
Referenced by reply_and_prefetch().
| void comm_point_drop_reply | ( | struct comm_reply * | repinfo | ) |
Drop reply.
Cleans up.
| repinfo | The reply info copied from a commpoint callback call. |
Referenced by dnsc_handle_curved_request(), mesh_new_client(), mesh_state_cleanup(), tcp_req_info_handle_writedone(), and worker_handle_request().
| void outside_network_delete | ( | struct outside_network * | outnet | ) |
Delete outside_network structure.
| outnet | object to delete. |
References port_if::avail_ports, pending_tcp::c, comm_point_delete(), port_comm::cp, port_if::inuse, outside_network::ip4_ifs, outside_network::ip6_ifs, port_comm::next, pending::next_waiting, waiting_tcp::next_waiting, outside_network::num_ip4, outside_network::num_ip6, outside_network::num_tcp, port_if::out, pending::outnet, waiting_tcp::outnet, outside_network::pending, pending_delete(), pending_node_del(), pending_tcp::query, outside_network::serviced, serviced_node_del(), sldns_buffer_free(), outside_network::tcp_conns, outside_network::tcp_wait_first, traverse_postorder(), outside_network::udp_buff, outside_network::udp_wait_first, outside_network::unused_fds, waiting_tcp_delete(), and outside_network::want_to_quit.
| struct pending* pending_udp_query | ( | struct serviced_query * | sq, |
| struct sldns_buffer * | packet, | ||
| int | timeout, | ||
| comm_point_callback_type * | callback, | ||
| void * | callback_arg | ||
| ) |
Send UDP query, create pending answer.
Changes the ID for the query to be random and unique for that destination.
| sq | serviced query. |
| packet | wireformat query to send to destination. |
| timeout | in milliseconds from now. |
| callback | function to call on error, timeout or reply. |
| callback_arg | user argument for callback function. |
References pending::addr, serviced_query::addr, pending::addrlen, serviced_query::addrlen, outside_network::base, pending::cb, pending::cb_arg, comm_timer_create(), comm_timer_delete(), rbnode_type::key, log_assert, memdup(), pending::next_waiting, pending::node, pending::outnet, serviced_query::outnet, pending_delete(), pending_udp_timer_cb(), pending::pkt, pending::pkt_len, randomize_and_send_udp(), sldns_buffer_begin(), sldns_buffer_capacity(), sldns_buffer_flip(), sldns_buffer_limit(), sldns_buffer_new(), sldns_buffer_write(), pending::sq, pending::timeout, pending::timer, outside_network::udp_wait_first, outside_network::udp_wait_last, outside_network::unused_fds, VERB_ALGO, and verbose().
| struct waiting_tcp* pending_tcp_query | ( | struct serviced_query * | sq, |
| struct sldns_buffer * | packet, | ||
| int | timeout, | ||
| comm_point_callback_type * | callback, | ||
| void * | callback_arg | ||
| ) |
Send TCP query.
May wait for TCP buffer. Selects ID to be random, and checks id.
| sq | serviced query. |
| packet | wireformat query to send to destination. copied from. |
| timeout | in milliseconds from now. Timer starts running now. Timer may expire if all buffers are used, without any query been sent to the server yet. |
| callback | function to call on error, timeout or reply. |
| callback_arg | user argument for callback function. |
References serviced_query::addr, serviced_query::addrlen, outside_network::base, comm_timer_create(), log_assert, serviced_query::outnet, outnet_tcptimer(), waiting_tcp::pkt, waiting_tcp::pkt_len, outside_network::rnd, sldns_buffer_begin(), sldns_buffer_capacity(), sldns_buffer_flip(), sldns_buffer_limit(), sldns_buffer_new(), sldns_buffer_write(), outside_network::tcp_free, waiting_tcp::timer, and ub_random().
| void outnet_serviced_query_stop | ( | struct serviced_query * | sq, |
| void * | cb_arg | ||
| ) |
Remove service query callback.
If that leads to zero callbacks, the query is completely cancelled.
| sq | serviced query to adjust. |
| cb_arg | callback argument of callback that needs removal. same as the callback_arg to outnet_serviced_query(). |
References fake_pending::buffer, callback_list_remove(), service_callback::cb_arg, fake_pending::cb_arg, serviced_query::cblist, log_assert, log_info(), fake_pending::next, serviced_query::outnet, replay_runtime::pending_list, fake_pending::pkt, rbtree_delete(), fake_pending::runtime, outside_network::serviced, serviced_delete(), sldns_buffer_free(), serviced_query::to_be_deleted, and fake_pending::zone.
| void comm_point_delete | ( | struct comm_point * | c | ) |
Close and deallocate (free) the comm point.
If the comm point is a tcp-accept point, also its tcp-handler points are deleted.
| c | comm point to delete. |
Referenced by auth_xfer_delete(), auth_xfer_probe_timer_callback(), auth_xfer_probe_udp_callback(), auth_xfer_transfer_http_callback(), auth_xfer_transfer_timer_callback(), clean_point(), daemon_remote_clear(), listen_list_delete(), outnet_comm_point_for_http(), outside_network_delete(), tube_remove_bg_listen(), tube_remove_bg_write(), xfr_probe_disown(), xfr_probe_send_probe(), xfr_transfer_disown(), and xfr_transfer_init_fetch().
| struct comm_timer* comm_timer_create | ( | struct comm_base * | base, |
| void(*)(void *) | cb, | ||
| void * | cb_arg | ||
| ) |
create timer.
Not active upon creation.
| base | event handling base. |
| cb | callback function: void myfunc(void* myarg); |
| cb_arg | user callback argument. |
Referenced by mesh_serve_expired_init(), pending_tcp_query(), pending_udp_query(), xfr_probe_send_probe(), and xfr_transfer_init_fetch().
| void comm_timer_disable | ( | struct comm_timer * | timer | ) |
disable timer.
Stops callbacks from happening.
| timer | to disable. |
Referenced by auth_xfer_probe_udp_callback(), and auth_xfer_transfer_http_callback().
| void comm_timer_set | ( | struct comm_timer * | timer, |
| struct timeval * | tv | ||
| ) |
reset timevalue for timer.
| timer | timer to (re)set. |
| tv | when the timer should activate. if NULL timer is disabled. |
Referenced by mesh_serve_expired_init(), pending_udp_timer_cb(), randomize_and_send_udp(), reset_worker_timer(), set_cron_timer(), worker_probe_timer_cb(), worker_restart_timer(), and xfr_probe_send_probe().
| void comm_timer_delete | ( | struct comm_timer * | timer | ) |
delete timer.
| timer | to delete. |
Referenced by auth_xfer_delete(), mesh_query_done(), mesh_serve_expired_callback(), mesh_state_cleanup(), pending_delete(), pending_udp_query(), waiting_tcp_delete(), worker_delete(), xfr_nextprobe_disown(), xfr_probe_disown(), and xfr_transfer_disown().
| struct comm_point* outnet_comm_point_for_http | ( | struct outside_network * | outnet, |
| comm_point_callback_type * | cb, | ||
| void * | cb_arg, | ||
| struct sockaddr_storage * | to_addr, | ||
| socklen_t | to_addrlen, | ||
| int | timeout, | ||
| int | ssl, | ||
| char * | host, | ||
| char * | path | ||
| ) |
Create http commpoint suitable for communication to the destination.
Creates the http request buffer. It also performs connect() to the to_addr.
| outnet | outside_network with the comm_base it is attached to, and the tcp_mss. |
| cb | callback function for the commpoint. |
| cb_arg | callback argument for cb. |
| to_addr | intended destination. |
| to_addrlen | length of to_addr. |
| timeout | timeout for the TCP connection. timeout in milliseconds, or -1 for no (change to the) timeout. So seconds*1000. |
| ssl | set to true for https. |
| host | hostname to use for the destination. part of http request. |
| path | pathname to lookup, eg. name of the file on the destination. |
References comm_reply::addr, comm_reply::addrlen, outside_network::base, fake_commpoint::cb, fake_commpoint::cb_arg, replay_runtime::cb_arg, comm_point::cb_arg, comm_point_create_http_out(), comm_point_delete(), FAKE_COMMPOINT_TYPECODE, comm_point::fd, fd_set_nonblock(), outside_network::ip_dscp, log_err(), outnet_get_tcp_fd(), outnet_tcp_connect(), comm_point::repinfo, fake_commpoint::runtime, setup_comm_ssl(), comm_point::ssl, outside_network::tcp_mss, fake_commpoint::type_http_out, fake_commpoint::typecode, and outside_network::udp_buff.
| int comm_point_send_udp_msg | ( | struct comm_point * | c, |
| struct sldns_buffer * | packet, | ||
| struct sockaddr * | addr, | ||
| socklen_t | addrlen | ||
| ) |
Send an udp message over a commpoint.
| c | commpoint to send it from. |
| packet | what to send. |
| addr | where to send it to. |
| addrlen | length of addr. |
Referenced by randomize_and_send_udp(), and xfr_probe_send_probe().
|
static |
Global variable: the scenario.
Saved here for when event_init is done.
Referenced by fake_event_cleanup(), and fake_event_init().
1.8.18