All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guillaume Nault <gnault@redhat.com>
To: Eric Dumazet <edumazet@google.com>
Cc: David Miller <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	netdev@vger.kernel.org, David Ahern <dsahern@kernel.org>,
	Kuniyuki Iwashima <kuniyu@amazon.com>,
	Michal Kubecek <mkubecek@suse.cz>
Subject: Re: [PATCH net-next v3] tcp: Dump bound-only sockets in inet_diag.
Date: Thu, 30 Nov 2023 17:30:20 +0100	[thread overview]
Message-ID: <ZWi4nCeJTLsVt6J5@debian> (raw)
In-Reply-To: <CANn89iJ4W3DSGVm89CQ8yz=VYyLeCY4_4cOJuGULoxft8ezO-w@mail.gmail.com>

On Thu, Nov 30, 2023 at 05:17:57PM +0100, Eric Dumazet wrote:
> On Thu, Nov 30, 2023 at 4:40 PM Guillaume Nault <gnault@redhat.com> wrote:
> >
> > Walk the hashinfo->bhash2 table so that inet_diag can dump TCP sockets
> > that are bound but haven't yet called connect() or listen().
> >
> > The code is inspired by the ->lhash2 loop. However there's no manual
> > test of the source port, since this kind of filtering is already
> > handled by inet_diag_bc_sk(). Also, a maximum of 16 sockets are dumped
> > at a time, to avoid running with bh disabled for too long.
> >
> > There's no TCP state for bound but otherwise inactive sockets. Such
> > sockets normally map to TCP_CLOSE. However, "ss -l", which is supposed
> > to only dump listening sockets, actually requests the kernel to dump
> > sockets in either the TCP_LISTEN or TCP_CLOSE states. To avoid dumping
> > bound-only sockets with "ss -l", we therefore need to define a new
> > pseudo-state (TCP_BOUND_INACTIVE) that user space will be able to set
> > explicitly.
> >
> > With an IPv4, an IPv6 and an IPv6-only socket, bound respectively to
> > 40000, 64000, 60000, an updated version of iproute2 could work as
> > follow:
> >
> >   $ ss -t state bound-inactive
> >   Recv-Q   Send-Q     Local Address:Port       Peer Address:Port   Process
> >   0        0                0.0.0.0:40000           0.0.0.0:*
> >   0        0                   [::]:60000              [::]:*
> >   0        0                      *:64000                 *:*
> >
> > Signed-off-by: Guillaume Nault <gnault@redhat.com>
> > ---
> >
> > v3:
> >   * Grab sockets with sock_hold(), instead of refcount_inc_not_zero()
> >     (Kuniyuki Iwashima).
> >   * Use a new TCP pseudo-state (TCP_BOUND_INACTIVE), to dump bound-only
> >     sockets, so that "ss -l" won't print them (Eric Dumazet).
> >
> 
> 
> > +pause_bind_walk:
> > +                       spin_unlock_bh(&ibb->lock);
> > +
> > +                       res = 0;
> > +                       for (idx = 0; idx < accum; idx++) {
> > +                               if (res >= 0) {
> > +                                       res = inet_sk_diag_fill(sk_arr[idx],
> > +                                                               NULL, skb, cb,
> > +                                                               r, NLM_F_MULTI,
> > +                                                               net_admin);
> > +                                       if (res < 0)
> > +                                               num = num_arr[idx];
> > +                               }
> > +                               sock_gen_put(sk_arr[idx]);
> 
> nit: this could be a mere sock_put(), because only full sockets are
> hashed in bhash2[]

Yes, makes sense.
I'll send a v4.

> Reviewed-by: Eric Dumazet <edumazet@google.com>
> 


      reply	other threads:[~2023-11-30 16:30 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-30 15:40 [PATCH net-next v3] tcp: Dump bound-only sockets in inet_diag Guillaume Nault
2023-11-30 15:51 ` Guillaume Nault
2023-11-30 16:17 ` Eric Dumazet
2023-11-30 16:30   ` Guillaume Nault [this message]

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=ZWi4nCeJTLsVt6J5@debian \
    --to=gnault@redhat.com \
    --cc=davem@davemloft.net \
    --cc=dsahern@kernel.org \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=kuniyu@amazon.com \
    --cc=mkubecek@suse.cz \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.