_PUBLIC_ int swrap_setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen) { struct socket_info *si = find_socket_info(s); if (!si) { return real_setsockopt(s, level, optname, optval, optlen); } if (level == SOL_SOCKET) { return real_setsockopt(s, level, optname, optval, optlen); } switch (si->family) { case AF_INET: return 0; default: errno = ENOPROTOOPT; return -1; } }
int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen) throw() { int retval; print_trace ("%*ssetsockopt(%d, %d, %d, %p, %d)=...\n", indent, "", s, level, optname, optval, optlen); indent+=2; /* call the real setsockopt function */ retval = real_setsockopt (s, level, optname, optval, optlen); indent-=2; print_trace ("%*ssetsockopt(%d, %d, %d, %p, %d)=%d\n", indent, "", s, level, optname, optval, optlen, retval); return retval; }