lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Sat, 9 Oct 2021 19:35:11 +0300
From:   Vladimir Oltean <olteanv@...il.com>
To:     Yajun Deng <yajun.deng@...ux.dev>
Cc:     davem@...emloft.net, kuba@...nel.org, netdev@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH net-next] net: procfs: add seq_puts() statement for
 dev_mcast

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@...ux.dev>
> ---

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

root@...ian:~# 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@...ian:~# 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@...ian:~# 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
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