示例#1
0
_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;
}