[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1517428189-29279-5-git-send-email-serhe.popovych@gmail.com>
Date: Wed, 31 Jan 2018 21:49:49 +0200
From: Serhey Popovych <serhe.popovych@...il.com>
To: netdev@...r.kernel.org
Subject: [PATCH iproute2-next 4/4] tuntap: Use do_each_proc_net_dev()
Now we have helper to iterate over entries in /proc/net/dev we can
simplify and cleanup do_tunnels_list() in ip/iptuntap.c.
While there replace printf("\n") with fputc('\n', stdout) and
printf() with fputs() where string does not contain format specifiers.
Signed-off-by: Serhey Popovych <serhe.popovych@...il.com>
---
ip/iptuntap.c | 59 ++++++++++++++++++++++++---------------------------------
1 file changed, 25 insertions(+), 34 deletions(-)
diff --git a/ip/iptuntap.c b/ip/iptuntap.c
index 09f2be2..01b68ad 100644
--- a/ip/iptuntap.c
+++ b/ip/iptuntap.c
@@ -348,44 +348,35 @@ next:
globfree(&globbuf);
}
-
-static int do_show(int argc, char **argv)
+static pnd_result_t do_tuntap_list(char *name, char *stats, void *arg)
{
- DIR *dir;
- struct dirent *d;
long flags, owner = -1, group = -1;
- dir = opendir("/sys/class/net");
- if (!dir) {
- perror("opendir");
- return -1;
+ if (read_prop(name, "tun_flags", &flags))
+ return PND_NEXT;
+
+ read_prop(name, "owner", &owner);
+ read_prop(name, "group", &group);
+
+ printf("%s:", name);
+ print_flags(flags);
+ if (owner != -1)
+ printf(" user %ld", owner);
+ if (group != -1)
+ printf(" group %ld", group);
+ fputc('\n', stdout);
+ if (show_details) {
+ fputs("\tAttached to processes:", stdout);
+ show_processes(name);
+ fputc('\n', stdout);
}
- while ((d = readdir(dir))) {
- if (d->d_name[0] == '.' &&
- (d->d_name[1] == 0 || d->d_name[1] == '.'))
- continue;
-
- if (read_prop(d->d_name, "tun_flags", &flags))
- continue;
-
- read_prop(d->d_name, "owner", &owner);
- read_prop(d->d_name, "group", &group);
-
- printf("%s:", d->d_name);
- print_flags(flags);
- if (owner != -1)
- printf(" user %ld", owner);
- if (group != -1)
- printf(" group %ld", group);
- printf("\n");
- if (show_details) {
- printf("\tAttached to processes:");
- show_processes(d->d_name);
- printf("\n");
- }
- }
- closedir(dir);
- return 0;
+
+ return PND_NEXT;
+}
+
+static int do_show(int argc, char **argv)
+{
+ return do_each_proc_net_dev(do_tuntap_list, NULL);
}
int do_iptuntap(int argc, char **argv)
--
1.7.10.4
Powered by blists - more mailing lists