]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
refresh
authorSean Hefty <sean.hefty@intel.com>
Mon, 16 Jul 2012 22:50:21 +0000 (15:50 -0700)
committerSean Hefty <sean.hefty@intel.com>
Mon, 16 Jul 2012 22:50:21 +0000 (15:50 -0700)
meta
patches/refresh-temp [deleted file]
patches/transpose

diff --git a/meta b/meta
index e22da2b991e41f7d373d302c2ff77db7063e0ade..3ea4c37f5511b91e97e7edbb1bc523969a398401 100644 (file)
--- a/meta
+++ b/meta
@@ -1,9 +1,8 @@
 Version: 1
-Previous: 7ef87e495323c8ece7deaf0519a47506a66f35dd
-Head: e10524a237af6362e2b5c009d12393878880e79f
+Previous: 4999565e175b460c7eee1f50d26b74c3e37cb3a7
+Head: 28dd0f4ee0200748f8d4b27ea1c904402be9af4e
 Applied:
-  transpose: 4c834bc154a73e7edd6dd4a912933958ca142d8d
-  refresh-temp: e10524a237af6362e2b5c009d12393878880e79f
+  transpose: 28dd0f4ee0200748f8d4b27ea1c904402be9af4e
 Unapplied:
   fork: 454d730c27cbe7efcf9927edc0826f7f833fb95f
   waitall-buggy: c49c6b56c55385774065f5aa2704078e6ae0ceb8
