aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar zfl9 <zfl9.com@gmail.com> 2020-03-06 22:38:50 +0800
committerGravatar zfl9 <zfl9.com@gmail.com> 2020-03-06 22:38:50 +0800
commita62de5a08e71b0168fc96121a6f0287114ebf5e8 (patch)
tree49d4fd56034534e9dd4c9e439f7aee2f5a7453f9
parentuse libev instead of libuv (diff)
downloaddns2tcp-a62de5a08e71b0168fc96121a6f0287114ebf5e8.tar.gz
dns2tcp-a62de5a08e71b0168fc96121a6f0287114ebf5e8.tar.bz2
dns2tcp-a62de5a08e71b0168fc96121a6f0287114ebf5e8.zip
use libev instead of libuv
-rw-r--r--dnsudp2tcp.c25
-rwxr-xr-xtestbin80536 -> 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
--- a/test
+++ b/test
Binary files differ