From 436011fee88fb1f8e2941c518e5f7bd11d66559d Mon Sep 17 00:00:00 2001 From: "Alex Xu (Hello71)" Date: Thu, 14 Jul 2016 15:49:58 -0400 Subject: Rewrite args parsing to prepare for libpcap. --- src/client.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'src/client.c') diff --git a/src/client.c b/src/client.c index 733ffa0..1517481 100644 --- a/src/client.c +++ b/src/client.c @@ -23,8 +23,7 @@ #define PORTS_IN_INT (sizeof(int) * CHAR_BIT) struct c_data { - const char *r_host; - const char *r_port; + const struct common_data *common_data; struct o_c_sock *o_socks_by_caddr; struct o_c_rsock *o_rsocks; struct sockaddr_storage pkt_addr; @@ -410,9 +409,9 @@ static inline struct o_c_sock * c_sock_init(EV_P_ struct c_data *c_data) { struct o_c_sock *sock = NULL; struct addrinfo *res; - DBG("looking up [%s]:%s", c_data->r_host, c_data->r_port); + DBG("looking up [%s]:%s", c_data->common_data->remote_host, c_data->common_data->remote_port); // TODO: make this asynchronous - int r = getaddrinfo(c_data->r_host, c_data->r_port, NULL, &res); + int r = getaddrinfo(c_data->common_data->remote_host, c_data->common_data->remote_port, NULL, &res); if (r) { fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(r)); goto err; @@ -565,18 +564,17 @@ static void c_finish(EV_P_ ev_signal *w __attribute__((unused)), int revents __a ev_break(EV_A_ EVBREAK_ALL); } -int start_client(const char *s_host, const char *s_port, const char *r_host, const char *r_port) { +int start_client(const struct common_data *common_data) { struct addrinfo *res; - int r = getaddrinfo(s_host, s_port, NULL, &res); + int r = getaddrinfo(common_data->listen_host, common_data->listen_port, NULL, &res); if (r) { fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(r)); return 3; } struct c_data c_data = { - .s_addrlen = res->ai_addrlen, - .r_host = r_host, - .r_port = r_port + .common_data = common_data, + .s_addrlen = res->ai_addrlen }; c_data.s_sock = socket(res->ai_family, SOCK_DGRAM, 0); @@ -597,13 +595,13 @@ int start_client(const char *s_host, const char *s_port, const char *r_host, con return 4; } - global_c_data = &c_data; - atexit(c_cleanup); - struct ev_loop *loop = EV_DEFAULT; ev_io s_watcher; ev_signal iwatcher, twatcher; + global_c_data = &c_data; + atexit(c_cleanup); + s_watcher.data = &c_data; ev_io_init(&s_watcher, cs_cb, c_data.s_sock, EV_READ); -- cgit v1.2.3-54-g00ecf