Changeset View
Changeset View
Standalone View
Standalone View
sys/compat/linux/linux_socket.c
Show First 20 Lines • Show All 849 Lines • ▼ Show 20 Lines | linux_accept_common(struct thread *td, int s, l_uintptr_t addr, | ||||
if (error != 0) | if (error != 0) | ||||
return (error); | return (error); | ||||
error = sys_accept4(td, &bsd_args); | error = sys_accept4(td, &bsd_args); | ||||
bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.name); | bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.name); | ||||
if (error) { | if (error) { | ||||
if (error == EFAULT && namelen != sizeof(struct sockaddr_in)) | if (error == EFAULT && namelen != sizeof(struct sockaddr_in)) | ||||
return (EINVAL); | return (EINVAL); | ||||
if (error == EINVAL) { | if (error == EINVAL) { | ||||
error1 = getsock_cap(td, s, &rights, &fp, NULL); | error1 = getsock_cap(td, s, &rights, &fp, NULL, NULL); | ||||
if (error1 != 0) | if (error1 != 0) | ||||
return (error1); | return (error1); | ||||
so = fp->f_data; | so = fp->f_data; | ||||
if (so->so_type == SOCK_DGRAM) { | if (so->so_type == SOCK_DGRAM) { | ||||
fdrop(fp, td); | fdrop(fp, td); | ||||
return (EOPNOTSUPP); | return (EOPNOTSUPP); | ||||
} | } | ||||
fdrop(fp, td); | fdrop(fp, td); | ||||
▲ Show 20 Lines • Show All 917 Lines • Show Last 20 Lines |