From patchwork Thu Jun 28 03:46:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 935929 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="nN/Ev3RJ"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41GQm65VzZz9s29 for ; Thu, 28 Jun 2018 13:50:30 +1000 (AEST) Received: from localhost ([::1]:34403 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYNwy-0001bB-Cm for incoming@patchwork.ozlabs.org; Wed, 27 Jun 2018 23:50:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46120) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYNtu-0007vX-0G for qemu-devel@nongnu.org; Wed, 27 Jun 2018 23:47:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fYNts-0000c6-PR for qemu-devel@nongnu.org; Wed, 27 Jun 2018 23:47:18 -0400 Received: from mail-qk0-x233.google.com ([2607:f8b0:400d:c09::233]:38130) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fYNts-0000bs-Kx for qemu-devel@nongnu.org; Wed, 27 Jun 2018 23:47:16 -0400 Received: by mail-qk0-x233.google.com with SMTP id y4-v6so2265320qka.5 for ; Wed, 27 Jun 2018 20:47:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qGSs521iUDJabiWn1hSPPcjVfTLm30ue5JfpgxHLu14=; b=nN/Ev3RJ54JlVnAAQJrULxqRAKTMugdWt63thLVxxAdX4BdsObLABxrxGedpteP0Tn 5kSAMvRo4OIsChRwZKczi578CcyxG3UqUUxCk0zN1+Hv7up0Y2MvlpIRGXDwuWTOBGPO cKXMGXMPrBo7/1BYyuUxUTYZGdQcVDo8Ct9QcxtrYDc8/w0Z/NMyt/fR0LJ1ojcZLmQ/ 02NpL5inoI6NzKIYt/wQ2Lx/dTywx9rjj7QOcxi5SZHGlVp1aGiEPseN+ceBUJ2t5Pv7 ElqqAH6+JPtICMj04WhHrUVvp+RIjrizPJ8By2+Q3onmUf+YXi3Bmx2EIXNRsh0CZVZ6 Ai5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=qGSs521iUDJabiWn1hSPPcjVfTLm30ue5JfpgxHLu14=; b=t6XniO3UMdSggwQhDkGouJHaMqqC0zpXjuWkd7Up8kUd2AO4pDJKfUEvRaYo/KsDS5 xsq4H/GiED5RyXqy5OJW9Tgdy8A/gbfh1TgrJAPEMkr4vsidH7OwmnDNOx/CHkFobDg+ xxM1yFMpfFaq+a6mFEt+h3zs1PciK9QGrUGtlgbCR5VFVcxaySMSXzcGf/68cP1Aa5YD U3Lj7yvjt3JcAsiEm9VHjiPf3+IyaPSmAl2Tn+ni47aj5xvFGmTnTmGnx9gF/81Xxjxa ZY+bsliupnYAGaKvyrdUrGUMW6y6di8LXRxsQBkFtWpCSCpmU2rsKReqUp2s9mb+e3b1 HSiA== X-Gm-Message-State: APt69E2MjhYVfJXSkN42nruW20IFO0b1+BH3z4h8hPNeRxs3iv87aI2Y tQmlHxNZU5GhQ1i5ZS5MA+gnOYcR X-Google-Smtp-Source: AAOMgpdyNeGkHI+1CrTVgFt3qtx98yECX0L1AvBt4swTK49hjVBkCOMih67c95uveNYj5dHM4xO8Jw== X-Received: by 2002:a37:e112:: with SMTP id c18-v6mr6401243qkm.65.1530157636066; Wed, 27 Jun 2018 20:47:16 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id e11-v6sm4125854qkb.4.2018.06.27.20.47.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Jun 2018 20:47:15 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Laurent Vivier Date: Thu, 28 Jun 2018 00:46:45 -0300 Message-Id: <20180628034652.24152-6-f4bug@amsat.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180628034652.24152-1-f4bug@amsat.org> References: <20180628034652.24152-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::233 Subject: [Qemu-devel] [PATCH v2 05/12] linux-user/strace: Dump AF_NETLINK sockaddr content X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Guido_G=C3=BCnther?= , Riku Voipio , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?b?w6k=?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé Tested-By: Guido Günther --- linux-user/syscall_defs.h | 7 +++++++ linux-user/strace.c | 34 ++++++++++++++++++++++++++++++++++ linux-user/syscall.c | 6 ++++-- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 40bb60ef4c..5a0b76721f 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -152,6 +152,13 @@ struct target_sockaddr_un { uint8_t sun_path[108]; }; +struct target_sockaddr_nl { + uint16_t nl_family; /* AF_NETLINK */ + uint16_t __pad; + uint32_t nl_pid; + uint32_t nl_groups; +}; + struct target_in_addr { uint32_t s_addr; /* big endian */ }; diff --git a/linux-user/strace.c b/linux-user/strace.c index 955fe80ef2..9e432f4ecb 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include "qemu.h" @@ -398,6 +399,12 @@ print_sockaddr(abi_ulong addr, abi_long addrlen) gemu_log("}"); break; } + case AF_NETLINK: { + struct target_sockaddr_nl *nl = (struct target_sockaddr_nl *)sa; + gemu_log("{nl_family=AF_NETLINK,nl_pid=%u,nl_groups=%u}", + nl->nl_pid, nl->nl_groups); + break; + } default: gemu_log("{sa_family=%d, sa_data={", sa->sa_family); for (i = 0; i < 13; i++) { @@ -424,6 +431,9 @@ print_socket_domain(int domain) case PF_INET: gemu_log("PF_INET"); break; + case PF_NETLINK: + gemu_log("PF_NETLINK"); + break; case PF_PACKET: gemu_log("PF_PACKET"); break; @@ -473,6 +483,30 @@ print_socket_protocol(int domain, int type, int protocol) return; } + if (domain == AF_NETLINK) { + switch (protocol) { + case NETLINK_ROUTE: + gemu_log("NETLINK_ROUTE"); + break; + case NETLINK_AUDIT: + gemu_log("NETLINK_AUDIT"); + break; + case NETLINK_NETFILTER: + gemu_log("NETLINK_NETFILTER"); + break; + case NETLINK_RDMA: + gemu_log("NETLINK_RDMA"); + break; + case NETLINK_CRYPTO: + gemu_log("NETLINK_CRYPTO"); + break; + default: + gemu_log("%d", protocol); + break; + } + return; + } + switch (protocol) { case IPPROTO_IP: gemu_log("IPPROTO_IP"); diff --git a/linux-user/syscall.c b/linux-user/syscall.c index ad40682cee..9a11f8c4a6 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -1696,8 +1696,10 @@ static inline abi_long host_to_target_sockaddr(abi_ulong target_addr, sizeof(target_saddr->sa_family)) { target_saddr->sa_family = tswap16(addr->sa_family); } - if (addr->sa_family == AF_NETLINK && len >= sizeof(struct sockaddr_nl)) { - struct sockaddr_nl *target_nl = (struct sockaddr_nl *)target_saddr; + if (addr->sa_family == AF_NETLINK && + len >= sizeof(struct target_sockaddr_nl)) { + struct target_sockaddr_nl *target_nl = + (struct target_sockaddr_nl *)target_saddr; target_nl->nl_pid = tswap32(target_nl->nl_pid); target_nl->nl_groups = tswap32(target_nl->nl_groups); } else if (addr->sa_family == AF_PACKET) {