From mboxrd@z Thu Jan 1 00:00:00 1970 From: Serhey Popovych Subject: [PATCH iproute2-next 4/4] tuntap: Use do_each_proc_net_dev() Date: Wed, 31 Jan 2018 21:49:49 +0200 Message-ID: <1517428189-29279-5-git-send-email-serhe.popovych@gmail.com> References: <1517428189-29279-1-git-send-email-serhe.popovych@gmail.com> To: netdev@vger.kernel.org Return-path: Received: from mail-lf0-f66.google.com ([209.85.215.66]:35662 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751163AbeAaTuU (ORCPT ); Wed, 31 Jan 2018 14:50:20 -0500 Received: by mail-lf0-f66.google.com with SMTP id a204so22574172lfa.2 for ; Wed, 31 Jan 2018 11:50:19 -0800 (PST) Received: from tuxracer.localdomain ([2a01:6d80::195:20:96:53]) by smtp.gmail.com with ESMTPSA id q77sm4040318lfd.17.2018.01.31.11.50.17 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 31 Jan 2018 11:50:17 -0800 (PST) In-Reply-To: <1517428189-29279-1-git-send-email-serhe.popovych@gmail.com> Sender: netdev-owner@vger.kernel.org List-ID: 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 --- 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