aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar zfl9 <zfl9.com@gmail.com> 2020-03-04 22:09:53 +0800
committerGravatar zfl9 <zfl9.com@gmail.com> 2020-03-04 22:09:53 +0800
commita50ef77dfa8c56bf7e580d3eab9a5f6c89e8712a (patch)
tree4df4536b2ed7200877bcfdfe7c2897ec7e193793
parentuse libev instead of libuv (diff)
downloaddns2tcp-a50ef77dfa8c56bf7e580d3eab9a5f6c89e8712a.tar.gz
dns2tcp-a50ef77dfa8c56bf7e580d3eab9a5f6c89e8712a.tar.bz2
dns2tcp-a50ef77dfa8c56bf7e580d3eab9a5f6c89e8712a.zip
use libev instead of libuv
-rw-r--r--dnsudp2tcp.c30
-rwxr-xr-xtestbin75832 -> 75992 bytes
2 files changed, 27 insertions, 3 deletions
diff --git a/dnsudp2tcp.c b/dnsudp2tcp.c
index b96ed30..ba4c811 100644
--- a/dnsudp2tcp.c
+++ b/dnsudp2tcp.c
@@ -347,13 +347,37 @@ int main(int argc, char *argv[]) {
g_event_loop = ev_default_loop(0);
- int udp_sfd = socket(g_listen_skaddr.sin6_family, SOCK_DGRAM, 0);
- if (udp_sfd < 0) {
+ int sockfd = socket(g_listen_skaddr.sin6_family, SOCK_DGRAM, 0);
+ if (sockfd < 0) {
LOGERR("[main] create udp socket failed: (%d) %s", errno, strerror(errno));
return errno;
}
- // TODO
+ set_nonblock(sockfd);
+ set_reuseaddr(sockfd);
+ if (g_options & OPT_REUSE_PORT) set_reuseport(sockfd);
+ if (g_options & OPT_IPV6_V6ONLY) set_ipv6only(sockfd);
+
+ if (bind(sockfd, (void *)&g_listen_skaddr, g_listen_skaddr.sin6_family == AF_INET ? sizeof(skaddr4_t) : sizeof(skaddr6_t)) < 0) {
+ LOGERR("[main] bind udp address failed: (%d) %s", errno, strerror(errno));
+ return errno;
+ }
+ ev_io_init(&g_udp_watcher, udp_recv_cb, sockfd, EV_READ);
+ ev_io_start(g_event_loop, &g_udp_watcher);
+
+ ev_run(g_event_loop, 0);
return 0;
}
+
+static void udp_recv_cb(evloop_t *evloop, evio_t *watcher, int events) {
+ // TODO
+}
+
+static void tcp_send_cb(evloop_t *evloop, evio_t *watcher, int events) {
+ // TODO
+}
+
+static void tcp_recv_cb(evloop_t *evloop, evio_t *watcher, int events) {
+ // TODO
+}
diff --git a/test b/test
index ffdc283..dc25767 100755
--- a/test
+++ b/test
Binary files differ