diff --git a/patches/refresh-temp b/patches/refresh-temp
deleted file mode 100644 (file)
index 77d016d..0000000
+++ /dev/null
@@ -1,483 +0,0 @@
-Bottom: 454cf9a1db769bb4bf7d2c1d4b95f0a992a0aafa
-Top:    19f8849f48737cbf50102511ff14a78d39040f12
-Author: Sean Hefty <sean.hefty@intel.com>
-Date:   2012-07-16 15:50:21 -0700
-
-Refresh of transpose
-
----
-
-diff --git a/src/preload.c b/src/preload.c
-index 0d457bf..14b09b8 100644
---- a/src/preload.c
-+++ b/src/preload.c
-@@ -53,38 +53,38 @@
- #include "cma.h"
- #include "indexer.h"
--static int (*real_socket)(int domain, int type, int protocol);
--static int (*real_bind)(int socket, const struct sockaddr *addr,
--                      socklen_t addrlen);
--static int (*real_listen)(int socket, int backlog);
--static int (*real_accept)(int socket, struct sockaddr *addr,
--                        socklen_t *addrlen);
--static int (*real_connect)(int socket, const struct sockaddr *addr,
--                         socklen_t addrlen);
--static ssize_t (*real_recv)(int socket, void *buf, size_t len, int flags);
--static ssize_t (*real_recvfrom)(int socket, void *buf, size_t len, int flags,
--                              struct sockaddr *src_addr, socklen_t *addrlen);
--static ssize_t (*real_recvmsg)(int socket, struct msghdr *msg, int flags);
--static ssize_t (*real_read)(int socket, void *buf, size_t count);
--static ssize_t (*real_readv)(int socket, const struct iovec *iov, int iovcnt);
--static ssize_t (*real_send)(int socket, const void *buf, size_t len, int flags);
--static ssize_t (*real_sendto)(int socket, const void *buf, size_t len, int flags,
--                            const struct sockaddr *dest_addr, socklen_t addrlen);
--static ssize_t (*real_sendmsg)(int socket, const struct msghdr *msg, int flags);
--static ssize_t (*real_write)(int socket, const void *buf, size_t count);
--static ssize_t (*real_writev)(int socket, const struct iovec *iov, int iovcnt);
--static int (*real_poll)(struct pollfd *fds, nfds_t nfds, int timeout);
--static int (*real_shutdown)(int socket, int how);
--static int (*real_close)(int socket);
--static int (*real_getpeername)(int socket, struct sockaddr *addr,
--                             socklen_t *addrlen);
--static int (*real_getsockname)(int socket, struct sockaddr *addr,
--                             socklen_t *addrlen);
--static int (*real_setsockopt)(int socket, int level, int optname,
--                            const void *optval, socklen_t optlen);
--static int (*real_getsockopt)(int socket, int level, int optname,
--                            void *optval, socklen_t *optlen);
--static int (*real_fcntl)(int socket, int cmd, ... /* arg */);
-+struct socket_calls {
-+      int (*socket)(int domain, int type, int protocol);
-+      int (*bind)(int socket, const struct sockaddr *addr, socklen_t addrlen);
-+      int (*listen)(int socket, int backlog);
-+      int (*accept)(int socket, struct sockaddr *addr, socklen_t *addrlen);
-+      int (*connect)(int socket, const struct sockaddr *addr, socklen_t addrlen);
-+      ssize_t (*recv)(int socket, void *buf, size_t len, int flags);
-+      ssize_t (*recvfrom)(int socket, void *buf, size_t len, int flags,
-+                          struct sockaddr *src_addr, socklen_t *addrlen);
-+      ssize_t (*recvmsg)(int socket, struct msghdr *msg, int flags);
-+      ssize_t (*read)(int socket, void *buf, size_t count);
-+      ssize_t (*readv)(int socket, const struct iovec *iov, int iovcnt);
-+      ssize_t (*send)(int socket, const void *buf, size_t len, int flags);
-+      ssize_t (*sendto)(int socket, const void *buf, size_t len, int flags,
-+                        const struct sockaddr *dest_addr, socklen_t addrlen);
-+      ssize_t (*sendmsg)(int socket, const struct msghdr *msg, int flags);
-+      ssize_t (*write)(int socket, const void *buf, size_t count);
-+      ssize_t (*writev)(int socket, const struct iovec *iov, int iovcnt);
-+      int (*poll)(struct pollfd *fds, nfds_t nfds, int timeout);
-+      int (*shutdown)(int socket, int how);
-+      int (*close)(int socket);
-+      int (*getpeername)(int socket, struct sockaddr *addr, socklen_t *addrlen);
-+      int (*getsockname)(int socket, struct sockaddr *addr, socklen_t *addrlen);
-+      int (*setsockopt)(int socket, int level, int optname,
-+                        const void *optval, socklen_t optlen);
-+      int (*getsockopt)(int socket, int level, int optname,
-+                        void *optval, socklen_t *optlen);
-+      int (*fcntl)(int socket, int cmd, ... /* arg */);
-+};
-+
-+static struct socket_calls real;
-+static struct socket_calls rs;
- static struct index_map idm;
- static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
-@@ -221,29 +221,53 @@ static void init_preload(void)
-       if (init)
-               goto out;
--      real_socket = dlsym(RTLD_NEXT, "socket");
--      real_bind = dlsym(RTLD_NEXT, "bind");
--      real_listen = dlsym(RTLD_NEXT, "listen");
--      real_accept = dlsym(RTLD_NEXT, "accept");
--      real_connect = dlsym(RTLD_NEXT, "connect");
--      real_recv = dlsym(RTLD_NEXT, "recv");
--      real_recvfrom = dlsym(RTLD_NEXT, "recvfrom");
--      real_recvmsg = dlsym(RTLD_NEXT, "recvmsg");
--      real_read = dlsym(RTLD_NEXT, "read");
--      real_readv = dlsym(RTLD_NEXT, "readv");
--      real_send = dlsym(RTLD_NEXT, "send");
--      real_sendto = dlsym(RTLD_NEXT, "sendto");
--      real_sendmsg = dlsym(RTLD_NEXT, "sendmsg");
--      real_write = dlsym(RTLD_NEXT, "write");
--      real_writev = dlsym(RTLD_NEXT, "writev");
--      real_poll = dlsym(RTLD_NEXT, "poll");
--      real_shutdown = dlsym(RTLD_NEXT, "shutdown");
--      real_close = dlsym(RTLD_NEXT, "close");
--      real_getpeername = dlsym(RTLD_NEXT, "getpeername");
--      real_getsockname = dlsym(RTLD_NEXT, "getsockname");
--      real_setsockopt = dlsym(RTLD_NEXT, "setsockopt");
--      real_getsockopt = dlsym(RTLD_NEXT, "getsockopt");
--      real_fcntl = dlsym(RTLD_NEXT, "fcntl");
-+      real.socket = dlsym(RTLD_NEXT, "socket");
-+      real.bind = dlsym(RTLD_NEXT, "bind");
-+      real.listen = dlsym(RTLD_NEXT, "listen");
-+      real.accept = dlsym(RTLD_NEXT, "accept");
-+      real.connect = dlsym(RTLD_NEXT, "connect");
-+      real.recv = dlsym(RTLD_NEXT, "recv");
-+      real.recvfrom = dlsym(RTLD_NEXT, "recvfrom");
-+      real.recvmsg = dlsym(RTLD_NEXT, "recvmsg");
-+      real.read = dlsym(RTLD_NEXT, "read");
-+      real.readv = dlsym(RTLD_NEXT, "readv");
-+      real.send = dlsym(RTLD_NEXT, "send");
-+      real.sendto = dlsym(RTLD_NEXT, "sendto");
-+      real.sendmsg = dlsym(RTLD_NEXT, "sendmsg");
-+      real.write = dlsym(RTLD_NEXT, "write");
-+      real.writev = dlsym(RTLD_NEXT, "writev");
-+      real.poll = dlsym(RTLD_NEXT, "poll");
-+      real.shutdown = dlsym(RTLD_NEXT, "shutdown");
-+      real.close = dlsym(RTLD_NEXT, "close");
-+      real.getpeername = dlsym(RTLD_NEXT, "getpeername");
-+      real.getsockname = dlsym(RTLD_NEXT, "getsockname");
-+      real.setsockopt = dlsym(RTLD_NEXT, "setsockopt");
-+      real.getsockopt = dlsym(RTLD_NEXT, "getsockopt");
-+      real.fcntl = dlsym(RTLD_NEXT, "fcntl");
-+
-+      rs.socket = dlsym(RTLD_DEFAULT, "rsocket");
-+      rs.bind = dlsym(RTLD_DEFAULT, "rbind");
-+      rs.listen = dlsym(RTLD_DEFAULT, "rlisten");
-+      rs.accept = dlsym(RTLD_DEFAULT, "raccept");
-+      rs.connect = dlsym(RTLD_DEFAULT, "rconnect");
-+      rs.recv = dlsym(RTLD_DEFAULT, "rrecv");
-+      rs.recvfrom = dlsym(RTLD_DEFAULT, "rrecvfrom");
-+      rs.recvmsg = dlsym(RTLD_DEFAULT, "rrecvmsg");
-+      rs.read = dlsym(RTLD_DEFAULT, "rread");
-+      rs.readv = dlsym(RTLD_DEFAULT, "rreadv");
-+      rs.send = dlsym(RTLD_DEFAULT, "rsend");
-+      rs.sendto = dlsym(RTLD_DEFAULT, "rsendto");
-+      rs.sendmsg = dlsym(RTLD_DEFAULT, "rsendmsg");
-+      rs.write = dlsym(RTLD_DEFAULT, "rwrite");
-+      rs.writev = dlsym(RTLD_DEFAULT, "rwritev");
-+      rs.poll = dlsym(RTLD_DEFAULT, "rpoll");
-+      rs.shutdown = dlsym(RTLD_DEFAULT, "rshutdown");
-+      rs.close = dlsym(RTLD_DEFAULT, "rclose");
-+      rs.getpeername = dlsym(RTLD_DEFAULT, "rgetpeername");
-+      rs.getsockname = dlsym(RTLD_DEFAULT, "rgetsockname");
-+      rs.setsockopt = dlsym(RTLD_DEFAULT, "rsetsockopt");
-+      rs.getsockopt = dlsym(RTLD_DEFAULT, "rgetsockopt");
-+      rs.fcntl = dlsym(RTLD_DEFAULT, "rfcntl");
-       getenv_options();
-       init = 1;
-@@ -257,58 +281,62 @@ out:
-  * handle setting a few of the more common values.
-  */
- static int
--transpose_socket(int index, int *fd, enum fd_type new_type,
--      int (*socket_new)(int domain, int type, int protocol),
--      int (*close_old)(int socket),
--      int (*close_new)(int socket),
--      int (*getsockname_old)(int socket, struct sockaddr *addr,
--                             socklen_t *addrlen),
--      int (*getsockopt_old)(int socket, int level, int optname,
--                            void *optval, socklen_t *optlen),
--      int (*setsockopt_new)(int socket, int level, int optname,
--                            const void *optval, socklen_t optlen),
--      int (*fcntl_old)(int socket, int cmd, ... /* arg */),
--      int (*fcntl_new)(int socket, int cmd, ... /* arg */))
-+transpose_socket(int index, int *fd, enum fd_type new_type)
- {
-       socklen_t len = 0;
-       int new_fd, param, ret;
--      ret = getsockname_old(*fd, NULL, &len);
-+      ret = new_type == fd_rsocket ?
-+            real.getsockname(*fd, NULL, &len) : rgetsockname(*fd, NULL, &len);
-       if (ret)
-               return ret;
-       param = (len == sizeof(struct sockaddr_in6)) ? PF_INET6 : PF_INET;
--      new_fd = socket_new(param, SOCK_STREAM, 0);
-+      new_fd = new_type == fd_rsocket ?
-+               rsocket(param, SOCK_STREAM, 0) : socket(param, SOCK_STREAM, 0);
-       if (new_fd < 0)
-               return new_fd;
--      ret = fcntl_old(*fd, F_GETFL);
--      if (ret > 0)
--              ret = fcntl_new(new_fd, F_SETFL, ret);
-+      ret = new_type == fd_rsocket ?
-+            real.fcntl(*fd, F_GETFL) : rcntl(*fd, F_GETFL);
-+      if (ret > 0) {
-+              ret = new_type == fd_rsocket ?
-+                    rfcntl(new_fd, F_SETFL, ret) : real.fcntl(new_fd, F_SETFL, ret);
-+      }
-       if (ret)
-               goto err;
-       len = sizeof param;
--      ret = getsockopt_old(*fd, SOL_SOCKET, SO_REUSEADDR, &param, &len);
--      if (param && !ret)
--              ret = setsockopt_new(new_fd, SOL_SOCKET, SO_REUSEADDR, &param, len);
-+      ret = new_type == fd_rsocket ?
-+            real.getsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, &param, &len) :
-+            rgetsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, &param, &len);
-+      if (param && !ret) {
-+              ret = new_type == fd_rsocket ?
-+                    rsetsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, &param, len) :
-+                    real.setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, &param, len);
-+      }
-       if (ret)
-               goto err;
-       len = sizeof param;
--      ret = getsockopt_old(*fd, IPPROTO_TCP, TCP_NODELAY, &param, &len);
--      if (param && !ret)
--              ret = setsockopt_new(new_fd, IPPROTO_TCP, TCP_NODELAY, &param, len);
-+      ret = new_type == fd_rsocket ?
-+            real.getsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, &param, &len) :
-+            rgetsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, &param, &len);
-+      if (param && !ret) {
-+              ret = new_type == fd_rsocket ?
-+                    rsetsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, &param, len) :
-+                    real.setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, &param, len);
-+      }
-       if (ret)
-               goto err;
--      close_old(*fd);
-+      new_type == fd_rsocket ? rclose(*fd) : real.close(*fd);
-       fd_store(socket, new_fd, new_type);
-       *fd = new_fd;
-       return 0;
- err:
--      close_new(new_fd);
-+      new_type == fd_rsocket ? real.close(new_fd) : rclose(new_fd);
-       return ret;
- }
-@@ -350,7 +378,7 @@ int socket(int domain, int type, int protocol)
-       }
-       fd_close(index, &ret);
- real:
--      return real_socket(domain, type, protocol);
-+      return real.socket(domain, type, protocol);
- }
- int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
-@@ -363,22 +391,19 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
-               if (!sin->sin_port || ntohs(sin->sin_port) > 1024)
-                       return rbind(fd, addr, addrlen);
--              ret = transpose_socket(socket, &fd, fd_normal, real_socket,
--                                     rclose, real_close, rgetsockname,
--                                     rgetsockopt, real_setsockopt,
--                                     rfcntl, real_fcntl);
-+              ret = transpose_socket(socket, &fd, fd_normal);
-               if (ret)
-                       return ret;
-       }
--      return real_bind(fd, addr, addrlen);
-+      return real.bind(fd, addr, addrlen);
- }
- int listen(int socket, int backlog)
- {
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
--              rlisten(fd, backlog) : real_listen(fd, backlog);
-+              rlisten(fd, backlog) : real.listen(fd, backlog);
- }
- int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
-@@ -399,7 +424,7 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
-               fd_store(index, ret, fd_rsocket);
-               return index;
-       } else {
--              return real_accept(fd, addr, addrlen);
-+              return real.accept(fd, addr, addrlen);
-       }
- }
-@@ -416,22 +441,19 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
-                               return ret;
-               }
--              ret = transpose_socket(socket, &fd, fd_normal, real_socket,
--                                     rclose, real_close, rgetsockname,
--                                     rgetsockopt, real_setsockopt,
--                                     rfcntl, real_fcntl);
-+              ret = transpose_socket(socket, &fd, fd_normal);
-               if (ret)
-                       return ret;
-       }
--      return real_connect(fd, addr, addrlen);
-+      return real.connect(fd, addr, addrlen);
- }
- ssize_t recv(int socket, void *buf, size_t len, int flags)
- {
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
--              rrecv(fd, buf, len, flags) : real_recv(fd, buf, len, flags);
-+              rrecv(fd, buf, len, flags) : real.recv(fd, buf, len, flags);
- }
- ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
-@@ -440,14 +462,14 @@ ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
-               rrecvfrom(fd, buf, len, flags, src_addr, addrlen) :
--              real_recvfrom(fd, buf, len, flags, src_addr, addrlen);
-+              real.recvfrom(fd, buf, len, flags, src_addr, addrlen);
- }
- ssize_t recvmsg(int socket, struct msghdr *msg, int flags)
- {
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
--              rrecvmsg(fd, msg, flags) : real_recvmsg(fd, msg, flags);
-+              rrecvmsg(fd, msg, flags) : real.recvmsg(fd, msg, flags);
- }
- ssize_t read(int socket, void *buf, size_t count)
-@@ -455,7 +477,7 @@ ssize_t read(int socket, void *buf, size_t count)
-       int fd;
-       init_preload();
-       return (fd_get(socket, &fd) == fd_rsocket) ?
--              rread(fd, buf, count) : real_read(fd, buf, count);
-+              rread(fd, buf, count) : real.read(fd, buf, count);
- }
- ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
-@@ -463,14 +485,14 @@ ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
-       int fd;
-       init_preload();
-       return (fd_get(socket, &fd) == fd_rsocket) ?
--              rreadv(fd, iov, iovcnt) : real_readv(fd, iov, iovcnt);
-+              rreadv(fd, iov, iovcnt) : real.readv(fd, iov, iovcnt);
- }
- ssize_t send(int socket, const void *buf, size_t len, int flags)
- {
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
--              rsend(fd, buf, len, flags) : real_send(fd, buf, len, flags);
-+              rsend(fd, buf, len, flags) : real.send(fd, buf, len, flags);
- }
- ssize_t sendto(int socket, const void *buf, size_t len, int flags,
-@@ -479,14 +501,14 @@ ssize_t sendto(int socket, const void *buf, size_t len, int flags,
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
-               rsendto(fd, buf, len, flags, dest_addr, addrlen) :
--              real_sendto(fd, buf, len, flags, dest_addr, addrlen);
-+              real.sendto(fd, buf, len, flags, dest_addr, addrlen);
- }
- ssize_t sendmsg(int socket, const struct msghdr *msg, int flags)
- {
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
--              rsendmsg(fd, msg, flags) : real_sendmsg(fd, msg, flags);
-+              rsendmsg(fd, msg, flags) : real.sendmsg(fd, msg, flags);
- }
- ssize_t write(int socket, const void *buf, size_t count)
-@@ -494,7 +516,7 @@ ssize_t write(int socket, const void *buf, size_t count)
-       int fd;
-       init_preload();
-       return (fd_get(socket, &fd) == fd_rsocket) ?
--              rwrite(fd, buf, count) : real_write(fd, buf, count);
-+              rwrite(fd, buf, count) : real.write(fd, buf, count);
- }
- ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
-@@ -502,7 +524,7 @@ ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
-       int fd;
-       init_preload();
-       return (fd_get(socket, &fd) == fd_rsocket) ?
--              rwritev(fd, iov, iovcnt) : real_writev(fd, iov, iovcnt);
-+              rwritev(fd, iov, iovcnt) : real.writev(fd, iov, iovcnt);
- }
- static struct pollfd *fds_alloc(nfds_t nfds)
-@@ -532,7 +554,7 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout)
-                       goto use_rpoll;
-       }
--      return real_poll(fds, nfds, timeout);
-+      return real.poll(fds, nfds, timeout);
- use_rpoll:
-       rfds = fds_alloc(nfds);
-@@ -637,14 +659,14 @@ int shutdown(int socket, int how)
- {
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
--              rshutdown(fd, how) : real_shutdown(fd, how);
-+              rshutdown(fd, how) : real.shutdown(fd, how);
- }
- int close(int socket)
- {
-       int fd;
-       init_preload();
--      return (fd_close(socket, &fd) == fd_rsocket) ? rclose(fd) : real_close(fd);
-+      return (fd_close(socket, &fd) == fd_rsocket) ? rclose(fd) : real.close(fd);
- }
- int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen)
-@@ -652,7 +674,7 @@ int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen)
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
-               rgetpeername(fd, addr, addrlen) :
--              real_getpeername(fd, addr, addrlen);
-+              real.getpeername(fd, addr, addrlen);
- }
- int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen)
-@@ -660,7 +682,7 @@ int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen)
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
-               rgetsockname(fd, addr, addrlen) :
--              real_getsockname(fd, addr, addrlen);
-+              real.getsockname(fd, addr, addrlen);
- }
- int setsockopt(int socket, int level, int optname,
-@@ -669,7 +691,7 @@ int setsockopt(int socket, int level, int optname,
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
-               rsetsockopt(fd, level, optname, optval, optlen) :
--              real_setsockopt(fd, level, optname, optval, optlen);
-+              real.setsockopt(fd, level, optname, optval, optlen);
- }
- int getsockopt(int socket, int level, int optname,
-@@ -678,7 +700,7 @@ int getsockopt(int socket, int level, int optname,
-       int fd;
-       return (fd_get(socket, &fd) == fd_rsocket) ?
-               rgetsockopt(fd, level, optname, optval, optlen) :
--              real_getsockopt(fd, level, optname, optval, optlen);
-+              real.getsockopt(fd, level, optname, optval, optlen);
- }
- int fcntl(int socket, int cmd, ... /* arg */)
-@@ -697,7 +719,7 @@ int fcntl(int socket, int cmd, ... /* arg */)
-       case F_GETSIG:
-       case F_GETLEASE:
-               ret = (fd_get(socket, &fd) == fd_rsocket) ?
--                      rfcntl(fd, cmd) : real_fcntl(fd, cmd);
-+                      rfcntl(fd, cmd) : real.fcntl(fd, cmd);
-               break;
-       case F_DUPFD:
-       /*case F_DUPFD_CLOEXEC:*/
-@@ -709,12 +731,12 @@ int fcntl(int socket, int cmd, ... /* arg */)
-       case F_NOTIFY:
-               lparam = va_arg(args, long);
-               ret = (fd_get(socket, &fd) == fd_rsocket) ?
--                      rfcntl(fd, cmd, lparam) : real_fcntl(fd, cmd, lparam);
-+                      rfcntl(fd, cmd, lparam) : real.fcntl(fd, cmd, lparam);
-               break;
-       default:
-               pparam = va_arg(args, void *);
-               ret = (fd_get(socket, &fd) == fd_rsocket) ?
--                      rfcntl(fd, cmd, pparam) : real_fcntl(fd, cmd, pparam);
-+                      rfcntl(fd, cmd, pparam) : real.fcntl(fd, cmd, pparam);
-               break;
-       }
-       va_end(args);
index eac9025db85e2e260ecb2e90f037616aaad3687f..83515af9b6cf8a58025652da744feafb35bb742d 100644 (file)
@@ -1,5 +1,5 @@
 Bottom: 7ec243f3149e9a1ff1d5183f18e30d2458e354d6
-Top:    454cf9a1db769bb4bf7d2c1d4b95f0a992a0aafa
+Top:    19f8849f48737cbf50102511ff14a78d39040f12
 Author: Sean Hefty <sean.hefty@intel.com>
 Date:   2012-07-16 14:17:58 -0700
 
@@ -17,10 +17,158 @@ Signed-off-by: Sean Hefty <sean.hefty@intel.com>
 ---
 
 diff --git a/src/preload.c b/src/preload.c
-index 2750b30..0d457bf 100644
+index 2750b30..14b09b8 100644
 --- a/src/preload.c
 +++ b/src/preload.c
-@@ -252,51 +252,63 @@ out:
+@@ -53,38 +53,38 @@
+ #include "cma.h"
+ #include "indexer.h"
+-static int (*real_socket)(int domain, int type, int protocol);
+-static int (*real_bind)(int socket, const struct sockaddr *addr,
+-                      socklen_t addrlen);
+-static int (*real_listen)(int socket, int backlog);
+-static int (*real_accept)(int socket, struct sockaddr *addr,
+-                        socklen_t *addrlen);
+-static int (*real_connect)(int socket, const struct sockaddr *addr,
+-                         socklen_t addrlen);
+-static ssize_t (*real_recv)(int socket, void *buf, size_t len, int flags);
+-static ssize_t (*real_recvfrom)(int socket, void *buf, size_t len, int flags,
+-                              struct sockaddr *src_addr, socklen_t *addrlen);
+-static ssize_t (*real_recvmsg)(int socket, struct msghdr *msg, int flags);
+-static ssize_t (*real_read)(int socket, void *buf, size_t count);
+-static ssize_t (*real_readv)(int socket, const struct iovec *iov, int iovcnt);
+-static ssize_t (*real_send)(int socket, const void *buf, size_t len, int flags);
+-static ssize_t (*real_sendto)(int socket, const void *buf, size_t len, int flags,
+-                            const struct sockaddr *dest_addr, socklen_t addrlen);
+-static ssize_t (*real_sendmsg)(int socket, const struct msghdr *msg, int flags);
+-static ssize_t (*real_write)(int socket, const void *buf, size_t count);
+-static ssize_t (*real_writev)(int socket, const struct iovec *iov, int iovcnt);
+-static int (*real_poll)(struct pollfd *fds, nfds_t nfds, int timeout);
+-static int (*real_shutdown)(int socket, int how);
+-static int (*real_close)(int socket);
+-static int (*real_getpeername)(int socket, struct sockaddr *addr,
+-                             socklen_t *addrlen);
+-static int (*real_getsockname)(int socket, struct sockaddr *addr,
+-                             socklen_t *addrlen);
+-static int (*real_setsockopt)(int socket, int level, int optname,
+-                            const void *optval, socklen_t optlen);
+-static int (*real_getsockopt)(int socket, int level, int optname,
+-                            void *optval, socklen_t *optlen);
+-static int (*real_fcntl)(int socket, int cmd, ... /* arg */);
++struct socket_calls {
++      int (*socket)(int domain, int type, int protocol);
++      int (*bind)(int socket, const struct sockaddr *addr, socklen_t addrlen);
++      int (*listen)(int socket, int backlog);
++      int (*accept)(int socket, struct sockaddr *addr, socklen_t *addrlen);
++      int (*connect)(int socket, const struct sockaddr *addr, socklen_t addrlen);
++      ssize_t (*recv)(int socket, void *buf, size_t len, int flags);
++      ssize_t (*recvfrom)(int socket, void *buf, size_t len, int flags,
++                          struct sockaddr *src_addr, socklen_t *addrlen);
++      ssize_t (*recvmsg)(int socket, struct msghdr *msg, int flags);
++      ssize_t (*read)(int socket, void *buf, size_t count);
++      ssize_t (*readv)(int socket, const struct iovec *iov, int iovcnt);
++      ssize_t (*send)(int socket, const void *buf, size_t len, int flags);
++      ssize_t (*sendto)(int socket, const void *buf, size_t len, int flags,
++                        const struct sockaddr *dest_addr, socklen_t addrlen);
++      ssize_t (*sendmsg)(int socket, const struct msghdr *msg, int flags);
++      ssize_t (*write)(int socket, const void *buf, size_t count);
++      ssize_t (*writev)(int socket, const struct iovec *iov, int iovcnt);
++      int (*poll)(struct pollfd *fds, nfds_t nfds, int timeout);
++      int (*shutdown)(int socket, int how);
++      int (*close)(int socket);
++      int (*getpeername)(int socket, struct sockaddr *addr, socklen_t *addrlen);
++      int (*getsockname)(int socket, struct sockaddr *addr, socklen_t *addrlen);
++      int (*setsockopt)(int socket, int level, int optname,
++                        const void *optval, socklen_t optlen);
++      int (*getsockopt)(int socket, int level, int optname,
++                        void *optval, socklen_t *optlen);
++      int (*fcntl)(int socket, int cmd, ... /* arg */);
++};
++
++static struct socket_calls real;
++static struct socket_calls rs;
+ static struct index_map idm;
+ static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
+@@ -221,29 +221,53 @@ static void init_preload(void)
+       if (init)
+               goto out;
+-      real_socket = dlsym(RTLD_NEXT, "socket");
+-      real_bind = dlsym(RTLD_NEXT, "bind");
+-      real_listen = dlsym(RTLD_NEXT, "listen");
+-      real_accept = dlsym(RTLD_NEXT, "accept");
+-      real_connect = dlsym(RTLD_NEXT, "connect");
+-      real_recv = dlsym(RTLD_NEXT, "recv");
+-      real_recvfrom = dlsym(RTLD_NEXT, "recvfrom");
+-      real_recvmsg = dlsym(RTLD_NEXT, "recvmsg");
+-      real_read = dlsym(RTLD_NEXT, "read");
+-      real_readv = dlsym(RTLD_NEXT, "readv");
+-      real_send = dlsym(RTLD_NEXT, "send");
+-      real_sendto = dlsym(RTLD_NEXT, "sendto");
+-      real_sendmsg = dlsym(RTLD_NEXT, "sendmsg");
+-      real_write = dlsym(RTLD_NEXT, "write");
+-      real_writev = dlsym(RTLD_NEXT, "writev");
+-      real_poll = dlsym(RTLD_NEXT, "poll");
+-      real_shutdown = dlsym(RTLD_NEXT, "shutdown");
+-      real_close = dlsym(RTLD_NEXT, "close");
+-      real_getpeername = dlsym(RTLD_NEXT, "getpeername");
+-      real_getsockname = dlsym(RTLD_NEXT, "getsockname");
+-      real_setsockopt = dlsym(RTLD_NEXT, "setsockopt");
+-      real_getsockopt = dlsym(RTLD_NEXT, "getsockopt");
+-      real_fcntl = dlsym(RTLD_NEXT, "fcntl");
++      real.socket = dlsym(RTLD_NEXT, "socket");
++      real.bind = dlsym(RTLD_NEXT, "bind");
++      real.listen = dlsym(RTLD_NEXT, "listen");
++      real.accept = dlsym(RTLD_NEXT, "accept");
++      real.connect = dlsym(RTLD_NEXT, "connect");
++      real.recv = dlsym(RTLD_NEXT, "recv");
++      real.recvfrom = dlsym(RTLD_NEXT, "recvfrom");
++      real.recvmsg = dlsym(RTLD_NEXT, "recvmsg");
++      real.read = dlsym(RTLD_NEXT, "read");
++      real.readv = dlsym(RTLD_NEXT, "readv");
++      real.send = dlsym(RTLD_NEXT, "send");
++      real.sendto = dlsym(RTLD_NEXT, "sendto");
++      real.sendmsg = dlsym(RTLD_NEXT, "sendmsg");
++      real.write = dlsym(RTLD_NEXT, "write");
++      real.writev = dlsym(RTLD_NEXT, "writev");
++      real.poll = dlsym(RTLD_NEXT, "poll");
++      real.shutdown = dlsym(RTLD_NEXT, "shutdown");
++      real.close = dlsym(RTLD_NEXT, "close");
++      real.getpeername = dlsym(RTLD_NEXT, "getpeername");
++      real.getsockname = dlsym(RTLD_NEXT, "getsockname");
++      real.setsockopt = dlsym(RTLD_NEXT, "setsockopt");
++      real.getsockopt = dlsym(RTLD_NEXT, "getsockopt");
++      real.fcntl = dlsym(RTLD_NEXT, "fcntl");
++
++      rs.socket = dlsym(RTLD_DEFAULT, "rsocket");
++      rs.bind = dlsym(RTLD_DEFAULT, "rbind");
++      rs.listen = dlsym(RTLD_DEFAULT, "rlisten");
++      rs.accept = dlsym(RTLD_DEFAULT, "raccept");
++      rs.connect = dlsym(RTLD_DEFAULT, "rconnect");
++      rs.recv = dlsym(RTLD_DEFAULT, "rrecv");
++      rs.recvfrom = dlsym(RTLD_DEFAULT, "rrecvfrom");
++      rs.recvmsg = dlsym(RTLD_DEFAULT, "rrecvmsg");
++      rs.read = dlsym(RTLD_DEFAULT, "rread");
++      rs.readv = dlsym(RTLD_DEFAULT, "rreadv");
++      rs.send = dlsym(RTLD_DEFAULT, "rsend");
++      rs.sendto = dlsym(RTLD_DEFAULT, "rsendto");
++      rs.sendmsg = dlsym(RTLD_DEFAULT, "rsendmsg");
++      rs.write = dlsym(RTLD_DEFAULT, "rwrite");
++      rs.writev = dlsym(RTLD_DEFAULT, "rwritev");
++      rs.poll = dlsym(RTLD_DEFAULT, "rpoll");
++      rs.shutdown = dlsym(RTLD_DEFAULT, "rshutdown");
++      rs.close = dlsym(RTLD_DEFAULT, "rclose");
++      rs.getpeername = dlsym(RTLD_DEFAULT, "rgetpeername");
++      rs.getsockname = dlsym(RTLD_DEFAULT, "rgetsockname");
++      rs.setsockopt = dlsym(RTLD_DEFAULT, "rsetsockopt");
++      rs.getsockopt = dlsym(RTLD_DEFAULT, "rgetsockopt");
++      rs.fcntl = dlsym(RTLD_DEFAULT, "rfcntl");
+       getenv_options();
+       init = 1;
+@@ -252,51 +276,67 @@ out:
  }
  
  /*
@@ -33,93 +181,304 @@ index 2750b30..0d457bf 100644
   */
 -static int socket_fallback(int socket, int *fd)
 +static int
