Allow the preload library to use rsockets with privileged ports.
Signed-off-by: Sean Hefty <[email protected]>
---
src/preload.c | 30 ++++++------------------------
1 files changed, 6 insertions(+), 24 deletions(-)
diff --git a/src/preload.c b/src/preload.c
index c8ad747..52eaf1a 100644
--- a/src/preload.c
+++ b/src/preload.c
@@ -405,23 +405,9 @@ real:
int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
{
- struct sockaddr_in *sin;
- int fd, ret;
-
- if (fd_get(socket, &fd) == fd_rsocket) {
- sin = (struct sockaddr_in *) addr;
- if (!sin->sin_port || ntohs(sin->sin_port) > 1024)
- return rbind(fd, addr, addrlen);
-
- ret = transpose_socket(socket, fd_normal);
- if (ret < 0)
- return ret;
-
- rclose(fd);
- fd = ret;
- }
-
- return real.bind(fd, addr, addrlen);
+ int fd;
+ return (fd_get(socket, &fd) == fd_rsocket) ?
+ rbind(fd, addr, addrlen) : real.bind(fd, addr, addrlen);
}
int listen(int socket, int backlog)
@@ -582,19 +568,15 @@ static inline enum fd_type fd_fork_get(int index, int *fd)
int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
{
- struct sockaddr_in *sin;
int fd, ret;
switch (fd_get(socket, &fd)) {
case fd_fork:
return fork_active(socket, addr, addrlen);
case fd_rsocket:
- sin = (struct sockaddr_in *) addr;
- if (ntohs(sin->sin_port) > 1024) {
- ret = rconnect(fd, addr, addrlen);
- if (!ret || errno == EINPROGRESS)
- return ret;
- }
+ ret = rconnect(fd, addr, addrlen);
+ if (!ret || errno == EINPROGRESS)
+ return ret;
ret = transpose_socket(socket, fd_normal);
if (ret < 0)
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html