[NET]: {get|set}sockopt compatibility layer
This patch extends {get|set}sockopt compatibility layer in order to move protocol specific parts to their place and avoid huge universal net/compat.c file in the future. Signed-off-by: Dmitry Mishin <dim@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
c750360938
commit
3fdadf7d27
@@ -1385,6 +1385,20 @@ int sock_common_getsockopt(struct socket *sock, int level, int optname,
|
||||
|
||||
EXPORT_SYMBOL(sock_common_getsockopt);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
int compat_sock_common_getsockopt(struct socket *sock, int level,
|
||||
int optname, char __user *optval, int __user *optlen)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
if (sk->sk_prot->compat_setsockopt)
|
||||
return sk->sk_prot->compat_getsockopt(sk, level,
|
||||
optname, optval, optlen);
|
||||
return sk->sk_prot->getsockopt(sk, level, optname, optval, optlen);
|
||||
}
|
||||
EXPORT_SYMBOL(compat_sock_common_getsockopt);
|
||||
#endif
|
||||
|
||||
int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
struct msghdr *msg, size_t size, int flags)
|
||||
{
|
||||
@@ -1414,6 +1428,20 @@ int sock_common_setsockopt(struct socket *sock, int level, int optname,
|
||||
|
||||
EXPORT_SYMBOL(sock_common_setsockopt);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
int compat_sock_common_setsockopt(struct socket *sock,
|
||||
int level, int optname, char __user *optval, int optlen)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
if (sk->sk_prot->compat_setsockopt)
|
||||
return sk->sk_prot->compat_setsockopt(sk, level,
|
||||
optname, optval, optlen);
|
||||
return sk->sk_prot->setsockopt(sk, level, optname, optval, optlen);
|
||||
}
|
||||
EXPORT_SYMBOL(compat_sock_common_setsockopt);
|
||||
#endif
|
||||
|
||||
void sk_common_release(struct sock *sk)
|
||||
{
|
||||
if (sk->sk_prot->destroy)
|
||||
|
Reference in New Issue
Block a user