Skip to content

Commit

Permalink
qemu-user: Impl. setsockopt(SO_BINDTODEVICE)
Browse files Browse the repository at this point in the history
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
  • Loading branch information
joakim-tjernlund authored and Riku Voipio committed Jul 15, 2014
1 parent 27a0782 commit 451aaf6
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions linux-user/syscall.c
Expand Up @@ -1497,6 +1497,25 @@ static abi_long do_setsockopt(int sockfd, int level, int optname,
unlock_user_struct(tfprog, optval_addr, 1);
return ret;
}
case TARGET_SO_BINDTODEVICE:
{
char *dev_ifname, *addr_ifname;

if (optlen > IFNAMSIZ - 1) {
optlen = IFNAMSIZ - 1;
}
dev_ifname = lock_user(VERIFY_READ, optval_addr, optlen, 1);
if (!dev_ifname) {
return -TARGET_EFAULT;
}
optname = SO_BINDTODEVICE;
addr_ifname = alloca(IFNAMSIZ);
memcpy(addr_ifname, dev_ifname, optlen);
addr_ifname[optlen] = 0;
ret = get_errno(setsockopt(sockfd, level, optname, addr_ifname, optlen));
unlock_user (dev_ifname, optval_addr, 0);
return ret;
}
/* Options with 'int' argument. */
case TARGET_SO_DEBUG:
optname = SO_DEBUG;
Expand Down

0 comments on commit 451aaf6

Please sign in to comment.