1 // gcc tcpmaxrt.c -fPIC -shared -ldl -o tcpmaxrt.so
7 #include <sys/socket.h>
11 int setsockopt(int sockfd
, int level
, int optname
, const void *optval
, socklen_t optlen
)
14 int (*real_setsockopt
)(int sockfd
, int level
, int optname
, const void *optval
, socklen_t optlen
) = NULL
;
15 int real_setsockopt_return
;
18 if (real_setsockopt
== NULL
) {
19 void *handle
= dlopen("/lib/libc.so.6", RTLD_LAZY
);
21 fprintf(stderr
, "dlopen: %s\n", dlerror());
24 real_setsockopt
= dlsym(handle
, "setsockopt");
25 if (real_setsockopt
== NULL
) {
26 fprintf(stderr
, "dlsym: %s\n", dlerror());
31 fprintf(stderr
, "setsockopt: optname=%d optval=%d\n", optname
, optval
);
34 real_setsockopt_return
= real_setsockopt(sockfd
, level
, optname
, optval
, optlen
);
35 fprintf(stderr
, "setsockopt %d\n",
36 real_setsockopt(sockfd
, level
, TCP_
, (const void *)&i1
, optlen
)
40 return real_setsockopt_return
;