netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vladimir Oltean <olteanv@gmail.com>
To: Yajun Deng <yajun.deng@linux.dev>
Cc: davem@davemloft.net, kuba@kernel.org, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next] net: procfs: add seq_puts() statement for dev_mcast
Date: Sat, 9 Oct 2021 19:35:11 +0300	[thread overview]
Message-ID: <20211009163511.vayjvtn3rrteglsu@skbuf> (raw)
In-Reply-To: <20210816085757.28166-1-yajun.deng@linux.dev>

On Mon, Aug 16, 2021 at 04:57:57PM +0800, Yajun Deng wrote:
> Add seq_puts() statement for dev_mcast, make it more readable.
> As also, keep vertical alignment for {dev, ptype, dev_mcast} that
> under /proc/net.
> 
> Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
> ---

FYI, this program got broken by this commit (reverting it restores
functionality):

root@debian:~# ifstat
ifstat: /proc/net/dev: unsupported format.

Confusingly enough, the "ifstat" provided by Debian is not from iproute2:
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/tree/misc/ifstat.c
but rather a similarly named program:
https://packages.debian.org/source/bullseye/ifstat
https://github.com/matttbe/ifstat

I haven't studied how this program parses /proc/net/dev, but here's how
the kernel's output changed:

Doesn't work:

root@debian:~# cat /proc/net/dev
Interface|                            Receive                                       |                                 Transmit
         |            bytes      packets errs   drop fifo frame compressed multicast|            bytes      packets errs   drop fifo colls carrier compressed
       lo:            97400         1204    0      0    0     0          0         0            97400         1204    0      0    0     0       0          0
    bond0:                0            0    0      0    0     0          0         0                0            0    0      0    0     0       0          0
     sit0:                0            0    0      0    0     0          0         0                0            0    0      0    0     0       0          0
     eno2:          5002206         6651    0      0    0     0          0         0        105518642      1465023    0      0    0     0       0          0
     swp0:           134531         2448    0      0    0     0          0         0         99599598      1464381    0      0    0     0       0          0
     swp1:                0            0    0      0    0     0          0         0                0            0    0      0    0     0       0          0
     swp2:          4867675         4203    0      0    0     0          0         0            58134          631    0      0    0     0       0          0
    sw0p0:                0            0    0      0    0     0          0         0                0            0    0      0    0     0       0          0
    sw0p1:           124739         2448    0   1422    0     0          0         0         93741184      1464369    0      0    0     0       0          0
    sw0p2:                0            0    0      0    0     0          0         0                0            0    0      0    0     0       0          0
    sw2p0:          4850863         4203    0      0    0     0          0         0            54722          619    0      0    0     0       0          0
    sw2p1:                0            0    0      0    0     0          0         0                0            0    0      0    0     0       0          0
    sw2p2:                0            0    0      0    0     0          0         0                0            0    0      0    0     0       0          0
    sw2p3:                0            0    0      0    0     0          0         0                0            0    0      0    0     0       0          0
      br0:            10508          212    0    212    0     0          0       212         61369558       958857    0      0    0     0       0          0

Works:

root@debian:~# cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo:   13160     164    0    0    0     0          0         0    13160     164    0    0    0     0       0          0
 bond0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  sit0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  eno2:   30824     268    0    0    0     0          0         0     3332      37    0    0    0     0       0          0
  swp0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  swp1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  swp2:   30824     268    0    0    0     0          0         0     2428      27    0    0    0     0       0          0
 sw0p0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 sw0p1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 sw0p2:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 sw2p0:   29752     268    0    0    0     0          0         0     1564      17    0    0    0     0       0          0
 sw2p1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 sw2p2:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 sw2p3:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

