From a62de5a08e71b0168fc96121a6f0287114ebf5e8 Mon Sep 17 00:00:00 2001 From: zfl9 Date: Fri, 6 Mar 2020 22:38:50 +0800 Subject: use libev instead of libuv --- dnsudp2tcp.c | 25 ++++++++++--------------- 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); } } diff --git a/test b/test index 8c28913..e43e2e2 100755 Binary files a/test and b/test differ -- cgit v1.2.3