Skip to content

Commit

Permalink
Merge pull request #1652 from nanovms/getsockopt-newoptions
Browse files Browse the repository at this point in the history
Add getsockopt support for reuseport/addr and tcp_nodelay
  • Loading branch information
sanderssj committed Jan 14, 2022
2 parents 50a9b79 + c3a488e commit 2dbf2ca
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
36 changes: 34 additions & 2 deletions src/net/netsyscall.c
Expand Up @@ -2146,6 +2146,8 @@ sysreturn setsockopt(int sockfd,
}
lwip_unlock();
break;
case SO_REUSEPORT:
goto unimplemented;
default:
goto unimplemented;
}
Expand All @@ -2159,9 +2161,9 @@ sysreturn setsockopt(int sockfd,
}
lwip_lock();
if (*((int *)optval))
tcp_nagle_enable(s->info.tcp.lw);
else
tcp_nagle_disable(s->info.tcp.lw);
else
tcp_nagle_enable(s->info.tcp.lw);
lwip_unlock();
break;
default:
Expand Down Expand Up @@ -2236,6 +2238,36 @@ sysreturn getsockopt(int sockfd, int level, int optname, void *optval, socklen_t
ret_optval.val = (s->sock.type == SOCK_STREAM) && (s->info.tcp.state == TCP_SOCK_LISTENING);
ret_optlen = sizeof(ret_optval.val);
break;
case SO_REUSEADDR:
lwip_lock();
if ((s->sock.type == SOCK_STREAM) && s->info.tcp.lw) {
ret_optval.val = !!ip_get_option(s->info.tcp.lw, SOF_REUSEADDR);
} else if (s->sock.type == SOCK_DGRAM){
ret_optval.val = !!ip_get_option(s->info.udp.lw, SOF_REUSEADDR);
} else {
lwip_unlock();
rv = -EINVAL;
goto out;
}
ret_optlen = sizeof(ret_optval.val);
lwip_unlock();
break;
case SO_REUSEPORT:
ret_optval.val = 0;
ret_optlen = sizeof(ret_optval.val);
break;
default:
goto unimplemented;
}
break;
case SOL_TCP:
switch (optname) {
case TCP_NODELAY:
lwip_lock();
ret_optval.val = tcp_nagle_disabled(s->info.tcp.lw);
ret_optlen = sizeof(ret_optval.val);
lwip_unlock();
break;
default:
goto unimplemented;
}
Expand Down
1 change: 1 addition & 0 deletions src/unix/system_structs.h
Expand Up @@ -738,6 +738,7 @@ struct io_uring_params {
#define SO_RCVBUF 8
#define SO_PRIORITY 12
#define SO_LINGER 13
#define SO_REUSEPORT 15
#define SO_ACCEPTCONN 30

#define IPV6_V6ONLY 26
Expand Down

0 comments on commit 2dbf2ca

Please sign in to comment.