-+transpose_socket(int index, int *fd, enum fd_type new_type,
-+      int (*socket_new)(int domain, int type, int protocol),
-+      int (*close_old)(int socket),
-+      int (*close_new)(int socket),
-+      int (*getsockname_old)(int socket, struct sockaddr *addr,
-+                             socklen_t *addrlen),
-+      int (*getsockopt_old)(int socket, int level, int optname,
-+                            void *optval, socklen_t *optlen),
-+      int (*setsockopt_new)(int socket, int level, int optname,
-+                            const void *optval, socklen_t optlen),
-+      int (*fcntl_old)(int socket, int cmd, ... /* arg */),
-+      int (*fcntl_new)(int socket, int cmd, ... /* arg */))
++transpose_socket(int index, int *fd, enum fd_type new_type)
  {
        socklen_t len = 0;
        int new_fd, param, ret;
  
 -      ret = rgetsockname(*fd, NULL, &len);
-+      ret = getsockname_old(*fd, NULL, &len);
++      ret = new_type == fd_rsocket ?
++            real.getsockname(*fd, NULL, &len) : rgetsockname(*fd, NULL, &len);
        if (ret)
                return ret;
  
        param = (len == sizeof(struct sockaddr_in6)) ? PF_INET6 : PF_INET;
 -      new_fd = real_socket(param, SOCK_STREAM, IPPROTO_TCP);
-+      new_fd = socket_new(param, SOCK_STREAM, 0);
++      new_fd = new_type == fd_rsocket ?
++               rsocket(param, SOCK_STREAM, 0) : socket(param, SOCK_STREAM, 0);
        if (new_fd < 0)
                return new_fd;
  
 -      ret = rfcntl(*fd, F_GETFL);
-+      ret = fcntl_old(*fd, F_GETFL);
-       if (ret > 0)
+-      if (ret > 0)
 -              ret = real_fcntl(new_fd, F_SETFL, ret);
-+              ret = fcntl_new(new_fd, F_SETFL, ret);
++      ret = new_type == fd_rsocket ?
++            real.fcntl(*fd, F_GETFL) : rcntl(*fd, F_GETFL);
++      if (ret > 0) {
++              ret = new_type == fd_rsocket ?
++                    rfcntl(new_fd, F_SETFL, ret) : real.fcntl(new_fd, F_SETFL, ret);
++      }
        if (ret)
                goto err;
  
        len = sizeof param;
 -      ret = rgetsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, &param, &len);
