net: rock: Mirror F_SETFL flags to all FDs (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 15 Dec 2017 20:40:33 +0000 (15:40 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 20 Dec 2017 18:37:08 +0000 (13:37 -0500)
commit34fe31c4a130c13fd7fbed73c47a61a56afbd6b6
treefaee1563c7e269b68972593f5d6235d7dff12062
parent5bc52b2c9347120da7a72c42ae1f49bc441e72a9
net: rock: Mirror F_SETFL flags to all FDs (XCC)

When the application attempts a fcntl + F_SETFL on a Rock FD (which is a
data FD), we'll mirror those commands to the other FDs (ctl and listen).

The motivator for this is dropbear, which sets a socket O_NONBLOCK and then
polls with connect().  It expects the O_NONBLOCK set on the socket FD to
apply to the entire socket.  Recall that all of the files that make up a
Rock collectively are a socket.

Back before commit 765fc2a8270a ("Remove the O_NONBLOCK fcntl() intercept
(XCC)"), we handled O_NONBLOCK in userspace.  This commit is somewhat
similar in that we need to do special Rock processing, but we still just do
fcntls.

Rebuild glibc.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/fcntl.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/plan9_sockets.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/sys/plan9_helpers.h