On 12 July 2014 14:47, Joakim Tjernlund <joakim.tjernl...@transmode.se> wrote: > Implement conversion of the AF_PACKET sockaddr subtype > in target_to_host_sockaddr. > > Signed-off-by: Joakim Tjernlund <joakim.tjernl...@transmode.se> > --- > linux-user/syscall.c | 7 +++++++ > linux-user/syscall_defs.h | 10 ++++++++++ > 2 files changed, 17 insertions(+) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 3ef046a..a50229d 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -1140,6 +1140,13 @@ static inline abi_long target_to_host_sockaddr(struct > sockaddr *addr, > > memcpy(addr, target_saddr, len); > addr->sa_family = sa_family; > + if (sa_family == AF_PACKET) { > + struct target_sockaddr_ll *lladdr; > + > + lladdr = (struct target_sockaddr_ll *)addr; > + lladdr->sll_ifindex = tswap32(lladdr->sll_ifindex); > + lladdr->sll_hatype = tswap16(lladdr->sll_hatype); > + } > unlock_user(target_saddr, target_addr, 0); > > return 0; > diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h > index 8563027..c9e6323 100644 > --- a/linux-user/syscall_defs.h > +++ b/linux-user/syscall_defs.h > @@ -121,6 +121,16 @@ struct target_sockaddr { > uint8_t sa_data[14]; > }; > > +struct target_sockaddr_ll { > + uint16_t sll_family; /* Always AF_PACKET */ > + uint16_t sll_protocol; /* Physical layer protocol */ > + int sll_ifindex; /* Interface number */ > + uint16_t sll_hatype; /* ARP hardware type */ > + uint8_t sll_pkttype; /* Packet type */ > + uint8_t sll_halen; /* Length of address */ > + uint8_t sll_addr[8]; /* Physical layer address */ > +}; > + > struct target_sock_filter { > abi_ushort code; > uint8_t jt; > --
Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> thanks -- PMM