return ret;
}
-extern asmlinkage int sys_setsockopt(int fd, int level, int optname,
- char *optval, int optlen);
-
-asmlinkage int sunos_socket(int family, int type, int protocol)
-{
- int ret, one = 1;
-
- ret = sys_socket(family, type, protocol);
- if (ret < 0)
- goto out;
-
- sys_setsockopt(ret, SOL_SOCKET, SO_BSDCOMPAT,
- (char *)&one, sizeof(one));
-out:
- return ret;
-}
-
asmlinkage int sunos_accept(int fd, struct sockaddr *sa, int *addrlen)
{
- int ret, one = 1;
+ int ret;
while (1) {
ret = check_nonblock(sys_accept(fd,sa,addrlen),fd);
if (ret != -ENETUNREACH && ret != -EHOSTUNREACH)
break;
}
- if (ret < 0)
- goto out;
- sys_setsockopt(ret, SOL_SOCKET, SO_BSDCOMPAT,
- (char *)&one, sizeof(one));
-out:
return ret;
}
.long sys_getitimer, sys_gethostname, sys_sethostname
.long sunos_getdtablesize, sys_dup2, sunos_nop
.long sys_fcntl, sunos_select, sunos_nop
- .long sys_fsync, sys_setpriority, sunos_socket
+ .long sys_fsync, sys_setpriority, sys_socket
.long sys_connect, sunos_accept
/*100*/ .long sys_getpriority, sunos_send, sunos_recv
.long sunos_nosys, sys_bind, sunos_setsockopt
return ret;
}
-extern asmlinkage int sys_setsockopt(int fd, int level, int optname,
- char *optval, int optlen);
-
-asmlinkage int sunos_socket(int family, int type, int protocol)
-{
- int ret, one = 1;
-
- ret = sys_socket(family, type, protocol);
- if (ret < 0)
- goto out;
-
- sys_setsockopt(ret, SOL_SOCKET, SO_BSDCOMPAT,
- (char *)&one, sizeof(one));
-out:
- return ret;
-}
-
asmlinkage int sunos_accept(int fd, u32 sa, u32 addrlen)
{
- int ret, one = 1;
+ int ret;
while (1) {
ret = check_nonblock(sys_accept(fd, (struct sockaddr *)A(sa),
if (ret != -ENETUNREACH && ret != -EHOSTUNREACH)
break;
}
- if (ret < 0)
- goto out;
-
- sys_setsockopt(ret, SOL_SOCKET, SO_BSDCOMPAT,
- (char *)&one, sizeof(one));
-out:
return ret;
}
.word compat_sys_getitimer, sys_gethostname, sys_sethostname
.word sunos_getdtablesize, sys_dup2, sunos_nop
.word sys32_fcntl, sunos_select, sunos_nop
- .word sys_fsync, sys_setpriority32, sunos_socket
+ .word sys_fsync, sys_setpriority32, sys_socket
.word sys_connect, sunos_accept
/*100*/ .word sys_getpriority, sunos_send, sunos_recv
.word sunos_nosys, sys_bind, sunos_setsockopt
SOCK_LINGER,
SOCK_DESTROY,
SOCK_BROADCAST,
- SOCK_BSDISM,
};
/* Define this to get the sk->debug debugging facility. */
return 0;
}
+static void sock_warn_obsolete_bsdism(const char *name)
+{
+ printk(KERN_WARNING "process `%s' is using obsolete "
+ "%s SO_BSDCOMPAT\n", current->comm, name);
+}
+
/*
* This is meant for all protocols to use and covers goings on
* at the socket level. Everything here is generic.
break;
case SO_BSDCOMPAT:
- sock_valbool_flag(sk, SOCK_BSDISM, valbool);
+ sock_warn_obsolete_bsdism("setsockopt");
break;
case SO_PASSCRED:
break;
case SO_BSDCOMPAT:
- v.val = test_bit(SOCK_BSDISM, &sk->flags);
+ sock_warn_obsolete_bsdism("getsockopt");
break;
case SO_TIMESTAMP: