|
Electroneum
|
#include "util/netevent.h"
Go to the source code of this file.
Classes | |
| struct | listen_dnsport |
| struct | listen_list |
| struct | listen_port |
Enumerations | |
| enum | listen_type { listen_type_udp, listen_type_tcp, listen_type_udpancil, listen_type_ssl, listen_type_udp_dnscrypt, listen_type_tcp_dnscrypt, listen_type_udpancil_dnscrypt } |
Functions | |
| struct listen_port * | listening_ports_open (struct config_file *cfg, int *reuseport) |
| void | listening_ports_free (struct listen_port *list) |
| struct listen_dnsport * | listen_create (struct comm_base *base, struct listen_port *ports, size_t bufsize, int tcp_accept_count, void *sslctx, struct dt_env *dtenv, comm_point_callback_type *cb, void *cb_arg) |
| void | listen_delete (struct listen_dnsport *listen) |
| void | listen_list_delete (struct listen_list *list) |
| size_t | listen_get_mem (struct listen_dnsport *listen) |
| void | listen_stop_accept (struct listen_dnsport *listen) |
| void | listen_start_accept (struct listen_dnsport *listen) |
| int | create_udp_sock (int family, int socktype, struct sockaddr *addr, socklen_t addrlen, int v6only, int *inuse, int *noproto, int rcv, int snd, int listen, int *reuseport, int transparent, int freebind, int use_systemd) |
| int | create_tcp_accept_sock (struct addrinfo *addr, int v6only, int *noproto, int *reuseport, int transparent, int mss, int freebind, int use_systemd) |
| int | create_local_accept_sock (const char *path, int *noproto, int use_systemd) |
This file has functions to get queries from clients.
Definition in file listen_dnsport.h.
| enum listen_type |
type of ports
Definition at line 82 of file listen_dnsport.h.
| int create_local_accept_sock | ( | const char * | path, |
| int * | noproto, | ||
| int | use_systemd | ||
| ) |
Create and bind local listening socket
| path | path to the socket. |
| noproto | on error, this is set true if cause is that local sockets are not supported. |
| use_systemd | if true, fetch sockets from systemd. |
| int create_tcp_accept_sock | ( | struct addrinfo * | addr, |
| int | v6only, | ||
| int * | noproto, | ||
| int * | reuseport, | ||
| int | transparent, | ||
| int | mss, | ||
| int | freebind, | ||
| int | use_systemd | ||
| ) |
Create and bind TCP listening socket
| addr | address info ready to make socket. |
| v6only | enable ip6 only flag on ip6 sockets. |
| noproto | if error caused by lack of protocol support. |
| reuseport | if nonNULL and true, try to set SO_REUSEPORT on listening UDP port. Set to false on return if it failed to do so. |
| transparent | set IP_TRANSPARENT socket option. |
| mss | maximum segment size of the socket. if zero, leaves the default. |
| freebind | set IP_FREEBIND socket option. |
| use_systemd | if true, fetch sockets from systemd. |
| int create_udp_sock | ( | int | family, |
| int | socktype, | ||
| struct sockaddr * | addr, | ||
| socklen_t | addrlen, | ||
| int | v6only, | ||
| int * | inuse, | ||
| int * | noproto, | ||
| int | rcv, | ||
| int | snd, | ||
| int | listen, | ||
| int * | reuseport, | ||
| int | transparent, | ||
| int | freebind, | ||
| int | use_systemd | ||
| ) |
Create and bind nonblocking UDP socket
| family | for socket call. |
| socktype | for socket call. |
| addr | for bind call. |
| addrlen | for bind call. |
| v6only | if enabled, IP6 sockets get IP6ONLY option set. if enabled with value 2 IP6ONLY option is disabled. |
| inuse | on error, this is set true if the port was in use. |
| noproto | on error, this is set true if cause is that the IPv6 proto (family) is not available. |
| rcv | set size on rcvbuf with socket option, if 0 it is not set. |
| snd | set size on sndbuf with socket option, if 0 it is not set. |
| listen | if true, this is a listening UDP port, eg port 53, and set SO_REUSEADDR on it. |
| reuseport | if nonNULL and true, try to set SO_REUSEPORT on listening UDP port. Set to false on return if it failed to do so. |
| transparent | set IP_TRANSPARENT socket option. |
| freebind | set IP_FREEBIND socket option. |
| use_systemd | if true, fetch sockets from systemd. |
| struct listen_dnsport* listen_create | ( | struct comm_base * | base, |
| struct listen_port * | ports, | ||
| size_t | bufsize, | ||
| int | tcp_accept_count, | ||
| void * | sslctx, | ||
| struct dt_env * | dtenv, | ||
| comm_point_callback_type * | cb, | ||
| void * | cb_arg | ||
| ) |
Create commpoints with for this thread for the shared ports.
| base | the comm_base that provides event functionality. for default all ifs. |
| ports | the list of shared ports. |
| bufsize | size of datagram buffer. |
| tcp_accept_count | max number of simultaneous TCP connections from clients. |
| sslctx | nonNULL if ssl context. |
| dtenv | nonNULL if dnstap enabled. |
| cb | callback function when a request arrives. It is passed the packet and user argument. Return true to send a reply. |
| cb_arg | user data argument for callback function. |
| void listen_delete | ( | struct listen_dnsport * | listen | ) |
delete the listening structure
| listen | listening structure. |
| size_t listen_get_mem | ( | struct listen_dnsport * | listen | ) |
get memory size used by the listening structs
| listen | listening structure. |
| void listen_list_delete | ( | struct listen_list * | list | ) |
delete listen_list of commpoints. Calls commpointdelete() on items. This may close the fds or not depending on flags.
| list | to delete. |
| void listen_start_accept | ( | struct listen_dnsport * | listen | ) |
start accept handlers for TCP (was stopped before)
| listen | listening structure. |
| void listen_stop_accept | ( | struct listen_dnsport * | listen | ) |
stop accept handlers for TCP (until enabled again)
| listen | listening structure. |
| void listening_ports_free | ( | struct listen_port * | list | ) |
Close and delete the (list of) listening ports.
| struct listen_port* listening_ports_open | ( | struct config_file * | cfg, |
| int * | reuseport | ||
| ) |
Create shared listening ports Getaddrinfo, create socket, bind and listen to zero or more interfaces for IP4 and/or IP6, for UDP and/or TCP. On the given port number. It creates the sockets.
| cfg | settings on what ports to open. |
| reuseport | set to true if you want reuseport, or NULL to not have it, set to false on exit if reuseport failed to apply (because of no kernel support). |