--- linux-user/syscall.c 2005-05-31 11:32:12.000000000 +0300 +++ linux-user/syscall.c 2005-06-02 13:30:54.225627972 +0300 @@ -571,6 +571,17 @@ } ret = get_errno(setsockopt(sockfd, level, optname, &val, sizeof(val))); break; + case IP_TOS: + val = 0; + if (optlen >= sizeof(uint32_t)) { + if (get_user(val, (uint32_t *)optval)) + return -EFAULT; + } else if (optlen >= 1) { + if (get_user(val, (uint8_t *)optval)) + return -EFAULT; + } + ret = get_errno(setsockopt(sockfd, level, optname, &val, sizeof(val))); + break; default: goto unimplemented; } @@ -675,6 +686,22 @@ break; } break; + case SOL_TCP: + switch (optname) { + case TCP_NODELAY: + if (get_user(len, (uint32_t *)optlen)) + return -EFAULT; + if (len < 0) + return -EINVAL; + ret = get_errno(getsockopt(sockfd, level, optname, optval, &len)); + if (put_user(len, optlen)) + return -EFAULT; + break; + + default: + goto unimplemented; + } + break; default: unimplemented: gemu_log("getsockopt level=%d optname=%d not yet supported\n",