diff options
author | zfl9 <zfl9.com@gmail.com> | 2020-03-06 22:38:50 +0800 |
---|---|---|
committer | zfl9 <zfl9.com@gmail.com> | 2020-03-06 22:38:50 +0800 |
commit | a62de5a08e71b0168fc96121a6f0287114ebf5e8 (patch) | |
tree | 49d4fd56034534e9dd4c9e439f7aee2f5a7453f9 | |
parent | use libev instead of libuv (diff) | |
download | dns2tcp-a62de5a08e71b0168fc96121a6f0287114ebf5e8.tar.gz dns2tcp-a62de5a08e71b0168fc96121a6f0287114ebf5e8.tar.bz2 dns2tcp-a62de5a08e71b0168fc96121a6f0287114ebf5e8.zip |
use libev instead of libuv
-rw-r--r-- | dnsudp2tcp.c | 25 | ||||
-rwxr-xr-x | test | bin | 80536 -> 80576 bytes |
2 files changed, 10 insertions, 15 deletions
diff --git a/dnsudp2tcp.c b/dnsudp2tcp.c index 20431bd..e2463fd 100644 --- a/dnsudp2tcp.c +++ b/dnsudp2tcp.c @@ -181,6 +181,13 @@ static void parse_sock_addr6(const skaddr6_t *addr, char *ipstr, portno_t *portn inet_ntop(AF_INET6, &addr->sin6_addr, ipstr, IP6STRLEN); *portno = ntohs(addr->sin6_port); } +static void parse_sock_addr(const void *addr, char *ipstr, portno_t *portno) { + if (((skaddr4_t *)addr)->sin_family == AF_INET) { + parse_sock_addr4(addr, ipstr, portno); + } else { + parse_sock_addr6(addr, ipstr, portno); + } +} static void print_command_help(void) { printf("usage: dns2tcp <-L listen> <-R remote> [-s syncnt] [-6rafvVh]\n" @@ -381,11 +388,7 @@ static void udp_recvmsg_cb(evloop_t *evloop, evio_t *watcher, int events __attri } IF_VERBOSE { portno_t portno; - if (tcpw->srcaddr.sin6_family == AF_INET) { - parse_sock_addr4((void *)&tcpw->srcaddr, g_ipstr_buf, &portno); - } else { - parse_sock_addr6((void *)&tcpw->srcaddr, g_ipstr_buf, &portno); - } + parse_sock_addr(&tcpw->srcaddr, g_ipstr_buf, &portno); LOGINF("[udp_recvmsg_cb] recv from %s#%hu, nrecv:%zd", g_ipstr_buf, portno, nrecv); } *(uint16_t *)tcpw->buffer = htons(nrecv); @@ -490,20 +493,12 @@ static void tcp_recvmsg_cb(evloop_t *evloop, evio_t *watcher, int events __attri ssize_t nsend = sendto(g_udp_watcher.fd, buffer + 2, ntohs(*(uint16_t *)buffer), 0, (void *)&tcpw->srcaddr, sizeof(tcpw->srcaddr)); if (nsend < 0) { portno_t portno; - if (tcpw->srcaddr.sin6_family == AF_INET) { - parse_sock_addr4((void *)&tcpw->srcaddr, g_ipstr_buf, &portno); - } else { - parse_sock_addr6((void *)&tcpw->srcaddr, g_ipstr_buf, &portno); - } + parse_sock_addr(&tcpw->srcaddr, g_ipstr_buf, &portno); LOGERR("[tcp_recvmsg_cb] send to %s#%hu failed: (%d) %s", g_ipstr_buf, portno, errno, strerror(errno)); } else { IF_VERBOSE { portno_t portno; - if (tcpw->srcaddr.sin6_family == AF_INET) { - parse_sock_addr4((void *)&tcpw->srcaddr, g_ipstr_buf, &portno); - } else { - parse_sock_addr6((void *)&tcpw->srcaddr, g_ipstr_buf, &portno); - } + parse_sock_addr(&tcpw->srcaddr, g_ipstr_buf, &portno); LOGINF("[tcp_recvmsg_cb] send to %s#%hu, nsend:%zd", g_ipstr_buf, portno, nsend); } } Binary files differ |