Message ID | 20191021114857.20538-6-f4bug@amsat.org |
---|---|
State | New |
Headers | show |
Series | linux-user: strace improvements | expand |
Le 21/10/2019 à 13:48, Philippe Mathieu-Daudé a écrit : > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > Tested-By: Guido Günther <agx@sigxcpu.org> > --- > v8: use tswap32 (lvivier) > --- > linux-user/strace.c | 37 +++++++++++++++++++++++++++++++++++++ > 1 file changed, 37 insertions(+) > > diff --git a/linux-user/strace.c b/linux-user/strace.c > index fd5596a640..5fa7748427 100644 > --- a/linux-user/strace.c > +++ b/linux-user/strace.c > @@ -8,6 +8,7 @@ > #include <arpa/inet.h> > #include <netinet/tcp.h> > #include <linux/if_packet.h> > +#include <linux/netlink.h> > #include <sched.h> > #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}", > + tswap32(nl->nl_pid), tswap32(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,33 @@ print_socket_protocol(int domain, int type, int protocol) > return; > } > > + if (domain == PF_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_KOBJECT_UEVENT: > + gemu_log("NETLINK_KOBJECT_UEVENT"); > + 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"); > Reviewed-by: Laurent Vivier <laurent@vivier.eu>
diff --git a/linux-user/strace.c b/linux-user/strace.c index fd5596a640..5fa7748427 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -8,6 +8,7 @@ #include <arpa/inet.h> #include <netinet/tcp.h> #include <linux/if_packet.h> +#include <linux/netlink.h> #include <sched.h> #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}", + tswap32(nl->nl_pid), tswap32(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,33 @@ print_socket_protocol(int domain, int type, int protocol) return; } + if (domain == PF_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_KOBJECT_UEVENT: + gemu_log("NETLINK_KOBJECT_UEVENT"); + 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");