Be more verbose
This commit is contained in:
63
glorytun.c
63
glorytun.c
@@ -139,11 +139,10 @@ static int sk_create (struct addrinfo *res, int(*func)(int, struct addrinfo *))
|
|||||||
|
|
||||||
static int sk_accept (int fd)
|
static int sk_accept (int fd)
|
||||||
{
|
{
|
||||||
struct sockaddr_storage addr_storage;
|
struct sockaddr_storage addr;
|
||||||
struct sockaddr *addr = (struct sockaddr *)&addr_storage;
|
socklen_t addr_size = sizeof(addr);
|
||||||
socklen_t addr_size = sizeof(addr_storage);
|
|
||||||
|
|
||||||
int ret = accept(fd, addr, &addr_size);
|
int ret = accept(fd, (struct sockaddr *)&addr, &addr_size);
|
||||||
|
|
||||||
if (ret==-1 && errno!=EINTR)
|
if (ret==-1 && errno!=EINTR)
|
||||||
perror("accept");
|
perror("accept");
|
||||||
@@ -151,6 +150,41 @@ static int sk_accept (int fd)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *sk_get_name (int fd)
|
||||||
|
{
|
||||||
|
struct sockaddr_storage addr;
|
||||||
|
socklen_t addr_size = sizeof(addr);
|
||||||
|
|
||||||
|
if (getpeername(fd, (struct sockaddr *)&addr, &addr_size)==-1) {
|
||||||
|
perror("getpeername");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
char host[64] = {0};
|
||||||
|
char port[32] = {0};
|
||||||
|
|
||||||
|
int ret = getnameinfo((struct sockaddr *)&addr, addr_size,
|
||||||
|
host, sizeof(host),
|
||||||
|
port, sizeof(port),
|
||||||
|
NI_NUMERICHOST|NI_NUMERICSERV);
|
||||||
|
|
||||||
|
switch (ret) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case EAI_MEMORY:
|
||||||
|
errno = ENOMEM;
|
||||||
|
case EAI_SYSTEM:
|
||||||
|
perror("getnameinfo");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *const strs[] = {
|
||||||
|
host, ".", port
|
||||||
|
};
|
||||||
|
|
||||||
|
return str_cat(strs, COUNT(strs));
|
||||||
|
}
|
||||||
|
|
||||||
static struct addrinfo *ai_create (const char *host, const char *port, int listener)
|
static struct addrinfo *ai_create (const char *host, const char *port, int listener)
|
||||||
{
|
{
|
||||||
if (!port || !port[0]) {
|
if (!port || !port[0]) {
|
||||||
@@ -171,10 +205,9 @@ static struct addrinfo *ai_create (const char *host, const char *port, int liste
|
|||||||
|
|
||||||
int ret = getaddrinfo(host, port, &hints, &ai);
|
int ret = getaddrinfo(host, port, &hints, &ai);
|
||||||
|
|
||||||
if (!ret)
|
|
||||||
return ai;
|
|
||||||
|
|
||||||
switch (ret) {
|
switch (ret) {
|
||||||
|
case 0:
|
||||||
|
return ai;
|
||||||
case EAI_MEMORY:
|
case EAI_MEMORY:
|
||||||
errno = ENOMEM;
|
errno = ENOMEM;
|
||||||
case EAI_SYSTEM:
|
case EAI_SYSTEM:
|
||||||
@@ -621,6 +654,13 @@ int main (int argc, char **argv)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *sockname = sk_get_name(sock.fd);
|
||||||
|
|
||||||
|
if (!sockname)
|
||||||
|
goto restart;
|
||||||
|
|
||||||
|
fprintf(stderr, "%s: connected\n", sockname);
|
||||||
|
|
||||||
fd_set_nonblock(sock.fd);
|
fd_set_nonblock(sock.fd);
|
||||||
sk_set_nodelay(sock.fd);
|
sk_set_nodelay(sock.fd);
|
||||||
sk_set_congestion(sock.fd, congestion);
|
sk_set_congestion(sock.fd, congestion);
|
||||||
@@ -628,8 +668,6 @@ int main (int argc, char **argv)
|
|||||||
struct crypto_ctx ctx;
|
struct crypto_ctx ctx;
|
||||||
gt_setup_crypto(&ctx, sock.fd, listener);
|
gt_setup_crypto(&ctx, sock.fd, listener);
|
||||||
|
|
||||||
printf("running...\n");
|
|
||||||
|
|
||||||
struct pollfd fds[] = {
|
struct pollfd fds[] = {
|
||||||
{ .fd = tun.fd, .events = POLLIN },
|
{ .fd = tun.fd, .events = POLLIN },
|
||||||
{ .fd = sock.fd, .events = POLLIN },
|
{ .fd = sock.fd, .events = POLLIN },
|
||||||
@@ -719,7 +757,7 @@ int main (int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
if (decrypt_packet(&ctx, tunw.buf, ip_size, &sock.recv)) {
|
if (decrypt_packet(&ctx, tunw.buf, ip_size, &sock.recv)) {
|
||||||
fprintf(stderr, "message could not be verified!\n");
|
fprintf(stderr, "%s: message could not be verified!\n", sockname);
|
||||||
goto restart;
|
goto restart;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -743,6 +781,11 @@ int main (int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
restart:
|
restart:
|
||||||
|
if (sockname) {
|
||||||
|
free(sockname);
|
||||||
|
sockname = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
close(sock.fd);
|
close(sock.fd);
|
||||||
sock.fd = -1;
|
sock.fd = -1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user