-+      ret = getsockopt_old(*fd, SOL_SOCKET, SO_REUSEADDR, &param, &len);
-       if (param && !ret)
+-      if (param && !ret)
 -              ret = real_setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, &param, len);
-+              ret = setsockopt_new(new_fd, SOL_SOCKET, SO_REUSEADDR, &param, len);
++      ret = new_type == fd_rsocket ?
++            real.getsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, &param, &len) :
++            rgetsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, &param, &len);
++      if (param && !ret) {
++              ret = new_type == fd_rsocket ?
++                    rsetsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, &param, len) :
++                    real.setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, &param, len);
++      }
        if (ret)
                goto err;
  
        len = sizeof param;
 -      ret = rgetsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, &param, &len);
-+      ret = getsockopt_old(*fd, IPPROTO_TCP, TCP_NODELAY, &param, &len);
-       if (param && !ret)
+-      if (param && !ret)
 -              ret = real_setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, &param, len);
-+              ret = setsockopt_new(new_fd, IPPROTO_TCP, TCP_NODELAY, &param, len);
++      ret = new_type == fd_rsocket ?
++            real.getsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, &param, &len) :
++            rgetsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, &param, &len);
++      if (param && !ret) {
++              ret = new_type == fd_rsocket ?
++                    rsetsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, &param, len) :
++                    real.setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, &param, len);
++      }
        if (ret)
                goto err;
  
 -      rclose(*fd);
 -      fd_store(socket, new_fd, fd_normal);
