linux(4): Handle SO_DOMAIN in getsockopt syscall.

Differential revision:	https://reviews.freebsd.org/D34714
This commit is contained in:
Dmitry Chagin 2022-04-11 23:31:28 +03:00
parent c6487446d7
commit cf312f799a
2 changed files with 14 additions and 0 deletions

View File

@ -553,6 +553,8 @@ linux_to_bsd_so_sockopt(int opt)
return (SO_ACCEPTCONN);
case LINUX_SO_PROTOCOL:
return (SO_PROTOCOL);
case LINUX_SO_DOMAIN:
return (SO_DOMAIN);
}
return (-1);
}
@ -2008,6 +2010,17 @@ linux_getsockopt(struct thread *td, struct linux_getsockopt_args *args)
newval = -bsd_to_linux_errno(newval);
return (copyout(&newval, PTRIN(args->optval), len));
/* NOTREACHED */
case SO_DOMAIN:
len = sizeof(newval);
error = kern_getsockopt(td, args->s, level,
name, &newval, UIO_SYSSPACE, &len);
if (error != 0)
return (error);
newval = bsd_to_linux_domain(newval);
if (newval == -1)
return (ENOPROTOOPT);
return (copyout(&newval, PTRIN(args->optval), len));
/* NOTREACHED */
default:
break;
}

View File

@ -199,6 +199,7 @@ int linux_accept(struct thread *td, struct linux_accept_args *args);
#define LINUX_SO_SNDBUFFORCE 32
#define LINUX_SO_RCVBUFFORCE 33
#define LINUX_SO_PROTOCOL 38
#define LINUX_SO_DOMAIN 39
#define LINUX_SO_PEERGROUPS 59
/* Socket options */