int dnscrypt_proxy_start_listeners(ProxyContext * const proxy_context) { char local_addr_s[INET6_ADDRSTRLEN + sizeof "[]:65535"]; char resolver_addr_s[INET6_ADDRSTRLEN + sizeof "[]:65535"]; if (proxy_context->listeners_started != 0) { return 0; } if (udp_listener_start(proxy_context) != 0 || tcp_listener_start(proxy_context) != 0) { exit(1); } evutil_format_sockaddr_port((const struct sockaddr *) &proxy_context->local_sockaddr, local_addr_s, sizeof local_addr_s); evutil_format_sockaddr_port((const struct sockaddr *) &proxy_context->resolver_sockaddr, resolver_addr_s, sizeof resolver_addr_s); logger(proxy_context, LOG_INFO, "Proxying from %s to %s", local_addr_s, resolver_addr_s); proxy_context->listeners_started = 1; return 0; }
static void regress_sockaddr_port_format(void *ptr) { struct sockaddr_storage ss; int len; const char *cp; char cbuf[128]; int r; len = sizeof(ss); r = evutil_parse_sockaddr_port("192.168.1.1:80", (struct sockaddr*)&ss, &len); tt_int_op(r,==,0); cp = evutil_format_sockaddr_port( (struct sockaddr*)&ss, cbuf, sizeof(cbuf)); tt_ptr_op(cp,==,cbuf); tt_str_op(cp,==,"192.168.1.1:80"); len = sizeof(ss); r = evutil_parse_sockaddr_port("[ff00::8010]:999", (struct sockaddr*)&ss, &len); tt_int_op(r,==,0); cp = evutil_format_sockaddr_port( (struct sockaddr*)&ss, cbuf, sizeof(cbuf)); tt_ptr_op(cp,==,cbuf); tt_str_op(cp,==,"[ff00::8010]:999"); ss.ss_family=99; cp = evutil_format_sockaddr_port( (struct sockaddr*)&ss, cbuf, sizeof(cbuf)); tt_ptr_op(cp,==,cbuf); tt_str_op(cp,==,"<addr with socktype 99>"); end: ; }