-+      close_old(*fd);
++      new_type == fd_rsocket ? rclose(*fd) : real.close(*fd);
 +      fd_store(socket, new_fd, new_type);
        *fd = new_fd;
        return 0;
  
  err:
 -      real_close(new_fd);
-+      close_new(new_fd);
++      new_type == fd_rsocket ? real.close(new_fd) : rclose(new_fd);
        return ret;
  }
  
-@@ -351,7 +363,10 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -338,7 +378,7 @@ int socket(int domain, int type, int protocol)
+       }
+       fd_close(index, &ret);
+ real:
+-      return real_socket(domain, type, protocol);
++      return real.socket(domain, type, protocol);
+ }
+ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -351,19 +391,19 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
                if (!sin->sin_port || ntohs(sin->sin_port) > 1024)
                        return rbind(fd, addr, addrlen);
  
 -              ret = socket_fallback(socket, &fd);
-+              ret = transpose_socket(socket, &fd, fd_normal, real_socket,
-+                                     rclose, real_close, rgetsockname,
-+                                     rgetsockopt, real_setsockopt,
-+                                     rfcntl, real_fcntl);
++              ret = transpose_socket(socket, &fd, fd_normal);
                if (ret)
                        return ret;
        }
-@@ -401,7 +416,10 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+-      return real_bind(fd, addr, addrlen);
++      return real.bind(fd, addr, addrlen);
+ }
+ int listen(int socket, int backlog)
+ {
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rlisten(fd, backlog) : real_listen(fd, backlog);
++              rlisten(fd, backlog) : real.listen(fd, backlog);
+ }
+ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -384,7 +424,7 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
+               fd_store(index, ret, fd_rsocket);
+               return index;
+       } else {
+-              return real_accept(fd, addr, addrlen);
++              return real.accept(fd, addr, addrlen);
+       }
+ }
+@@ -401,19 +441,19 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
                                return ret;
                }
  
 -              ret = socket_fallback(socket, &fd);
