Le 27/06/2016 à 15:09, Peter Maydell a écrit : > On 26 June 2016 at 23:18, Laurent Vivier <laur...@vivier.eu> wrote: >> As we convert sockaddr for AF_PACKET family for sendto() (target to >> host) we need also to convert this for getsockname() (host to target). >> >> arping uses getsockname() to get the the interface address and uses >> this address with sendto(). >> >> Tested with: >> >> /sbin/arping -D -q -c2 -I eno1 192.168.122.88 >> >> ... >> getsockname(3, {sa_family=AF_PACKET, proto=0x806, if2, >> pkttype=PACKET_HOST, addr(6)={1, 10c37b6b9a76}, [18]) = 0 >> ... >> sendto(3, "..." 28, 0, >> {sa_family=AF_PACKET, proto=0x806, if2, pkttype=PACKET_HOST, >> addr(6)={1, ffffffffffff}, 20) = 28 >> ... >> >> Signed-off-by: Laurent Vivier <laur...@vivier.eu> >> --- >> linux-user/syscall.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/linux-user/syscall.c b/linux-user/syscall.c >> index 731926d..599b946 100644 >> --- a/linux-user/syscall.c >> +++ b/linux-user/syscall.c >> @@ -100,6 +100,7 @@ int __clone2(int (*fn)(void *), void *child_stack_base, >> #include <linux/route.h> >> #include <linux/filter.h> >> #include <linux/blkpg.h> >> +#include <netpacket/packet.h> > > Do we need the new include? We already use struct sockaddr_ll > without it.
we already use target_sockaddr_ll, not sockaddr_ll. > >> #include <linux/netlink.h> >> #ifdef CONFIG_RTNETLINK >> #include <linux/rtnetlink.h> >> @@ -1379,6 +1380,10 @@ static inline abi_long >> host_to_target_sockaddr(abi_ulong target_addr, >> struct sockaddr_nl *target_nl = (struct 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) { >> + struct sockaddr_ll *target_ll = (struct sockaddr_ll *)target_saddr; >> + target_ll->sll_ifindex = tswap32(target_ll->sll_ifindex); >> + target_ll->sll_hatype = tswap16(target_ll->sll_hatype); >> } >> unlock_user(target_saddr, target_addr, len); > > Otherwise > Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> Thanks, Laurent