/****************************************************************************
* Copyright (C) 1998 WIDE Project. All rights reserved.
* Copyright (C) 1999,2000,2001,2002 University of Tromso. All rights reserved.
* Copyright (C) 2002 Invenia Innovation AS. All rights reserved.
*
* Author: Feike W. Dillema, feico@pasta.cs.uit.no.
* based on newbie code by Yusuke DOI, Keio Univ. Murai Lab.
****************************************************************************/
/*
* <$Id: protos.h,v 3.62 2005/01/27 15:29:33 dillema Exp $>
*/
#if !HAVE_STRLCPY
size_t strlcpy(char *, const char *, size_t);
#endif
#if !HAVE_STRLCAT
size_t strlcat(char *, const char *, size_t);
#endif
#if !HAVE_DAEMON
int daemon(int, int);
#endif
#if !HAVE_DAEMON
int inet_aton(const char *, struct in_addr *);
#endif
RRset *search_name (G_List *, char *, int, int);
char *sprint_inet(struct sockaddr *, char *);
int request_start (Context *, int);
int request_retry(Context *);
int request_abort (Context *, int);
int request_finish (Context *cont);
int assemble_response (Context *);
int do_forward(struct context *, u_char *, uint16_t, uint16_t, int);
int recursive_process (Context *);
int tcp_writemesg (Context *, int);
int response_abort (Context *, int);
int tcp_request_start (struct context *);
int tcp_request_wait_connect_process (Context *);
int tcp_request_wait_connect_retry (Context *);
int tcp_request_writing_process (Context *);
int tcp_request_writing_retry (Context *);
int tcp_request_readlen_process (Context *);
int tcp_request_readlen_retry (Context *);
int tcp_request_reading_process (Context *);
int tcp_request_reading_retry (Context *);
int tcp_request_finish (Context *);
int tcp_response_start (int, struct sockaddr *);
int tcp_response_readlen_process (Context *);
int tcp_response_readlen_retry (Context *);
int tcp_response_reading_process (Context *);
int tcp_response_reading_retry (Context *);
int tcp_response_recursive_process (Context *);
int tcp_response_recursive_retry (Context *);
int tcp_response_writing_process (Context *);
int tcp_response_writing_retry (Context *);
int tcp_response_waiting_client_close_process (Context *);
int tcp_response_waiting_client_close_retry (Context *);
int tcp_response_finish (Context *);
int udp_request_start (struct context *);
int udp_request_process (Context *);
int udp_request_retry (Context *);
int udp_request_finish (Context *);
int udp_response_start (u_char *, int, struct sockaddr *, Nia *);
int udp_response_recursive_process (Context *);
int udp_response_recursive_retry (Context *);
int udp_response_finish (Context *);
int context_timeout_handler (struct ev_to_data *);
int context_timeout_register (Context *, int);
Context *context_create (void);
void *context_destroy (Context *);
void conv_trick_list (G_List *, int, int);
void conv_trick_ptr (G_List *, u_char *);
void conv_trick_newptr (G_List *, u_char *);
int conv_trick_conf (u_char *);
int conv_trick_is_tot_ptr (u_char *);
void conv_trick_ptr_rq (u_char * qname);
int conv_trick_is_tot_newptr (u_char *, struct in6_addr *);
void conv_trick_newptr_rq (u_char *, struct in6_addr *);
int conv_stf_is_stf_ptr (u_char *);
int conv_stf_ptr (u_char *);
void conv_stf_ns_list (G_List *);
struct sockaddr *conv_stf_get_nsaddr(Context *);
void ev_dup_init (void);
int ev_dup (struct sockaddr *, uint16_t, uint16_t);
void ev_main ();
int ev_signal_init (void);
void ev_signal_process (void);
void ev_signal_finish (void);
int ev_tcp_common_eq (void *, void *);
G_List *ev_tcp_common_init (void);
int ev_tcp_common_register (G_List *, int, Context *);
int ev_tcp_common_remove (G_List *, int);
int ev_tcp_common_fds (G_List *, fd_set *);
int ev_tcp_common_fd_check (G_List *, fd_set *);
int ev_tcp_conn_in_init (void);
void ev_tcp_conn_in_finish (void);
int ev_tcp_conn_in_register (int, Context *);
int ev_tcp_conn_in_remove (int);
int ev_tcp_conn_in_fds (fd_set *);
int ev_tcp_conn_in_fd_check (fd_set *);
int ev_tcp_out_init (void);
void ev_tcp_out_finish (void);
int ev_tcp_out_register (int, Context *);
int ev_tcp_out_remove (int);
int ev_tcp_out_fds (fd_set *);
int ev_tcp_out_fd_check (fd_set *);
int ev_tcp_srv_accept (int);
int ev_to_init (void);
int ev_to_register (Ev_TO_Data *);
time_t ev_timeout_process (void);
void ev_to_data_free (Ev_TO_Data *);
void ev_to_data_free_v (void *);
void ev_to_finish (void);
int ev_to_handler_ifcheck (Ev_TO_Data *);
int ev_to_register_ifcheck (void);
int ev_udp_in_eq (void *, void *);
void ev_udp_in_data_free (Ev_UDP_In_Data * _p);
void ev_udp_in_data_free_v (void *_vp);
int ev_udp_in_init (void);
void ev_udp_in_finish (void);
int ev_udp_in_register (Context *, struct sockaddr *, int, uint16_t);
int ev_udp_in_remove (struct sockaddr *, int);
int ev_udp_in_read (int);
struct sockaddr *parse_and_alloc_addr (char *caddr, int port, int *sa_len_ret);
void fwd_free (Fwd *);
void fwd_freev (void *);
Fwd *fwd_alloc (void);
void fwd_init (void);
int fwd_add (char *hostname, int port);
int fwd_del (struct sockaddr *, int);
void fwd_select (void);
void fwd_mark (struct sockaddr *, int);
G_List *fwd_socketlist (void);
G_List *list_init (void);
int list_add (G_List *, void *);
int list_add_tail (G_List *, void *);
G_List *list_search (G_List *, void *, int (*comp_func) (void *, void *));
void *list_delete (G_List *);
void list_destroy (G_List *, void (*freefnc) (void *));
G_List *list_dup (G_List *, void (freefunc) (void *), void *(dupfunc) (void *));
void list_cat (G_List * list, G_List * toadd);
void nia_free_closev (void *);
void nia_free (Nia *, int);
Nia *nia_find_by_sock (int);
void nia_fds_set (fd_set *, int *);
int nia_fds_isset (fd_set *, int *);
Nia *nia_copy (Nia *);
int net_init_socketlist (int);
int net_reinit_socketlist (int, int);
int net_bind_socketlist (void);
int net_delete_socketlist (void);
int net_mesg_socket (Nia *);
int net_stream_socket (Nia *);
int net_mesg_send (Nia *, u_char *, int, struct sockaddr *);
uint16_t mesg_id (void);
int mesg_make_query (u_char *, uint16_t, uint16_t, uint32_t, int, u_char *, int);
int mesg_write_dname (u_char *, u_char *, uint16_t *, int, u_char *, u_char *);
u_char *mesg_skip_dname (u_char * dname, u_char * end);
int labellen (const u_char * dname);
u_char *dname_decompress (u_char *, int, u_char *, u_char *, u_char *, int *);
int mesg_dname_cmp (u_char *, u_char *, u_char *);
int mesg_write_rrset_list (G_List *, u_char *, u_char *, uint16_t *, int, u_char **, uint16_t *);
int mesg_assemble (G_List *, G_List *, G_List *, u_char *, uint16_t, u_char *mesg, int);
void rrset_couple_free (RRset_Couple *);
void rrset_couple_freev (void *);
int mesg_extract_rr (u_char *, u_char *, uint16_t, uint16_t, u_char *, u_char *, int);
int mesg_parse (u_char *, int, G_List *, G_List *, G_List *);
Q_Set *queue_create (void);
void queue_destroy (Q_Set *, void (*freefnc) (void *));
int enqueue (Q_Set *, void *);
void *dequeue (Q_Set *);
void *queue_peek (Q_Set *);
void *queue_disable (G_Queue *);
int read_config (char *);
RR *rr_alloc (uint32_t, int, u_char *);
RR_List *rr_list_alloc (void);
void rr_list_free (RR_List *);
RR_List *rr_list_add (RR_List *, uint32_t, int, u_char *);
RR *rrset_get_rr_f (int, RRset *);
RR_List *rr_list_of_rrset (RRset *);
RRset *rrset_alloc (void);
RRset *rrset_create (uint16_t, uint16_t, uint16_t, u_char *, RR_List *);
RRset *rrset_create_single (u_char *, int, uint16_t, uint16_t, uint32_t, uint16_t, u_char *);
void rrset_freev (void *);
void rrset_free (RRset *);
RRset *rrset_copy (RRset *);
void *rrset_copyv (void *);
void *rrset_dupv (void *);
RRset *rrset_dup (RRset *);
void rrset_list_dump (G_List *, FILE *);
char *string_rclass (uint16_t);
char *string_rtype (uint16_t);
void totd_eventloop (void);
int totd_exit (int);
int conv_scoped_query (Context *);
int conv_scoped_conf (const char *, const char *, int);
void conv_scoped_list (G_List *);
int conv_is_scoped_ptr (u_char *, int);
void conv_scoped_ptr (G_List *, u_char *);
void conv_scoped_ptr_rq (u_char *);
#ifdef SWILL
void print_stats(FILE *);
void add_prefix(FILE *);
void del_prefix(FILE *);
#endif
syntax highlighted by Code2HTML, v. 0.9.1