Changeset View
Changeset View
Standalone View
Standalone View
head/sys/compat/linux/linux_socket.c
Show First 20 Lines • Show All 216 Lines • ▼ Show 20 Lines | linux_to_bsd_so_sockopt(int opt) | ||||
case LINUX_SO_KEEPALIVE: | case LINUX_SO_KEEPALIVE: | ||||
return (SO_KEEPALIVE); | return (SO_KEEPALIVE); | ||||
case LINUX_SO_OOBINLINE: | case LINUX_SO_OOBINLINE: | ||||
return (SO_OOBINLINE); | return (SO_OOBINLINE); | ||||
case LINUX_SO_LINGER: | case LINUX_SO_LINGER: | ||||
return (SO_LINGER); | return (SO_LINGER); | ||||
case LINUX_SO_REUSEPORT: | case LINUX_SO_REUSEPORT: | ||||
return (SO_REUSEPORT_LB); | return (SO_REUSEPORT_LB); | ||||
case LINUX_SO_PASSCRED: | |||||
return (LOCAL_CREDS_PERSISTENT); | |||||
case LINUX_SO_PEERCRED: | case LINUX_SO_PEERCRED: | ||||
return (LOCAL_PEERCRED); | return (LOCAL_PEERCRED); | ||||
case LINUX_SO_RCVLOWAT: | case LINUX_SO_RCVLOWAT: | ||||
return (SO_RCVLOWAT); | return (SO_RCVLOWAT); | ||||
case LINUX_SO_SNDLOWAT: | case LINUX_SO_SNDLOWAT: | ||||
return (SO_SNDLOWAT); | return (SO_SNDLOWAT); | ||||
case LINUX_SO_RCVTIMEO: | case LINUX_SO_RCVTIMEO: | ||||
return (SO_RCVTIMEO); | return (SO_RCVTIMEO); | ||||
▲ Show 20 Lines • Show All 1,207 Lines • ▼ Show 20 Lines | linux_setsockopt(struct thread *td, struct linux_setsockopt_args *args) | ||||
socklen_t len; | socklen_t len; | ||||
int error, level, name; | int error, level, name; | ||||
level = linux_to_bsd_sockopt_level(args->level); | level = linux_to_bsd_sockopt_level(args->level); | ||||
switch (level) { | switch (level) { | ||||
case SOL_SOCKET: | case SOL_SOCKET: | ||||
name = linux_to_bsd_so_sockopt(args->optname); | name = linux_to_bsd_so_sockopt(args->optname); | ||||
switch (name) { | switch (name) { | ||||
case LOCAL_CREDS_PERSISTENT: | |||||
level = SOL_LOCAL; | |||||
break; | |||||
case SO_RCVTIMEO: | case SO_RCVTIMEO: | ||||
/* FALLTHROUGH */ | /* FALLTHROUGH */ | ||||
case SO_SNDTIMEO: | case SO_SNDTIMEO: | ||||
error = copyin(PTRIN(args->optval), &linux_tv, | error = copyin(PTRIN(args->optval), &linux_tv, | ||||
sizeof(linux_tv)); | sizeof(linux_tv)); | ||||
if (error != 0) | if (error != 0) | ||||
return (error); | return (error); | ||||
tv.tv_sec = linux_tv.tv_sec; | tv.tv_sec = linux_tv.tv_sec; | ||||
▲ Show 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | linux_getsockopt(struct thread *td, struct linux_getsockopt_args *args) | ||||
struct l_ucred lxu; | struct l_ucred lxu; | ||||
int error, level, name, newval; | int error, level, name, newval; | ||||
level = linux_to_bsd_sockopt_level(args->level); | level = linux_to_bsd_sockopt_level(args->level); | ||||
switch (level) { | switch (level) { | ||||
case SOL_SOCKET: | case SOL_SOCKET: | ||||
name = linux_to_bsd_so_sockopt(args->optname); | name = linux_to_bsd_so_sockopt(args->optname); | ||||
switch (name) { | switch (name) { | ||||
case LOCAL_CREDS_PERSISTENT: | |||||
level = SOL_LOCAL; | |||||
break; | |||||
case SO_RCVTIMEO: | case SO_RCVTIMEO: | ||||
/* FALLTHROUGH */ | /* FALLTHROUGH */ | ||||
case SO_SNDTIMEO: | case SO_SNDTIMEO: | ||||
tv_len = sizeof(tv); | tv_len = sizeof(tv); | ||||
error = kern_getsockopt(td, args->s, level, | error = kern_getsockopt(td, args->s, level, | ||||
name, &tv, UIO_SYSSPACE, &tv_len); | name, &tv, UIO_SYSSPACE, &tv_len); | ||||
if (error != 0) | if (error != 0) | ||||
return (error); | return (error); | ||||
▲ Show 20 Lines • Show All 307 Lines • Show Last 20 Lines |