Don't show all tunnels
Signed-off-by: Adrien Gallouët <adrien@gallouet.fr>
This commit is contained in:
@@ -299,6 +299,7 @@ gt_bind(int argc, char **argv)
|
|||||||
res.ret = errno;
|
res.ret = errno;
|
||||||
break;
|
break;
|
||||||
case CTL_STATUS:
|
case CTL_STATUS:
|
||||||
|
memcpy(res.status.tun_name, tun_name, sizeof(tun_name)); // XXX
|
||||||
res.status.pid = pid;
|
res.status.pid = pid;
|
||||||
res.status.mtu = mtu;
|
res.status.mtu = mtu;
|
||||||
res.status.chacha = chacha;
|
res.status.chacha = chacha;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ struct ctl_msg {
|
|||||||
} path;
|
} path;
|
||||||
struct mud_path path_status;
|
struct mud_path path_status;
|
||||||
struct {
|
struct {
|
||||||
|
char tun_name[64];
|
||||||
long pid;
|
long pid;
|
||||||
size_t mtu;
|
size_t mtu;
|
||||||
int chacha;
|
int chacha;
|
||||||
|
|||||||
69
src/show.c
69
src/show.c
@@ -12,7 +12,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
static int
|
static int
|
||||||
gt_show_dev_status(int fd, const char *dev)
|
gt_show_print_status(int fd)
|
||||||
{
|
{
|
||||||
struct ctl_msg res, req = {.type = CTL_STATUS};
|
struct ctl_msg res, req = {.type = CTL_STATUS};
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ gt_show_dev_status(int fd, const char *dev)
|
|||||||
" %zu"
|
" %zu"
|
||||||
" %s"
|
" %s"
|
||||||
"\n",
|
"\n",
|
||||||
dev,
|
res.status.tun_name,
|
||||||
res.status.pid,
|
res.status.pid,
|
||||||
bindstr[0] ? bindstr : "-",
|
bindstr[0] ? bindstr : "-",
|
||||||
gt_get_port((struct sockaddr *)&res.status.bind),
|
gt_get_port((struct sockaddr *)&res.status.bind),
|
||||||
@@ -62,7 +62,7 @@ gt_show_dev_status(int fd, const char *dev)
|
|||||||
" %zu"
|
" %zu"
|
||||||
" %s"
|
" %s"
|
||||||
"\n",
|
"\n",
|
||||||
dev,
|
res.status.tun_name,
|
||||||
res.status.pid,
|
res.status.pid,
|
||||||
bindstr[0] ? bindstr : "-",
|
bindstr[0] ? bindstr : "-",
|
||||||
gt_get_port((struct sockaddr *)&res.status.bind),
|
gt_get_port((struct sockaddr *)&res.status.bind),
|
||||||
@@ -75,30 +75,6 @@ gt_show_dev_status(int fd, const char *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
gt_show_dev(const char *dev)
|
|
||||||
{
|
|
||||||
int fd = ctl_connect(GT_RUNDIR, dev);
|
|
||||||
|
|
||||||
if (fd < 0) {
|
|
||||||
if (fd == -1)
|
|
||||||
perror("show");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ret = gt_show_dev_status(fd, dev);
|
|
||||||
|
|
||||||
if (ret == -1)
|
|
||||||
perror(dev);
|
|
||||||
|
|
||||||
if (ret == -2)
|
|
||||||
gt_log("%s: bad reply from server\n", dev);
|
|
||||||
|
|
||||||
ctl_delete(fd);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
gt_show(int argc, char **argv)
|
gt_show(int argc, char **argv)
|
||||||
{
|
{
|
||||||
@@ -111,27 +87,34 @@ gt_show(int argc, char **argv)
|
|||||||
if (argz(showz, argc, argv))
|
if (argz(showz, argc, argv))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (dev)
|
int fd = ctl_connect(GT_RUNDIR, dev);
|
||||||
return !!gt_show_dev(dev);
|
|
||||||
|
|
||||||
DIR *dp = opendir(GT_RUNDIR);
|
if (fd < 0) {
|
||||||
|
switch (fd) {
|
||||||
if (!dp) {
|
case -1:
|
||||||
if (errno == ENOENT)
|
perror("show");
|
||||||
return 0;
|
break;
|
||||||
perror("show");
|
case -2:
|
||||||
|
gt_log("no device\n");
|
||||||
|
break;
|
||||||
|
case -3:
|
||||||
|
gt_log("please choose a device\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
gt_log("couldn't connect\n");
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ret = 0;
|
int ret = gt_show_print_status(fd);
|
||||||
struct dirent *d = NULL;
|
|
||||||
|
|
||||||
while (d = readdir(dp), d) {
|
if (ret == -2)
|
||||||
if (d->d_name[0] != '.')
|
gt_log("bad reply from server\n");
|
||||||
ret |= !!gt_show_dev(d->d_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
closedir(dp);
|
if (ret == -1)
|
||||||
|
perror("show");
|
||||||
|
|
||||||
return ret;
|
ctl_delete(fd);
|
||||||
|
|
||||||
|
return !!ret;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user