On Thu, Jun 16, 2022 at 03:10:47PM +0200, Stefano Brivio wrote:
...namely, as connections are discarded or accepted. This was quite useful to debug an issue with libvirtd failing to start qemu (because passt refused the new connection) as a previous qemu instance was still active.
Signed-off-by: Stefano Brivio
--- tap.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tap.c b/tap.c index 04ceade..23414db 100644 --- a/tap.c +++ b/tap.c @@ -856,12 +856,19 @@ static void tap_sock_unix_new(struct ctx *c) { struct epoll_event ev = { 0 }; int v = INT_MAX / 2; + struct ucred ucred; + socklen_t len; + + len = sizeof(ucred);
/* Another client is already connected: accept and close right away. */ if (c->fd_tap != -1) { int discard = accept4(c->fd_tap_listen, NULL, NULL, SOCK_NONBLOCK);
+ if (!getsockopt(discard, SOL_SOCKET, SO_PEERCRED, &ucred, &len)) + info("discardingq connection from PID %i", ucred.pid); +
"discardingq"
if (discard != -1) close(discard);
@@ -870,6 +877,9 @@ static void tap_sock_unix_new(struct ctx *c)
c->fd_tap = accept4(c->fd_tap_listen, NULL, NULL, 0);
+ if (!getsockopt(c->fd_tap, SOL_SOCKET, SO_PEERCRED, &ucred, &len)) + info("accepted connection from PID %i", ucred.pid); + if (!c->low_rmem && setsockopt(c->fd_tap, SOL_SOCKET, SO_RCVBUF, &v, sizeof(v))) trace("tap: failed to set SO_RCVBUF to %i", v);
-- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson