fix: populate ldns submodule and add autotools to LDNS build stage
- Re-cloned zonemaster-ldns with --recurse-submodules so the bundled ldns C library source (including Changelog and configure.ac) is present - Added autoconf, automake, libtool to Dockerfile.backend ldns-build stage so libtoolize + autoreconf can generate ldns/configure during make Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
148
zonemaster-ldns/ldns/masterdont/server.h
Normal file
148
zonemaster-ldns/ldns/masterdont/server.h
Normal file
@@ -0,0 +1,148 @@
|
||||
/*
|
||||
server.h masterdont server, serves IXFR, AXFR, SOA queries.
|
||||
*/
|
||||
|
||||
#ifndef SERVER_H
|
||||
#define SERVER_H
|
||||
|
||||
struct zones_t;
|
||||
|
||||
/**
|
||||
* Socket that is being serviced by the server.
|
||||
*/
|
||||
struct socket_service {
|
||||
/* socket */
|
||||
int s;
|
||||
/* true if a tcp socket */
|
||||
int is_tcp;
|
||||
/* tcp state: listening, reading, or writing. */
|
||||
enum {svr_tcp_listen, svr_tcp_read, svr_tcp_write} tcp_state;
|
||||
/* bytes processed for tcp */
|
||||
size_t bytes_done;
|
||||
|
||||
/* peer address */
|
||||
struct sockaddr_storage peer;
|
||||
socklen_t peerlen;
|
||||
|
||||
/* buffer for input/output */
|
||||
ldns_buffer* buffer;
|
||||
|
||||
/* rrs for the reply. If not null, these RRs are part of the answer. */
|
||||
ldns_rr_list* reply;
|
||||
|
||||
/* next in linked list */
|
||||
struct socket_service* next;
|
||||
};
|
||||
|
||||
struct server_info_t {
|
||||
/* zones */
|
||||
struct zones_t* zones;
|
||||
/* config */
|
||||
struct config_file* cfg;
|
||||
|
||||
/* number of open tcp connections */
|
||||
int num_tcp;
|
||||
/* socket list */
|
||||
struct socket_service* sock_list;
|
||||
|
||||
/* select data, max fd */
|
||||
int maxfd;
|
||||
/* fd sets to select on, copied from. */
|
||||
fd_set rset, wset, eset;
|
||||
};
|
||||
|
||||
/**
|
||||
* start the server, give zones, configfile (already read)
|
||||
* and portnumber to bind.
|
||||
* returns true if it needs to reload, false for exit.
|
||||
*/
|
||||
int server_start(const char* config);
|
||||
|
||||
/**
|
||||
* free service list
|
||||
*/
|
||||
void server_free(struct server_info_t* s);
|
||||
|
||||
/**
|
||||
* create service sockets on specified port.
|
||||
*/
|
||||
void server_bind(struct server_info_t* sinfo, int port);
|
||||
|
||||
/**
|
||||
* create servicing struct from addr. socket, bind, (listen).
|
||||
* NULL on error.
|
||||
*/
|
||||
struct socket_service* server_service_create(struct addrinfo *ai);
|
||||
|
||||
/**
|
||||
* free the service, close the socket
|
||||
*/
|
||||
void server_service_free(struct socket_service* svr);
|
||||
|
||||
/**
|
||||
* Perform a select and handle the events on the sockets.
|
||||
*/
|
||||
void server_handle_net(struct server_info_t *sinfo);
|
||||
|
||||
/**
|
||||
* Handle read possible on serviced socket.
|
||||
* Sets delete to true if connection should be closed (for tcp).
|
||||
*/
|
||||
void handle_read(struct server_info_t *sinfo, struct socket_service* sv,
|
||||
int *del, struct zones_t* zones);
|
||||
|
||||
/**
|
||||
* Handle write possible on serviced socket.
|
||||
* Sets delete to true if connection should be closed (for tcp).
|
||||
*/
|
||||
void handle_write(struct server_info_t *sinfo, struct socket_service* sv,
|
||||
int *del);
|
||||
|
||||
/**
|
||||
* Handle tcp listen. Creates new socket service after accepting.
|
||||
*/
|
||||
void handle_listen(struct server_info_t *sinfo, struct socket_service* sv);
|
||||
|
||||
/**
|
||||
* read tcp query from socket.
|
||||
* returns true when query is finished OK. del is true on error.
|
||||
*/
|
||||
int read_tcp_query(struct socket_service *sv, int* del);
|
||||
|
||||
/**
|
||||
* read udp query from socket.
|
||||
* returns true when query is read OK.
|
||||
*/
|
||||
int read_udp_query(struct socket_service *sv);
|
||||
|
||||
/**
|
||||
* process query.
|
||||
* First result packet is in the buffer.
|
||||
* More results can be found in the rrlist.
|
||||
* return false if query should be dropped (no reply).
|
||||
*/
|
||||
int process_query(struct socket_service* sv, struct zones_t* zones);
|
||||
|
||||
/**
|
||||
* send udp answer back to sender.
|
||||
*/
|
||||
void send_udp_answer(struct socket_service* sv);
|
||||
|
||||
/**
|
||||
* send (part of) tcp answer.
|
||||
* del is true when tcp should be closed up.
|
||||
*/
|
||||
void write_tcp_answer(struct socket_service* sv, int* del);
|
||||
|
||||
/**
|
||||
* Dump RRs into the answer to get more reply. Makes new reply buffer.
|
||||
* reply becomes NULL when last buffer is filled.
|
||||
*/
|
||||
void fill_r_up(struct socket_service* sv);
|
||||
|
||||
/**
|
||||
* Dumps RRs into the answer section of the pkt.
|
||||
*/
|
||||
void fill_r_up_pkt(struct socket_service* sv, ldns_pkt* in_here);
|
||||
|
||||
#endif /* SERVER_H */
|
||||
Reference in New Issue
Block a user