>  net/core/net-procfs.c | 24 +++++++++++++-----------
>  1 file changed, 13 insertions(+), 11 deletions(-)
> 
> diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c
> index d8b9dbabd4a4..eab5fc88a002 100644
> --- a/net/core/net-procfs.c
> +++ b/net/core/net-procfs.c
> @@ -77,8 +77,8 @@ static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
>  	struct rtnl_link_stats64 temp;
>  	const struct rtnl_link_stats64 *stats = dev_get_stats(dev, &temp);
>  
> -	seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
> -		   "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
> +	seq_printf(seq, "%9s: %16llu %12llu %4llu %6llu %4llu %5llu %10llu %9llu "
> +		   "%16llu %12llu %4llu %6llu %4llu %5llu %7llu %10llu\n",
>  		   dev->name, stats->rx_bytes, stats->rx_packets,
>  		   stats->rx_errors,
>  		   stats->rx_dropped + stats->rx_missed_errors,
> @@ -103,11 +103,11 @@ static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
>  static int dev_seq_show(struct seq_file *seq, void *v)
>  {
>  	if (v == SEQ_START_TOKEN)
> -		seq_puts(seq, "Inter-|   Receive                            "
> -			      "                    |  Transmit\n"
> -			      " face |bytes    packets errs drop fifo frame "
> -			      "compressed multicast|bytes    packets errs "
> -			      "drop fifo colls carrier compressed\n");
> +		seq_puts(seq, "Interface|                            Receive                   "
> +			      "                    |                                 Transmit\n"
> +			      "         |            bytes      packets errs   drop fifo frame "
> +			      "compressed multicast|            bytes      packets errs "
> +			      "  drop fifo colls carrier compressed\n");
>  	else
>  		dev_seq_printf_stats(seq, v);
>  	return 0;
> @@ -259,14 +259,14 @@ static int ptype_seq_show(struct seq_file *seq, void *v)
>  	struct packet_type *pt = v;
>  
>  	if (v == SEQ_START_TOKEN)
> -		seq_puts(seq, "Type Device      Function\n");
> +		seq_puts(seq, "Type      Device      Function\n");
>  	else if (pt->dev == NULL || dev_net(pt->dev) == seq_file_net(seq)) {
>  		if (pt->type == htons(ETH_P_ALL))
>  			seq_puts(seq, "ALL ");
>  		else
>  			seq_printf(seq, "%04x", ntohs(pt->type));
>  
> -		seq_printf(seq, " %-8s %ps\n",
> +		seq_printf(seq, "      %-9s   %ps\n",
>  			   pt->dev ? pt->dev->name : "", pt->func);
>  	}
>  
> @@ -327,12 +327,14 @@ static int dev_mc_seq_show(struct seq_file *seq, void *v)
>  	struct netdev_hw_addr *ha;
>  	struct net_device *dev = v;
>  
> -	if (v == SEQ_START_TOKEN)
> +	if (v == SEQ_START_TOKEN) {
> +		seq_puts(seq, "Ifindex Interface Refcount Global_use Address\n");
>  		return 0;
> +	}
>  
>  	netif_addr_lock_bh(dev);
>  	netdev_for_each_mc_addr(ha, dev) {
> -		seq_printf(seq, "%-4d %-15s %-5d %-5d %*phN\n",
> +		seq_printf(seq, "%-7d %-9s %-8d %-10d %*phN\n",
>  			   dev->ifindex, dev->name,
>  			   ha->refcount, ha->global_use,
>  			   (int)dev->addr_len, ha->addr);
> -- 
> 2.32.0
> 

  parent reply	other threads:[~2021-10-09 16:35 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-16  8:57 [PATCH net-next] net: procfs: add seq_puts() statement for dev_mcast Yajun Deng
2021-08-18  9:20 ` patchwork-bot+netdevbpf
2021-10-09 16:35 ` Vladimir Oltean [this message]
2021-10-09 16:42   ` Vladimir Oltean
2021-10-11  2:44   ` yajun.deng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211009163511.vayjvtn3rrteglsu@skbuf \
    --to=olteanv@gmail.com \
    --cc=davem@davemloft.net \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=yajun.deng@linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).