linux-user/syscall: Introduce target_sockaddr_nl

Tested-By: Guido Günther <agx@sigxcpu.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20191021114857.20538-5-f4bug@amsat.org>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
Philippe Mathieu-Daudé 2019-10-21 13:48:52 +02:00 committed by Laurent Vivier
parent 0d2187c4e0
commit a47401bca7
2 changed files with 11 additions and 2 deletions

View File

@ -1496,8 +1496,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) {

View File

@ -153,6 +153,13 @@ struct target_sockaddr_un {
uint8_t sun_path[108];
};
struct target_sockaddr_nl {
abi_ushort nl_family; /* AF_NETLINK */
abi_ushort __pad;
abi_uint nl_pid;
abi_uint nl_groups;
};
struct target_in_addr {
uint32_t s_addr; /* big endian */
};