-+              ret = transpose_socket(socket, &fd, fd_normal, real_socket,
-+                                     rclose, real_close, rgetsockname,
-+                                     rgetsockopt, real_setsockopt,
-+                                     rfcntl, real_fcntl);
++              ret = transpose_socket(socket, &fd, fd_normal);
                if (ret)
                        return ret;
        }
+-      return real_connect(fd, addr, addrlen);
++      return real.connect(fd, addr, addrlen);
+ }
+ ssize_t recv(int socket, void *buf, size_t len, int flags)
+ {
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rrecv(fd, buf, len, flags) : real_recv(fd, buf, len, flags);
++              rrecv(fd, buf, len, flags) : real.recv(fd, buf, len, flags);
+ }
+ ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
+@@ -422,14 +462,14 @@ ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+               rrecvfrom(fd, buf, len, flags, src_addr, addrlen) :
+-              real_recvfrom(fd, buf, len, flags, src_addr, addrlen);
++              real.recvfrom(fd, buf, len, flags, src_addr, addrlen);
+ }
+ ssize_t recvmsg(int socket, struct msghdr *msg, int flags)
+ {
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rrecvmsg(fd, msg, flags) : real_recvmsg(fd, msg, flags);
++              rrecvmsg(fd, msg, flags) : real.recvmsg(fd, msg, flags);
+ }
+ ssize_t read(int socket, void *buf, size_t count)
+@@ -437,7 +477,7 @@ ssize_t read(int socket, void *buf, size_t count)
+       int fd;
+       init_preload();
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rread(fd, buf, count) : real_read(fd, buf, count);
++              rread(fd, buf, count) : real.read(fd, buf, count);
+ }
+ ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
+@@ -445,14 +485,14 @@ ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
+       int fd;
+       init_preload();
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rreadv(fd, iov, iovcnt) : real_readv(fd, iov, iovcnt);
++              rreadv(fd, iov, iovcnt) : real.readv(fd, iov, iovcnt);
+ }
+ ssize_t send(int socket, const void *buf, size_t len, int flags)
+ {
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rsend(fd, buf, len, flags) : real_send(fd, buf, len, flags);
++              rsend(fd, buf, len, flags) : real.send(fd, buf, len, flags);
+ }
+ ssize_t sendto(int socket, const void *buf, size_t len, int flags,
+@@ -461,14 +501,14 @@ ssize_t sendto(int socket, const void *buf, size_t len, int flags,
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+               rsendto(fd, buf, len, flags, dest_addr, addrlen) :
+-              real_sendto(fd, buf, len, flags, dest_addr, addrlen);
++              real.sendto(fd, buf, len, flags, dest_addr, addrlen);
+ }
+ ssize_t sendmsg(int socket, const struct msghdr *msg, int flags)
+ {
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rsendmsg(fd, msg, flags) : real_sendmsg(fd, msg, flags);
++              rsendmsg(fd, msg, flags) : real.sendmsg(fd, msg, flags);
+ }
+ ssize_t write(int socket, const void *buf, size_t count)
+@@ -476,7 +516,7 @@ ssize_t write(int socket, const void *buf, size_t count)
+       int fd;
+       init_preload();
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rwrite(fd, buf, count) : real_write(fd, buf, count);
++              rwrite(fd, buf, count) : real.write(fd, buf, count);
+ }
+ ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
+@@ -484,7 +524,7 @@ ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
+       int fd;
+       init_preload();
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rwritev(fd, iov, iovcnt) : real_writev(fd, iov, iovcnt);
++              rwritev(fd, iov, iovcnt) : real.writev(fd, iov, iovcnt);
+ }
+ static struct pollfd *fds_alloc(nfds_t nfds)
+@@ -514,7 +554,7 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout)
+                       goto use_rpoll;
+       }
+-      return real_poll(fds, nfds, timeout);
++      return real.poll(fds, nfds, timeout);
+ use_rpoll:
+       rfds = fds_alloc(nfds);
+@@ -619,14 +659,14 @@ int shutdown(int socket, int how)
+ {
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rshutdown(fd, how) : real_shutdown(fd, how);
++              rshutdown(fd, how) : real.shutdown(fd, how);
+ }
+ int close(int socket)
+ {
+       int fd;
+       init_preload();
+-      return (fd_close(socket, &fd) == fd_rsocket) ? rclose(fd) : real_close(fd);
++      return (fd_close(socket, &fd) == fd_rsocket) ? rclose(fd) : real.close(fd);
+ }
+ int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -634,7 +674,7 @@ int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen)
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+               rgetpeername(fd, addr, addrlen) :
+-              real_getpeername(fd, addr, addrlen);
++              real.getpeername(fd, addr, addrlen);
+ }
+ int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -642,7 +682,7 @@ int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen)
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+               rgetsockname(fd, addr, addrlen) :
+-              real_getsockname(fd, addr, addrlen);
++              real.getsockname(fd, addr, addrlen);
+ }
+ int setsockopt(int socket, int level, int optname,
+@@ -651,7 +691,7 @@ int setsockopt(int socket, int level, int optname,
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+               rsetsockopt(fd, level, optname, optval, optlen) :
+-              real_setsockopt(fd, level, optname, optval, optlen);
++              real.setsockopt(fd, level, optname, optval, optlen);
+ }
+ int getsockopt(int socket, int level, int optname,
+@@ -660,7 +700,7 @@ int getsockopt(int socket, int level, int optname,
+       int fd;
+       return (fd_get(socket, &fd) == fd_rsocket) ?
+               rgetsockopt(fd, level, optname, optval, optlen) :
+-              real_getsockopt(fd, level, optname, optval, optlen);
++              real.getsockopt(fd, level, optname, optval, optlen);
+ }
+ int fcntl(int socket, int cmd, ... /* arg */)
+@@ -679,7 +719,7 @@ int fcntl(int socket, int cmd, ... /* arg */)
+       case F_GETSIG:
+       case F_GETLEASE:
+               ret = (fd_get(socket, &fd) == fd_rsocket) ?
+-                      rfcntl(fd, cmd) : real_fcntl(fd, cmd);
++                      rfcntl(fd, cmd) : real.fcntl(fd, cmd);
+               break;
+       case F_DUPFD:
+       /*case F_DUPFD_CLOEXEC:*/
+@@ -691,12 +731,12 @@ int fcntl(int socket, int cmd, ... /* arg */)
+       case F_NOTIFY:
+               lparam = va_arg(args, long);
+               ret = (fd_get(socket, &fd) == fd_rsocket) ?
+-                      rfcntl(fd, cmd, lparam) : real_fcntl(fd, cmd, lparam);
++                      rfcntl(fd, cmd, lparam) : real.fcntl(fd, cmd, lparam);
+               break;
+       default:
+               pparam = va_arg(args, void *);
+               ret = (fd_get(socket, &fd) == fd_rsocket) ?
+-                      rfcntl(fd, cmd, pparam) : real_fcntl(fd, cmd, pparam);
++                      rfcntl(fd, cmd, pparam) : real.fcntl(fd, cmd, pparam);
+               break;
+       }
+       va_end(args);