sock.c File Reference
`#include "config.h"`
`#include "daemon/engine.h"`
`#include "log.h"`
`#include "signer/zone.h"`
`#include "wire/axfr.h"`
`#include "wire/netio.h"`
`#include "wire/sock.h"`
`#include "wire/xfrd.h"`
`#include <errno.h>`
`#include <fcntl.h>`
`#include <ldns/ldns.h>`
`#include <unistd.h>`

Go to the source code of this file.

## Macros

#define | SOCK_TCP_BACKLOG 5

## Functions

ods_status | sock_listen (socklist_type *sockets, listener_type *listener)
void | sock_handle_udp (netio_type *ATTR_UNUSED(netio), netio_handler_type *handler, netio_events_type event_types)
void | sock_handle_tcp_accept (netio_type *netio, netio_handler_type *handler, netio_events_type event_types)
void | sock_handle_tcp_read (netio_type *netio, netio_handler_type *handler, netio_events_type event_types)
void | sock_handle_tcp_write (netio_type *netio, netio_handler_type *handler, netio_events_type event_types)

## Macro Definition Documentation

## SOCK_TCP_BACKLOG

#define SOCK_TCP_BACKLOG 5

Sockets.

Definition at line 46 of file sock.c.

## Function Documentation

## sock_handle_tcp_accept()

void sock_handle_tcp_accept | ( | netio_type * | netio,
|  | netio_handler_type * | handler,
|  | netio_events_type | event_types )

Handle incoming tcp connections.

Definition at line 445 of file sock.c.

References query_struct::addr, query_struct::addrlen, tcp_data::bytes_transmitted, tcp_accept_data::engine, tcp_data::engine, netio_handler_struct::event_handler, netio_handler_struct::event_types, netio_handler_struct::fd, netio_add_handler(), netio_current_time(), NETIO_EVENT_READ, NETIO_EVENT_TIMEOUT, tcp_data::qstate, tcp_data::query, query_cleanup(), query_create(), QUERY_PROCESSED, sock_handle_tcp_read(), tcp_accept_data::tcp_accept_handler_count, tcp_data::tcp_accept_handler_count, tcp_accept_data::tcp_accept_handlers, tcp_data::tcp_accept_handlers, netio_handler_struct::timeout, timespec_add(), netio_handler_struct::user_data, and XFRD_TCP_TIMEOUT.

Referenced by dnshandler_start().

## sock_handle_tcp_read()

void sock_handle_tcp_read | ( | netio_type * | netio,
|  | netio_handler_type * | handler,
|  | netio_events_type | event_types )

Handle incoming tcp queries.

Definition at line 519 of file sock.c.

References query_struct::buffer, buffer_current(), buffer_flip(), buffer_position(), buffer_remaining(), buffer_set_limit(), buffer_skip(), tcp_data::bytes_transmitted, tcp_data::engine, netio_handler_struct::event_handler, netio_handler_struct::event_types, netio_handler_struct::fd, query_struct::maxlen, netio_current_time(), NETIO_EVENT_READ, NETIO_EVENT_TIMEOUT, NETIO_EVENT_WRITE, tcp_data::qstate, tcp_data::query, query_add_optional(), QUERY_DISCARDED, query_process(), QUERY_PROCESSED, query_reset(), sock_handle_tcp_write(), TCP_MAX_MESSAGE_LEN, query_struct::tcplen, netio_handler_struct::timeout, timespec_add(), netio_handler_struct::user_data, and XFRD_TCP_TIMEOUT.

Referenced by sock_handle_tcp_accept(), and sock_handle_tcp_write().

## sock_handle_tcp_write()

void sock_handle_tcp_write | ( | netio_type * | netio,
|  | netio_handler_type * | handler,
|  | netio_events_type | event_types )

Handle outgoing tcp responses.

Definition at line 644 of file sock.c.

References axfr(), query_struct::buffer, buffer_clear(), buffer_current(), buffer_flip(), buffer_remaining(), buffer_skip(), tcp_data::bytes_transmitted, tcp_data::engine, netio_handler_struct::event_handler, netio_handler_struct::event_types, netio_handler_struct::fd, ixfr(), netio_current_time(), NETIO_EVENT_READ, NETIO_EVENT_TIMEOUT, NETIO_EVENT_WRITE, tcp_data::qstate, tcp_data::query, query_add_optional(), QUERY_AXFR, QUERY_IXFR, QUERY_PROCESSED, sock_handle_tcp_read(), query_struct::tcplen, netio_handler_struct::timeout, timespec_add(), netio_handler_struct::user_data, and XFRD_TCP_TIMEOUT.

Referenced by sock_handle_tcp_read().

## sock_handle_udp()

void sock_handle_udp | ( | netio_type * | ATTR_UNUSEDnetio,
|  | netio_handler_type * | handler,
|  | netio_events_type | event_types )

Handle incoming udp queries.

Definition at line 388 of file sock.c.

References query_struct::addr, query_struct::addrlen, query_struct::buffer, buffer_begin(), buffer_flip(), buffer_remaining(), buffer_skip(), udp_data::engine, netio_handler_struct::fd, NETIO_EVENT_READ, udp_data::query, query_add_optional(), QUERY_DISCARDED, query_process(), QUERY_PROCESSED, query_reset(), UDP_MAX_MESSAGE_LEN, and netio_handler_struct::user_data.

Referenced by dnshandler_start().

## sock_listen()

ods_status sock_listen | ( | socklist_type * | sockets,
|  | listener_type * | listener )

Create sockets and listen.

Definition at line 292 of file sock.c.

References interface_struct::address, listener_struct::count, DNS_PORT_STRING, interface_struct::family, listener_struct::interfaces, MAX_INTERFACES, interface_struct::port, sock_struct::s, socklist_struct::tcp, and socklist_struct::udp.

Referenced by dnshandler_listen().