提交 543d9cfe 编写于 作者: A Arnaldo Carvalho de Melo 提交者: David S. Miller

[NET]: Identation & other cleanups related to compat_[gs]etsockopt cset

No code changes, just tidying up, in some cases moving EXPORT_SYMBOLs
to just after the function exported, etc.
Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 f94691ac
...@@ -1386,14 +1386,14 @@ int sock_common_getsockopt(struct socket *sock, int level, int optname, ...@@ -1386,14 +1386,14 @@ int sock_common_getsockopt(struct socket *sock, int level, int optname,
EXPORT_SYMBOL(sock_common_getsockopt); EXPORT_SYMBOL(sock_common_getsockopt);
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_sock_common_getsockopt(struct socket *sock, int level, int compat_sock_common_getsockopt(struct socket *sock, int level, int optname,
int optname, char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
struct sock *sk = sock->sk; struct sock *sk = sock->sk;
if (sk->sk_prot->compat_setsockopt) if (sk->sk_prot->compat_setsockopt != NULL)
return sk->sk_prot->compat_getsockopt(sk, level, return sk->sk_prot->compat_getsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
return sk->sk_prot->getsockopt(sk, level, optname, optval, optlen); return sk->sk_prot->getsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL(compat_sock_common_getsockopt); EXPORT_SYMBOL(compat_sock_common_getsockopt);
...@@ -1429,14 +1429,14 @@ int sock_common_setsockopt(struct socket *sock, int level, int optname, ...@@ -1429,14 +1429,14 @@ int sock_common_setsockopt(struct socket *sock, int level, int optname,
EXPORT_SYMBOL(sock_common_setsockopt); EXPORT_SYMBOL(sock_common_setsockopt);
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_sock_common_setsockopt(struct socket *sock, int compat_sock_common_setsockopt(struct socket *sock, int level, int optname,
int level, int optname, char __user *optval, int optlen) char __user *optval, int optlen)
{ {
struct sock *sk = sock->sk; struct sock *sk = sock->sk;
if (sk->sk_prot->compat_setsockopt) if (sk->sk_prot->compat_setsockopt != NULL)
return sk->sk_prot->compat_setsockopt(sk, level, return sk->sk_prot->compat_setsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
return sk->sk_prot->setsockopt(sk, level, optname, optval, optlen); return sk->sk_prot->setsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL(compat_sock_common_setsockopt); EXPORT_SYMBOL(compat_sock_common_setsockopt);
......
...@@ -986,20 +986,20 @@ static int dccp_v4_rcv(struct sk_buff *skb) ...@@ -986,20 +986,20 @@ static int dccp_v4_rcv(struct sk_buff *skb)
} }
static struct inet_connection_sock_af_ops dccp_ipv4_af_ops = { static struct inet_connection_sock_af_ops dccp_ipv4_af_ops = {
.queue_xmit = ip_queue_xmit, .queue_xmit = ip_queue_xmit,
.send_check = dccp_v4_send_check, .send_check = dccp_v4_send_check,
.rebuild_header = inet_sk_rebuild_header, .rebuild_header = inet_sk_rebuild_header,
.conn_request = dccp_v4_conn_request, .conn_request = dccp_v4_conn_request,
.syn_recv_sock = dccp_v4_request_recv_sock, .syn_recv_sock = dccp_v4_request_recv_sock,
.net_header_len = sizeof(struct iphdr), .net_header_len = sizeof(struct iphdr),
.setsockopt = ip_setsockopt, .setsockopt = ip_setsockopt,
.getsockopt = ip_getsockopt, .getsockopt = ip_getsockopt,
.addr2sockaddr = inet_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ip_setsockopt, .compat_setsockopt = compat_ip_setsockopt,
.compat_getsockopt = compat_ip_getsockopt, .compat_getsockopt = compat_ip_getsockopt,
#endif #endif
.addr2sockaddr = inet_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in),
}; };
static int dccp_v4_init_sock(struct sock *sk) static int dccp_v4_init_sock(struct sock *sk)
...@@ -1044,10 +1044,6 @@ static struct proto dccp_v4_prot = { ...@@ -1044,10 +1044,6 @@ static struct proto dccp_v4_prot = {
.init = dccp_v4_init_sock, .init = dccp_v4_init_sock,
.setsockopt = dccp_setsockopt, .setsockopt = dccp_setsockopt,
.getsockopt = dccp_getsockopt, .getsockopt = dccp_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_dccp_setsockopt,
.compat_getsockopt = compat_dccp_getsockopt,
#endif
.sendmsg = dccp_sendmsg, .sendmsg = dccp_sendmsg,
.recvmsg = dccp_recvmsg, .recvmsg = dccp_recvmsg,
.backlog_rcv = dccp_v4_do_rcv, .backlog_rcv = dccp_v4_do_rcv,
...@@ -1062,6 +1058,10 @@ static struct proto dccp_v4_prot = { ...@@ -1062,6 +1058,10 @@ static struct proto dccp_v4_prot = {
.obj_size = sizeof(struct dccp_sock), .obj_size = sizeof(struct dccp_sock),
.rsk_prot = &dccp_request_sock_ops, .rsk_prot = &dccp_request_sock_ops,
.twsk_prot = &dccp_timewait_sock_ops, .twsk_prot = &dccp_timewait_sock_ops,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_dccp_setsockopt,
.compat_getsockopt = compat_dccp_getsockopt,
#endif
}; };
static struct net_protocol dccp_v4_protocol = { static struct net_protocol dccp_v4_protocol = {
...@@ -1071,30 +1071,30 @@ static struct net_protocol dccp_v4_protocol = { ...@@ -1071,30 +1071,30 @@ static struct net_protocol dccp_v4_protocol = {
}; };
static const struct proto_ops inet_dccp_ops = { static const struct proto_ops inet_dccp_ops = {
.family = PF_INET, .family = PF_INET,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = inet_release, .release = inet_release,
.bind = inet_bind, .bind = inet_bind,
.connect = inet_stream_connect, .connect = inet_stream_connect,
.socketpair = sock_no_socketpair, .socketpair = sock_no_socketpair,
.accept = inet_accept, .accept = inet_accept,
.getname = inet_getname, .getname = inet_getname,
/* FIXME: work on tcp_poll to rename it to inet_csk_poll */ /* FIXME: work on tcp_poll to rename it to inet_csk_poll */
.poll = dccp_poll, .poll = dccp_poll,
.ioctl = inet_ioctl, .ioctl = inet_ioctl,
/* FIXME: work on inet_listen to rename it to sock_common_listen */ /* FIXME: work on inet_listen to rename it to sock_common_listen */
.listen = inet_dccp_listen, .listen = inet_dccp_listen,
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = sock_no_sendpage,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = sock_no_sendpage,
}; };
static struct inet_protosw dccp_v4_protosw = { static struct inet_protosw dccp_v4_protosw = {
......
...@@ -1106,40 +1106,40 @@ static int dccp_v6_rcv(struct sk_buff **pskb) ...@@ -1106,40 +1106,40 @@ static int dccp_v6_rcv(struct sk_buff **pskb)
} }
static struct inet_connection_sock_af_ops dccp_ipv6_af_ops = { static struct inet_connection_sock_af_ops dccp_ipv6_af_ops = {
.queue_xmit = inet6_csk_xmit, .queue_xmit = inet6_csk_xmit,
.send_check = dccp_v6_send_check, .send_check = dccp_v6_send_check,
.rebuild_header = inet6_sk_rebuild_header, .rebuild_header = inet6_sk_rebuild_header,
.conn_request = dccp_v6_conn_request, .conn_request = dccp_v6_conn_request,
.syn_recv_sock = dccp_v6_request_recv_sock, .syn_recv_sock = dccp_v6_request_recv_sock,
.net_header_len = sizeof(struct ipv6hdr), .net_header_len = sizeof(struct ipv6hdr),
.setsockopt = ipv6_setsockopt, .setsockopt = ipv6_setsockopt,
.getsockopt = ipv6_getsockopt, .getsockopt = ipv6_getsockopt,
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ipv6_setsockopt, .compat_setsockopt = compat_ipv6_setsockopt,
.compat_getsockopt = compat_ipv6_getsockopt, .compat_getsockopt = compat_ipv6_getsockopt,
#endif #endif
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6)
}; };
/* /*
* DCCP over IPv4 via INET6 API * DCCP over IPv4 via INET6 API
*/ */
static struct inet_connection_sock_af_ops dccp_ipv6_mapped = { static struct inet_connection_sock_af_ops dccp_ipv6_mapped = {
.queue_xmit = ip_queue_xmit, .queue_xmit = ip_queue_xmit,
.send_check = dccp_v4_send_check, .send_check = dccp_v4_send_check,
.rebuild_header = inet_sk_rebuild_header, .rebuild_header = inet_sk_rebuild_header,
.conn_request = dccp_v6_conn_request, .conn_request = dccp_v6_conn_request,
.syn_recv_sock = dccp_v6_request_recv_sock, .syn_recv_sock = dccp_v6_request_recv_sock,
.net_header_len = sizeof(struct iphdr), .net_header_len = sizeof(struct iphdr),
.setsockopt = ipv6_setsockopt, .setsockopt = ipv6_setsockopt,
.getsockopt = ipv6_getsockopt, .getsockopt = ipv6_getsockopt,
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ipv6_setsockopt, .compat_setsockopt = compat_ipv6_setsockopt,
.compat_getsockopt = compat_ipv6_getsockopt, .compat_getsockopt = compat_ipv6_getsockopt,
#endif #endif
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6)
}; };
/* NOTE: A lot of things set to zero explicitly by call to /* NOTE: A lot of things set to zero explicitly by call to
...@@ -1166,33 +1166,33 @@ static int dccp_v6_destroy_sock(struct sock *sk) ...@@ -1166,33 +1166,33 @@ static int dccp_v6_destroy_sock(struct sock *sk)
} }
static struct proto dccp_v6_prot = { static struct proto dccp_v6_prot = {
.name = "DCCPv6", .name = "DCCPv6",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.close = dccp_close, .close = dccp_close,
.connect = dccp_v6_connect, .connect = dccp_v6_connect,
.disconnect = dccp_disconnect, .disconnect = dccp_disconnect,
.ioctl = dccp_ioctl, .ioctl = dccp_ioctl,
.init = dccp_v6_init_sock, .init = dccp_v6_init_sock,
.setsockopt = dccp_setsockopt, .setsockopt = dccp_setsockopt,
.getsockopt = dccp_getsockopt, .getsockopt = dccp_getsockopt,
.sendmsg = dccp_sendmsg,
.recvmsg = dccp_recvmsg,
.backlog_rcv = dccp_v6_do_rcv,
.hash = dccp_v6_hash,
.unhash = dccp_unhash,
.accept = inet_csk_accept,
.get_port = dccp_v6_get_port,
.shutdown = dccp_shutdown,
.destroy = dccp_v6_destroy_sock,
.orphan_count = &dccp_orphan_count,
.max_header = MAX_DCCP_HEADER,
.obj_size = sizeof(struct dccp6_sock),
.rsk_prot = &dccp6_request_sock_ops,
.twsk_prot = &dccp6_timewait_sock_ops,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_dccp_setsockopt, .compat_setsockopt = compat_dccp_setsockopt,
.compat_getsockopt = compat_dccp_getsockopt, .compat_getsockopt = compat_dccp_getsockopt,
#endif #endif
.sendmsg = dccp_sendmsg,
.recvmsg = dccp_recvmsg,
.backlog_rcv = dccp_v6_do_rcv,
.hash = dccp_v6_hash,
.unhash = dccp_unhash,
.accept = inet_csk_accept,
.get_port = dccp_v6_get_port,
.shutdown = dccp_shutdown,
.destroy = dccp_v6_destroy_sock,
.orphan_count = &dccp_orphan_count,
.max_header = MAX_DCCP_HEADER,
.obj_size = sizeof(struct dccp6_sock),
.rsk_prot = &dccp6_request_sock_ops,
.twsk_prot = &dccp6_timewait_sock_ops,
}; };
static struct inet6_protocol dccp_v6_protocol = { static struct inet6_protocol dccp_v6_protocol = {
...@@ -1202,28 +1202,28 @@ static struct inet6_protocol dccp_v6_protocol = { ...@@ -1202,28 +1202,28 @@ static struct inet6_protocol dccp_v6_protocol = {
}; };
static struct proto_ops inet6_dccp_ops = { static struct proto_ops inet6_dccp_ops = {
.family = PF_INET6, .family = PF_INET6,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = inet6_release, .release = inet6_release,
.bind = inet6_bind, .bind = inet6_bind,
.connect = inet_stream_connect, .connect = inet_stream_connect,
.socketpair = sock_no_socketpair, .socketpair = sock_no_socketpair,
.accept = inet_accept, .accept = inet_accept,
.getname = inet6_getname, .getname = inet6_getname,
.poll = dccp_poll, .poll = dccp_poll,
.ioctl = inet6_ioctl, .ioctl = inet6_ioctl,
.listen = inet_dccp_listen, .listen = inet_dccp_listen,
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = sock_no_sendpage,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = sock_no_sendpage,
}; };
static struct inet_protosw dccp_v6_protosw = { static struct inet_protosw dccp_v6_protosw = {
......
...@@ -516,18 +516,19 @@ int dccp_setsockopt(struct sock *sk, int level, int optname, ...@@ -516,18 +516,19 @@ int dccp_setsockopt(struct sock *sk, int level, int optname,
optlen); optlen);
return do_dccp_setsockopt(sk, level, optname, optval, optlen); return do_dccp_setsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL_GPL(dccp_setsockopt); EXPORT_SYMBOL_GPL(dccp_setsockopt);
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_dccp_setsockopt(struct sock *sk, int level, int optname, int compat_dccp_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int optlen) char __user *optval, int optlen)
{ {
if (level != SOL_DCCP) if (level != SOL_DCCP)
return inet_csk_compat_setsockopt(sk, level, optname, return inet_csk_compat_setsockopt(sk, level, optname,
optval, optlen); optval, optlen);
return do_dccp_setsockopt(sk, level, optname, optval, optlen); return do_dccp_setsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL_GPL(compat_dccp_setsockopt); EXPORT_SYMBOL_GPL(compat_dccp_setsockopt);
#endif #endif
...@@ -609,17 +610,19 @@ int dccp_getsockopt(struct sock *sk, int level, int optname, ...@@ -609,17 +610,19 @@ int dccp_getsockopt(struct sock *sk, int level, int optname,
optlen); optlen);
return do_dccp_getsockopt(sk, level, optname, optval, optlen); return do_dccp_getsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL_GPL(dccp_getsockopt); EXPORT_SYMBOL_GPL(dccp_getsockopt);
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_dccp_getsockopt(struct sock *sk, int level, int optname, int compat_dccp_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
if (level != SOL_DCCP) if (level != SOL_DCCP)
return inet_csk_compat_getsockopt(sk, level, optname, return inet_csk_compat_getsockopt(sk, level, optname,
optval, optlen); optval, optlen);
return do_dccp_getsockopt(sk, level, optname, optval, optlen); return do_dccp_getsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL_GPL(compat_dccp_getsockopt); EXPORT_SYMBOL_GPL(compat_dccp_getsockopt);
#endif #endif
......
...@@ -788,53 +788,53 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) ...@@ -788,53 +788,53 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
} }
const struct proto_ops inet_stream_ops = { const struct proto_ops inet_stream_ops = {
.family = PF_INET, .family = PF_INET,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = inet_release, .release = inet_release,
.bind = inet_bind, .bind = inet_bind,
.connect = inet_stream_connect, .connect = inet_stream_connect,
.socketpair = sock_no_socketpair, .socketpair = sock_no_socketpair,
.accept = inet_accept, .accept = inet_accept,
.getname = inet_getname, .getname = inet_getname,
.poll = tcp_poll, .poll = tcp_poll,
.ioctl = inet_ioctl, .ioctl = inet_ioctl,
.listen = inet_listen, .listen = inet_listen,
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = tcp_sendpage,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = tcp_sendpage
}; };
const struct proto_ops inet_dgram_ops = { const struct proto_ops inet_dgram_ops = {
.family = PF_INET, .family = PF_INET,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = inet_release, .release = inet_release,
.bind = inet_bind, .bind = inet_bind,
.connect = inet_dgram_connect, .connect = inet_dgram_connect,
.socketpair = sock_no_socketpair, .socketpair = sock_no_socketpair,
.accept = sock_no_accept, .accept = sock_no_accept,
.getname = inet_getname, .getname = inet_getname,
.poll = udp_poll, .poll = udp_poll,
.ioctl = inet_ioctl, .ioctl = inet_ioctl,
.listen = sock_no_listen, .listen = sock_no_listen,
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = inet_sendpage,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = inet_sendpage,
}; };
/* /*
...@@ -842,28 +842,28 @@ const struct proto_ops inet_dgram_ops = { ...@@ -842,28 +842,28 @@ const struct proto_ops inet_dgram_ops = {
* udp_poll * udp_poll
*/ */
static const struct proto_ops inet_sockraw_ops = { static const struct proto_ops inet_sockraw_ops = {
.family = PF_INET, .family = PF_INET,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = inet_release, .release = inet_release,
.bind = inet_bind, .bind = inet_bind,
.connect = inet_dgram_connect, .connect = inet_dgram_connect,
.socketpair = sock_no_socketpair, .socketpair = sock_no_socketpair,
.accept = sock_no_accept, .accept = sock_no_accept,
.getname = inet_getname, .getname = inet_getname,
.poll = datagram_poll, .poll = datagram_poll,
.ioctl = inet_ioctl, .ioctl = inet_ioctl,
.listen = sock_no_listen, .listen = sock_no_listen,
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = inet_sendpage,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = inet_sendpage,
}; };
static struct net_proto_family inet_family_ops = { static struct net_proto_family inet_family_ops = {
......
...@@ -910,8 +910,8 @@ int ip_setsockopt(struct sock *sk, int level, ...@@ -910,8 +910,8 @@ int ip_setsockopt(struct sock *sk, int level,
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_ip_setsockopt(struct sock *sk, int level, int compat_ip_setsockopt(struct sock *sk, int level, int optname,
int optname, char __user *optval, int optlen) char __user *optval, int optlen)
{ {
int err; int err;
...@@ -922,19 +922,21 @@ int compat_ip_setsockopt(struct sock *sk, int level, ...@@ -922,19 +922,21 @@ int compat_ip_setsockopt(struct sock *sk, int level,
#ifdef CONFIG_NETFILTER #ifdef CONFIG_NETFILTER
/* we need to exclude all possible ENOPROTOOPTs except default case */ /* we need to exclude all possible ENOPROTOOPTs except default case */
if (err == -ENOPROTOOPT && optname != IP_HDRINCL && if (err == -ENOPROTOOPT && optname != IP_HDRINCL &&
optname != IP_IPSEC_POLICY && optname != IP_XFRM_POLICY optname != IP_IPSEC_POLICY && optname != IP_XFRM_POLICY
#ifdef CONFIG_IP_MROUTE #ifdef CONFIG_IP_MROUTE
&& (optname < MRT_BASE || optname > (MRT_BASE + 10)) && (optname < MRT_BASE || optname > (MRT_BASE + 10))
#endif #endif
) { ) {
lock_sock(sk); lock_sock(sk);
err = compat_nf_setsockopt(sk, PF_INET, err = compat_nf_setsockopt(sk, PF_INET, optname,
optname, optval, optlen); optval, optlen);
release_sock(sk); release_sock(sk);
} }
#endif #endif
return err; return err;
} }
EXPORT_SYMBOL(compat_ip_setsockopt);
#endif #endif
/* /*
...@@ -1180,27 +1182,24 @@ int ip_getsockopt(struct sock *sk, int level, ...@@ -1180,27 +1182,24 @@ int ip_getsockopt(struct sock *sk, int level,
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_ip_getsockopt(struct sock *sk, int level, int compat_ip_getsockopt(struct sock *sk, int level, int optname,
int optname, char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
int err; int err = do_ip_getsockopt(sk, level, optname, optval, optlen);
err = do_ip_getsockopt(sk, level, optname, optval, optlen);
#ifdef CONFIG_NETFILTER #ifdef CONFIG_NETFILTER
/* we need to exclude all possible ENOPROTOOPTs except default case */ /* we need to exclude all possible ENOPROTOOPTs except default case */
if (err == -ENOPROTOOPT && optname != IP_PKTOPTIONS if (err == -ENOPROTOOPT && optname != IP_PKTOPTIONS
#ifdef CONFIG_IP_MROUTE #ifdef CONFIG_IP_MROUTE
&& (optname < MRT_BASE || optname > MRT_BASE+10) && (optname < MRT_BASE || optname > MRT_BASE+10)
#endif #endif
) { ) {
int len; int len;
if(get_user(len,optlen)) if (get_user(len, optlen))
return -EFAULT; return -EFAULT;
lock_sock(sk); lock_sock(sk);
err = compat_nf_getsockopt(sk, PF_INET, err = compat_nf_getsockopt(sk, PF_INET, optname, optval, &len);
optname, optval, &len);
release_sock(sk); release_sock(sk);
if (err >= 0) if (err >= 0)
err = put_user(len, optlen); err = put_user(len, optlen);
...@@ -1209,13 +1208,11 @@ int compat_ip_getsockopt(struct sock *sk, int level, ...@@ -1209,13 +1208,11 @@ int compat_ip_getsockopt(struct sock *sk, int level,
#endif #endif
return err; return err;
} }
EXPORT_SYMBOL(compat_ip_getsockopt);
#endif #endif
EXPORT_SYMBOL(ip_cmsg_recv); EXPORT_SYMBOL(ip_cmsg_recv);
EXPORT_SYMBOL(ip_getsockopt); EXPORT_SYMBOL(ip_getsockopt);
EXPORT_SYMBOL(ip_setsockopt); EXPORT_SYMBOL(ip_setsockopt);
#ifdef CONFIG_COMPAT
EXPORT_SYMBOL(compat_ip_getsockopt);
EXPORT_SYMBOL(compat_ip_setsockopt);
#endif
...@@ -682,11 +682,10 @@ static int raw_setsockopt(struct sock *sk, int level, int optname, ...@@ -682,11 +682,10 @@ static int raw_setsockopt(struct sock *sk, int level, int optname,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
static int compat_raw_setsockopt(struct sock *sk, int level, int optname, static int compat_raw_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int optlen) char __user *optval, int optlen)
{ {
if (level != SOL_RAW) if (level != SOL_RAW)
return compat_ip_setsockopt(sk, level, return compat_ip_setsockopt(sk, level, optname, optval, optlen);
optname, optval, optlen);
return do_raw_setsockopt(sk, level, optname, optval, optlen); return do_raw_setsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -713,11 +712,10 @@ static int raw_getsockopt(struct sock *sk, int level, int optname, ...@@ -713,11 +712,10 @@ static int raw_getsockopt(struct sock *sk, int level, int optname,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
static int compat_raw_getsockopt(struct sock *sk, int level, int optname, static int compat_raw_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
if (level != SOL_RAW) if (level != SOL_RAW)
return compat_ip_getsockopt(sk, level, return compat_ip_getsockopt(sk, level, optname, optval, optlen);
optname, optval, optlen);
return do_raw_getsockopt(sk, level, optname, optval, optlen); return do_raw_getsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -751,26 +749,26 @@ static int raw_ioctl(struct sock *sk, int cmd, unsigned long arg) ...@@ -751,26 +749,26 @@ static int raw_ioctl(struct sock *sk, int cmd, unsigned long arg)
} }
struct proto raw_prot = { struct proto raw_prot = {
.name = "RAW", .name = "RAW",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.close = raw_close, .close = raw_close,
.connect = ip4_datagram_connect, .connect = ip4_datagram_connect,
.disconnect = udp_disconnect, .disconnect = udp_disconnect,
.ioctl = raw_ioctl, .ioctl = raw_ioctl,
.init = raw_init, .init = raw_init,
.setsockopt = raw_setsockopt, .setsockopt = raw_setsockopt,
.getsockopt = raw_getsockopt, .getsockopt = raw_getsockopt,
.sendmsg = raw_sendmsg,
.recvmsg = raw_recvmsg,
.bind = raw_bind,
.backlog_rcv = raw_rcv_skb,
.hash = raw_v4_hash,
.unhash = raw_v4_unhash,
.obj_size = sizeof(struct raw_sock),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_raw_setsockopt, .compat_setsockopt = compat_raw_setsockopt,
.compat_getsockopt = compat_raw_getsockopt, .compat_getsockopt = compat_raw_getsockopt,
#endif #endif
.sendmsg = raw_sendmsg,
.recvmsg = raw_recvmsg,
.bind = raw_bind,
.backlog_rcv = raw_rcv_skb,
.hash = raw_v4_hash,
.unhash = raw_v4_unhash,
.obj_size = sizeof(struct raw_sock),
}; };
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
......
...@@ -1879,14 +1879,16 @@ int tcp_setsockopt(struct sock *sk, int level, int optname, char __user *optval, ...@@ -1879,14 +1879,16 @@ int tcp_setsockopt(struct sock *sk, int level, int optname, char __user *optval,
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_tcp_setsockopt(struct sock *sk, int level, int compat_tcp_setsockopt(struct sock *sk, int level, int optname,
int optname, char __user *optval, int optlen) char __user *optval, int optlen)
{ {
if (level != SOL_TCP) if (level != SOL_TCP)
return inet_csk_compat_setsockopt(sk, level, optname, return inet_csk_compat_setsockopt(sk, level, optname,
optval, optlen); optval, optlen);
return do_tcp_setsockopt(sk, level, optname, optval, optlen); return do_tcp_setsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL(compat_tcp_setsockopt);
#endif #endif
/* Return information about state of tcp endpoint in API format. */ /* Return information about state of tcp endpoint in API format. */
...@@ -2051,14 +2053,16 @@ int tcp_getsockopt(struct sock *sk, int level, int optname, char __user *optval, ...@@ -2051,14 +2053,16 @@ int tcp_getsockopt(struct sock *sk, int level, int optname, char __user *optval,
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_tcp_getsockopt(struct sock *sk, int level, int compat_tcp_getsockopt(struct sock *sk, int level, int optname,
int optname, char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
if (level != SOL_TCP) if (level != SOL_TCP)
return inet_csk_compat_getsockopt(sk, level, optname, return inet_csk_compat_getsockopt(sk, level, optname,
optval, optlen); optval, optlen);
return do_tcp_getsockopt(sk, level, optname, optval, optlen); return do_tcp_getsockopt(sk, level, optname, optval, optlen);
} }
EXPORT_SYMBOL(compat_tcp_getsockopt);
#endif #endif
extern void __skb_cb_too_small_for_tcp(int, int); extern void __skb_cb_too_small_for_tcp(int, int);
...@@ -2177,7 +2181,3 @@ EXPORT_SYMBOL(tcp_sendpage); ...@@ -2177,7 +2181,3 @@ EXPORT_SYMBOL(tcp_sendpage);
EXPORT_SYMBOL(tcp_setsockopt); EXPORT_SYMBOL(tcp_setsockopt);
EXPORT_SYMBOL(tcp_shutdown); EXPORT_SYMBOL(tcp_shutdown);
EXPORT_SYMBOL(tcp_statistics); EXPORT_SYMBOL(tcp_statistics);
#ifdef CONFIG_COMPAT
EXPORT_SYMBOL(compat_tcp_setsockopt);
EXPORT_SYMBOL(compat_tcp_getsockopt);
#endif
...@@ -1217,21 +1217,21 @@ int tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw) ...@@ -1217,21 +1217,21 @@ int tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw)
} }
struct inet_connection_sock_af_ops ipv4_specific = { struct inet_connection_sock_af_ops ipv4_specific = {
.queue_xmit = ip_queue_xmit, .queue_xmit = ip_queue_xmit,
.send_check = tcp_v4_send_check, .send_check = tcp_v4_send_check,
.rebuild_header = inet_sk_rebuild_header, .rebuild_header = inet_sk_rebuild_header,
.conn_request = tcp_v4_conn_request, .conn_request = tcp_v4_conn_request,
.syn_recv_sock = tcp_v4_syn_recv_sock, .syn_recv_sock = tcp_v4_syn_recv_sock,
.remember_stamp = tcp_v4_remember_stamp, .remember_stamp = tcp_v4_remember_stamp,
.net_header_len = sizeof(struct iphdr), .net_header_len = sizeof(struct iphdr),
.setsockopt = ip_setsockopt, .setsockopt = ip_setsockopt,
.getsockopt = ip_getsockopt, .getsockopt = ip_getsockopt,
.addr2sockaddr = inet_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ip_setsockopt, .compat_setsockopt = compat_ip_setsockopt,
.compat_getsockopt = compat_ip_getsockopt, .compat_getsockopt = compat_ip_getsockopt,
#endif #endif
.addr2sockaddr = inet_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in),
}; };
/* NOTE: A lot of things set to zero explicitly by call to /* NOTE: A lot of things set to zero explicitly by call to
...@@ -1812,10 +1812,6 @@ struct proto tcp_prot = { ...@@ -1812,10 +1812,6 @@ struct proto tcp_prot = {
.shutdown = tcp_shutdown, .shutdown = tcp_shutdown,
.setsockopt = tcp_setsockopt, .setsockopt = tcp_setsockopt,
.getsockopt = tcp_getsockopt, .getsockopt = tcp_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_tcp_setsockopt,
.compat_getsockopt = compat_tcp_getsockopt,
#endif
.sendmsg = tcp_sendmsg, .sendmsg = tcp_sendmsg,
.recvmsg = tcp_recvmsg, .recvmsg = tcp_recvmsg,
.backlog_rcv = tcp_v4_do_rcv, .backlog_rcv = tcp_v4_do_rcv,
...@@ -1834,6 +1830,10 @@ struct proto tcp_prot = { ...@@ -1834,6 +1830,10 @@ struct proto tcp_prot = {
.obj_size = sizeof(struct tcp_sock), .obj_size = sizeof(struct tcp_sock),
.twsk_prot = &tcp_timewait_sock_ops, .twsk_prot = &tcp_timewait_sock_ops,
.rsk_prot = &tcp_request_sock_ops, .rsk_prot = &tcp_request_sock_ops,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_tcp_setsockopt,
.compat_getsockopt = compat_tcp_getsockopt,
#endif
}; };
void __init tcp_v4_init(struct net_proto_family *ops) void __init tcp_v4_init(struct net_proto_family *ops)
......
...@@ -1263,11 +1263,10 @@ static int udp_setsockopt(struct sock *sk, int level, int optname, ...@@ -1263,11 +1263,10 @@ static int udp_setsockopt(struct sock *sk, int level, int optname,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
static int compat_udp_setsockopt(struct sock *sk, int level, int optname, static int compat_udp_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int optlen) char __user *optval, int optlen)
{ {
if (level != SOL_UDP) if (level != SOL_UDP)
return compat_ip_setsockopt(sk, level, return compat_ip_setsockopt(sk, level, optname, optval, optlen);
optname, optval, optlen);
return do_udp_setsockopt(sk, level, optname, optval, optlen); return do_udp_setsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -1316,11 +1315,10 @@ static int udp_getsockopt(struct sock *sk, int level, int optname, ...@@ -1316,11 +1315,10 @@ static int udp_getsockopt(struct sock *sk, int level, int optname,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
static int compat_udp_getsockopt(struct sock *sk, int level, int optname, static int compat_udp_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
if (level != SOL_UDP) if (level != SOL_UDP)
return compat_ip_getsockopt(sk, level, return compat_ip_getsockopt(sk, level, optname, optval, optlen);
optname, optval, optlen);
return do_udp_getsockopt(sk, level, optname, optval, optlen); return do_udp_getsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -1372,27 +1370,27 @@ unsigned int udp_poll(struct file *file, struct socket *sock, poll_table *wait) ...@@ -1372,27 +1370,27 @@ unsigned int udp_poll(struct file *file, struct socket *sock, poll_table *wait)
} }
struct proto udp_prot = { struct proto udp_prot = {
.name = "UDP", .name = "UDP",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.close = udp_close, .close = udp_close,
.connect = ip4_datagram_connect, .connect = ip4_datagram_connect,
.disconnect = udp_disconnect, .disconnect = udp_disconnect,
.ioctl = udp_ioctl, .ioctl = udp_ioctl,
.destroy = udp_destroy_sock, .destroy = udp_destroy_sock,
.setsockopt = udp_setsockopt, .setsockopt = udp_setsockopt,
.getsockopt = udp_getsockopt, .getsockopt = udp_getsockopt,
.sendmsg = udp_sendmsg,
.recvmsg = udp_recvmsg,
.sendpage = udp_sendpage,
.backlog_rcv = udp_queue_rcv_skb,
.hash = udp_v4_hash,
.unhash = udp_v4_unhash,
.get_port = udp_v4_get_port,
.obj_size = sizeof(struct udp_sock),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_udp_setsockopt, .compat_setsockopt = compat_udp_setsockopt,
.compat_getsockopt = compat_udp_getsockopt, .compat_getsockopt = compat_udp_getsockopt,
#endif #endif
.sendmsg = udp_sendmsg,
.recvmsg = udp_recvmsg,
.sendpage = udp_sendpage,
.backlog_rcv = udp_queue_rcv_skb,
.hash = udp_v4_hash,
.unhash = udp_v4_unhash,
.get_port = udp_v4_get_port,
.obj_size = sizeof(struct udp_sock),
}; };
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
......
...@@ -456,53 +456,53 @@ int inet6_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) ...@@ -456,53 +456,53 @@ int inet6_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
} }
const struct proto_ops inet6_stream_ops = { const struct proto_ops inet6_stream_ops = {
.family = PF_INET6, .family = PF_INET6,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = inet6_release, .release = inet6_release,
.bind = inet6_bind, .bind = inet6_bind,
.connect = inet_stream_connect, /* ok */ .connect = inet_stream_connect, /* ok */
.socketpair = sock_no_socketpair, /* a do nothing */ .socketpair = sock_no_socketpair, /* a do nothing */
.accept = inet_accept, /* ok */ .accept = inet_accept, /* ok */
.getname = inet6_getname, .getname = inet6_getname,
.poll = tcp_poll, /* ok */ .poll = tcp_poll, /* ok */
.ioctl = inet6_ioctl, /* must change */ .ioctl = inet6_ioctl, /* must change */
.listen = inet_listen, /* ok */ .listen = inet_listen, /* ok */
.shutdown = inet_shutdown, /* ok */ .shutdown = inet_shutdown, /* ok */
.setsockopt = sock_common_setsockopt, /* ok */ .setsockopt = sock_common_setsockopt, /* ok */
.getsockopt = sock_common_getsockopt, /* ok */ .getsockopt = sock_common_getsockopt, /* ok */
.sendmsg = inet_sendmsg, /* ok */
.recvmsg = sock_common_recvmsg, /* ok */
.mmap = sock_no_mmap,
.sendpage = tcp_sendpage,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg, /* ok */
.recvmsg = sock_common_recvmsg, /* ok */
.mmap = sock_no_mmap,
.sendpage = tcp_sendpage
}; };
const struct proto_ops inet6_dgram_ops = { const struct proto_ops inet6_dgram_ops = {
.family = PF_INET6, .family = PF_INET6,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = inet6_release, .release = inet6_release,
.bind = inet6_bind, .bind = inet6_bind,
.connect = inet_dgram_connect, /* ok */ .connect = inet_dgram_connect, /* ok */
.socketpair = sock_no_socketpair, /* a do nothing */ .socketpair = sock_no_socketpair, /* a do nothing */
.accept = sock_no_accept, /* a do nothing */ .accept = sock_no_accept, /* a do nothing */
.getname = inet6_getname, .getname = inet6_getname,
.poll = udp_poll, /* ok */ .poll = udp_poll, /* ok */
.ioctl = inet6_ioctl, /* must change */ .ioctl = inet6_ioctl, /* must change */
.listen = sock_no_listen, /* ok */ .listen = sock_no_listen, /* ok */
.shutdown = inet_shutdown, /* ok */ .shutdown = inet_shutdown, /* ok */
.setsockopt = sock_common_setsockopt, /* ok */ .setsockopt = sock_common_setsockopt, /* ok */
.getsockopt = sock_common_getsockopt, /* ok */ .getsockopt = sock_common_getsockopt, /* ok */
.sendmsg = inet_sendmsg, /* ok */
.recvmsg = sock_common_recvmsg, /* ok */
.mmap = sock_no_mmap,
.sendpage = sock_no_sendpage,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg, /* ok */
.recvmsg = sock_common_recvmsg, /* ok */
.mmap = sock_no_mmap,
.sendpage = sock_no_sendpage,
}; };
static struct net_proto_family inet6_family_ops = { static struct net_proto_family inet6_family_ops = {
...@@ -513,28 +513,28 @@ static struct net_proto_family inet6_family_ops = { ...@@ -513,28 +513,28 @@ static struct net_proto_family inet6_family_ops = {
/* Same as inet6_dgram_ops, sans udp_poll. */ /* Same as inet6_dgram_ops, sans udp_poll. */
static const struct proto_ops inet6_sockraw_ops = { static const struct proto_ops inet6_sockraw_ops = {
.family = PF_INET6, .family = PF_INET6,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = inet6_release, .release = inet6_release,
.bind = inet6_bind, .bind = inet6_bind,
.connect = inet_dgram_connect, /* ok */ .connect = inet_dgram_connect, /* ok */
.socketpair = sock_no_socketpair, /* a do nothing */ .socketpair = sock_no_socketpair, /* a do nothing */
.accept = sock_no_accept, /* a do nothing */ .accept = sock_no_accept, /* a do nothing */
.getname = inet6_getname, .getname = inet6_getname,
.poll = datagram_poll, /* ok */ .poll = datagram_poll, /* ok */
.ioctl = inet6_ioctl, /* must change */ .ioctl = inet6_ioctl, /* must change */
.listen = sock_no_listen, /* ok */ .listen = sock_no_listen, /* ok */
.shutdown = inet_shutdown, /* ok */ .shutdown = inet_shutdown, /* ok */
.setsockopt = sock_common_setsockopt, /* ok */ .setsockopt = sock_common_setsockopt, /* ok */
.getsockopt = sock_common_getsockopt, /* ok */ .getsockopt = sock_common_getsockopt, /* ok */
.sendmsg = inet_sendmsg, /* ok */
.recvmsg = sock_common_recvmsg, /* ok */
.mmap = sock_no_mmap,
.sendpage = sock_no_sendpage,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg, /* ok */
.recvmsg = sock_common_recvmsg, /* ok */
.mmap = sock_no_mmap,
.sendpage = sock_no_sendpage,
}; };
static struct inet_protosw rawv6_protosw = { static struct inet_protosw rawv6_protosw = {
......
...@@ -645,17 +645,15 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname, ...@@ -645,17 +645,15 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_ipv6_setsockopt(struct sock *sk, int level, int optname, int compat_ipv6_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int optlen) char __user *optval, int optlen)
{ {
int err; int err;
if (level == SOL_IP && sk->sk_type != SOCK_RAW) { if (level == SOL_IP && sk->sk_type != SOCK_RAW) {
if (udp_prot.compat_setsockopt) if (udp_prot.compat_setsockopt != NULL)
return udp_prot.compat_setsockopt(sk, level, return udp_prot.compat_setsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
else return udp_prot.setsockopt(sk, level, optname, optval, optlen);
return udp_prot.setsockopt(sk, level,
optname, optval, optlen);
} }
if (level != SOL_IPV6) if (level != SOL_IPV6)
...@@ -665,15 +663,17 @@ int compat_ipv6_setsockopt(struct sock *sk, int level, int optname, ...@@ -665,15 +663,17 @@ int compat_ipv6_setsockopt(struct sock *sk, int level, int optname,
#ifdef CONFIG_NETFILTER #ifdef CONFIG_NETFILTER
/* we need to exclude all possible ENOPROTOOPTs except default case */ /* we need to exclude all possible ENOPROTOOPTs except default case */
if (err == -ENOPROTOOPT && optname != IPV6_IPSEC_POLICY && if (err == -ENOPROTOOPT && optname != IPV6_IPSEC_POLICY &&
optname != IPV6_XFRM_POLICY) { optname != IPV6_XFRM_POLICY) {
lock_sock(sk); lock_sock(sk);
err = compat_nf_setsockopt(sk, PF_INET6, optname, optval, err = compat_nf_setsockopt(sk, PF_INET6, optname,
optlen); optval, optlen);
release_sock(sk); release_sock(sk);
} }
#endif #endif
return err; return err;
} }
EXPORT_SYMBOL(compat_ipv6_setsockopt);
#endif #endif
static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_opt_hdr *hdr, static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_opt_hdr *hdr,
...@@ -927,20 +927,18 @@ int ipv6_getsockopt(struct sock *sk, int level, int optname, ...@@ -927,20 +927,18 @@ int ipv6_getsockopt(struct sock *sk, int level, int optname,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
int compat_ipv6_getsockopt(struct sock *sk, int level, int optname, int compat_ipv6_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
int err; int err;
if (level == SOL_IP && sk->sk_type != SOCK_RAW) { if (level == SOL_IP && sk->sk_type != SOCK_RAW) {
if (udp_prot.compat_getsockopt) if (udp_prot.compat_getsockopt != NULL)
return udp_prot.compat_getsockopt(sk, level, return udp_prot.compat_getsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
else return udp_prot.getsockopt(sk, level, optname, optval, optlen);
return udp_prot.getsockopt(sk, level,
optname, optval, optlen);
} }
if(level != SOL_IPV6) if (level != SOL_IPV6)
return -ENOPROTOOPT; return -ENOPROTOOPT;
err = do_ipv6_getsockopt(sk, level, optname, optval, optlen); err = do_ipv6_getsockopt(sk, level, optname, optval, optlen);
...@@ -954,8 +952,8 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname, ...@@ -954,8 +952,8 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname,
return -EFAULT; return -EFAULT;
lock_sock(sk); lock_sock(sk);
err = compat_nf_getsockopt(sk, PF_INET6, optname, optval, err = compat_nf_getsockopt(sk, PF_INET6,
&len); optname, optval, &len);
release_sock(sk); release_sock(sk);
if (err >= 0) if (err >= 0)
err = put_user(len, optlen); err = put_user(len, optlen);
...@@ -963,6 +961,8 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname, ...@@ -963,6 +961,8 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname,
#endif #endif
return err; return err;
} }
EXPORT_SYMBOL(compat_ipv6_getsockopt);
#endif #endif
void __init ipv6_packet_init(void) void __init ipv6_packet_init(void)
......
...@@ -18,10 +18,6 @@ EXPORT_SYMBOL(ip6_route_output); ...@@ -18,10 +18,6 @@ EXPORT_SYMBOL(ip6_route_output);
EXPORT_SYMBOL(addrconf_lock); EXPORT_SYMBOL(addrconf_lock);
EXPORT_SYMBOL(ipv6_setsockopt); EXPORT_SYMBOL(ipv6_setsockopt);
EXPORT_SYMBOL(ipv6_getsockopt); EXPORT_SYMBOL(ipv6_getsockopt);
#ifdef CONFIG_COMPAT
EXPORT_SYMBOL(compat_ipv6_setsockopt);
EXPORT_SYMBOL(compat_ipv6_getsockopt);
#endif
EXPORT_SYMBOL(inet6_register_protosw); EXPORT_SYMBOL(inet6_register_protosw);
EXPORT_SYMBOL(inet6_unregister_protosw); EXPORT_SYMBOL(inet6_unregister_protosw);
EXPORT_SYMBOL(inet6_add_protocol); EXPORT_SYMBOL(inet6_add_protocol);
......
...@@ -913,23 +913,21 @@ static int rawv6_setsockopt(struct sock *sk, int level, int optname, ...@@ -913,23 +913,21 @@ static int rawv6_setsockopt(struct sock *sk, int level, int optname,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
static int compat_rawv6_setsockopt(struct sock *sk, int level, int optname, static int compat_rawv6_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int optlen) char __user *optval, int optlen)
{ {
switch(level) { switch (level) {
case SOL_RAW: case SOL_RAW:
break;
case SOL_ICMPV6:
if (inet_sk(sk)->num != IPPROTO_ICMPV6)
return -EOPNOTSUPP;
return rawv6_seticmpfilter(sk, level, optname, optval, optlen);
case SOL_IPV6:
if (optname == IPV6_CHECKSUM)
break; break;
default:
case SOL_ICMPV6: return compat_ipv6_setsockopt(sk, level, optname,
if (inet_sk(sk)->num != IPPROTO_ICMPV6) optval, optlen);
return -EOPNOTSUPP;
return rawv6_seticmpfilter(sk, level, optname, optval,
optlen);
case SOL_IPV6:
if (optname == IPV6_CHECKSUM)
break;
default:
return compat_ipv6_setsockopt(sk, level,
optname, optval, optlen);
}; };
return do_rawv6_setsockopt(sk, level, optname, optval, optlen); return do_rawv6_setsockopt(sk, level, optname, optval, optlen);
} }
...@@ -989,23 +987,21 @@ static int rawv6_getsockopt(struct sock *sk, int level, int optname, ...@@ -989,23 +987,21 @@ static int rawv6_getsockopt(struct sock *sk, int level, int optname,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
static int compat_rawv6_getsockopt(struct sock *sk, int level, int optname, static int compat_rawv6_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
switch(level) { switch (level) {
case SOL_RAW: case SOL_RAW:
break;
case SOL_ICMPV6:
if (inet_sk(sk)->num != IPPROTO_ICMPV6)
return -EOPNOTSUPP;
return rawv6_geticmpfilter(sk, level, optname, optval, optlen);
case SOL_IPV6:
if (optname == IPV6_CHECKSUM)
break; break;
default:
case SOL_ICMPV6: return compat_ipv6_getsockopt(sk, level, optname,
if (inet_sk(sk)->num != IPPROTO_ICMPV6) optval, optlen);
return -EOPNOTSUPP;
return rawv6_geticmpfilter(sk, level, optname, optval,
optlen);
case SOL_IPV6:
if (optname == IPV6_CHECKSUM)
break;
default:
return compat_ipv6_getsockopt(sk, level,
optname, optval, optlen);
}; };
return do_rawv6_getsockopt(sk, level, optname, optval, optlen); return do_rawv6_getsockopt(sk, level, optname, optval, optlen);
} }
...@@ -1056,27 +1052,27 @@ static int rawv6_init_sk(struct sock *sk) ...@@ -1056,27 +1052,27 @@ static int rawv6_init_sk(struct sock *sk)
} }
struct proto rawv6_prot = { struct proto rawv6_prot = {
.name = "RAWv6", .name = "RAWv6",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.close = rawv6_close, .close = rawv6_close,
.connect = ip6_datagram_connect, .connect = ip6_datagram_connect,
.disconnect = udp_disconnect, .disconnect = udp_disconnect,
.ioctl = rawv6_ioctl, .ioctl = rawv6_ioctl,
.init = rawv6_init_sk, .init = rawv6_init_sk,
.destroy = inet6_destroy_sock, .destroy = inet6_destroy_sock,
.setsockopt = rawv6_setsockopt, .setsockopt = rawv6_setsockopt,
.getsockopt = rawv6_getsockopt, .getsockopt = rawv6_getsockopt,
.sendmsg = rawv6_sendmsg,
.recvmsg = rawv6_recvmsg,
.bind = rawv6_bind,
.backlog_rcv = rawv6_rcv_skb,
.hash = raw_v6_hash,
.unhash = raw_v6_unhash,
.obj_size = sizeof(struct raw6_sock),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_rawv6_setsockopt, .compat_setsockopt = compat_rawv6_setsockopt,
.compat_getsockopt = compat_rawv6_getsockopt, .compat_getsockopt = compat_rawv6_getsockopt,
#endif #endif
.sendmsg = rawv6_sendmsg,
.recvmsg = rawv6_recvmsg,
.bind = rawv6_bind,
.backlog_rcv = rawv6_rcv_skb,
.hash = raw_v6_hash,
.unhash = raw_v6_unhash,
.obj_size = sizeof(struct raw6_sock),
}; };
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
......
...@@ -1298,22 +1298,21 @@ static int tcp_v6_remember_stamp(struct sock *sk) ...@@ -1298,22 +1298,21 @@ static int tcp_v6_remember_stamp(struct sock *sk)
} }
static struct inet_connection_sock_af_ops ipv6_specific = { static struct inet_connection_sock_af_ops ipv6_specific = {
.queue_xmit = inet6_csk_xmit, .queue_xmit = inet6_csk_xmit,
.send_check = tcp_v6_send_check, .send_check = tcp_v6_send_check,
.rebuild_header = inet6_sk_rebuild_header, .rebuild_header = inet6_sk_rebuild_header,
.conn_request = tcp_v6_conn_request, .conn_request = tcp_v6_conn_request,
.syn_recv_sock = tcp_v6_syn_recv_sock, .syn_recv_sock = tcp_v6_syn_recv_sock,
.remember_stamp = tcp_v6_remember_stamp, .remember_stamp = tcp_v6_remember_stamp,
.net_header_len = sizeof(struct ipv6hdr), .net_header_len = sizeof(struct ipv6hdr),
.setsockopt = ipv6_setsockopt,
.setsockopt = ipv6_setsockopt, .getsockopt = ipv6_getsockopt,
.getsockopt = ipv6_getsockopt, .addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ipv6_setsockopt, .compat_setsockopt = compat_ipv6_setsockopt,
.compat_getsockopt = compat_ipv6_getsockopt, .compat_getsockopt = compat_ipv6_getsockopt,
#endif #endif
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6)
}; };
/* /*
...@@ -1321,26 +1320,23 @@ static struct inet_connection_sock_af_ops ipv6_specific = { ...@@ -1321,26 +1320,23 @@ static struct inet_connection_sock_af_ops ipv6_specific = {
*/ */
static struct inet_connection_sock_af_ops ipv6_mapped = { static struct inet_connection_sock_af_ops ipv6_mapped = {
.queue_xmit = ip_queue_xmit, .queue_xmit = ip_queue_xmit,
.send_check = tcp_v4_send_check, .send_check = tcp_v4_send_check,
.rebuild_header = inet_sk_rebuild_header, .rebuild_header = inet_sk_rebuild_header,
.conn_request = tcp_v6_conn_request, .conn_request = tcp_v6_conn_request,
.syn_recv_sock = tcp_v6_syn_recv_sock, .syn_recv_sock = tcp_v6_syn_recv_sock,
.remember_stamp = tcp_v4_remember_stamp, .remember_stamp = tcp_v4_remember_stamp,
.net_header_len = sizeof(struct iphdr), .net_header_len = sizeof(struct iphdr),
.setsockopt = ipv6_setsockopt,
.setsockopt = ipv6_setsockopt, .getsockopt = ipv6_getsockopt,
.getsockopt = ipv6_getsockopt, .addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ipv6_setsockopt, .compat_setsockopt = compat_ipv6_setsockopt,
.compat_getsockopt = compat_ipv6_getsockopt, .compat_getsockopt = compat_ipv6_getsockopt,
#endif #endif
.addr2sockaddr = inet6_csk_addr2sockaddr,
.sockaddr_len = sizeof(struct sockaddr_in6)
}; };
/* NOTE: A lot of things set to zero explicitly by call to /* NOTE: A lot of things set to zero explicitly by call to
* sk_alloc() so need not be done here. * sk_alloc() so need not be done here.
*/ */
...@@ -1574,10 +1570,6 @@ struct proto tcpv6_prot = { ...@@ -1574,10 +1570,6 @@ struct proto tcpv6_prot = {
.shutdown = tcp_shutdown, .shutdown = tcp_shutdown,
.setsockopt = tcp_setsockopt, .setsockopt = tcp_setsockopt,
.getsockopt = tcp_getsockopt, .getsockopt = tcp_getsockopt,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_tcp_setsockopt,
.compat_getsockopt = compat_tcp_getsockopt,
#endif
.sendmsg = tcp_sendmsg, .sendmsg = tcp_sendmsg,
.recvmsg = tcp_recvmsg, .recvmsg = tcp_recvmsg,
.backlog_rcv = tcp_v6_do_rcv, .backlog_rcv = tcp_v6_do_rcv,
...@@ -1596,6 +1588,10 @@ struct proto tcpv6_prot = { ...@@ -1596,6 +1588,10 @@ struct proto tcpv6_prot = {
.obj_size = sizeof(struct tcp6_sock), .obj_size = sizeof(struct tcp6_sock),
.twsk_prot = &tcp6_timewait_sock_ops, .twsk_prot = &tcp6_timewait_sock_ops,
.rsk_prot = &tcp6_request_sock_ops, .rsk_prot = &tcp6_request_sock_ops,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_tcp_setsockopt,
.compat_getsockopt = compat_tcp_getsockopt,
#endif
}; };
static struct inet6_protocol tcpv6_protocol = { static struct inet6_protocol tcpv6_protocol = {
......
...@@ -934,11 +934,11 @@ static int udpv6_setsockopt(struct sock *sk, int level, int optname, ...@@ -934,11 +934,11 @@ static int udpv6_setsockopt(struct sock *sk, int level, int optname,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
static int compat_udpv6_setsockopt(struct sock *sk, int level, int optname, static int compat_udpv6_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int optlen) char __user *optval, int optlen)
{ {
if (level != SOL_UDP) if (level != SOL_UDP)
return compat_ipv6_setsockopt(sk, level, return compat_ipv6_setsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
return do_udpv6_setsockopt(sk, level, optname, optval, optlen); return do_udpv6_setsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -987,11 +987,11 @@ static int udpv6_getsockopt(struct sock *sk, int level, int optname, ...@@ -987,11 +987,11 @@ static int udpv6_getsockopt(struct sock *sk, int level, int optname,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
static int compat_udpv6_getsockopt(struct sock *sk, int level, int optname, static int compat_udpv6_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen) char __user *optval, int __user *optlen)
{ {
if (level != SOL_UDP) if (level != SOL_UDP)
return compat_ipv6_getsockopt(sk, level, return compat_ipv6_getsockopt(sk, level, optname,
optname, optval, optlen); optval, optlen);
return do_udpv6_getsockopt(sk, level, optname, optval, optlen); return do_udpv6_getsockopt(sk, level, optname, optval, optlen);
} }
#endif #endif
...@@ -1069,26 +1069,26 @@ void udp6_proc_exit(void) { ...@@ -1069,26 +1069,26 @@ void udp6_proc_exit(void) {
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
struct proto udpv6_prot = { struct proto udpv6_prot = {
.name = "UDPv6", .name = "UDPv6",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.close = udpv6_close, .close = udpv6_close,
.connect = ip6_datagram_connect, .connect = ip6_datagram_connect,
.disconnect = udp_disconnect, .disconnect = udp_disconnect,
.ioctl = udp_ioctl, .ioctl = udp_ioctl,
.destroy = udpv6_destroy_sock, .destroy = udpv6_destroy_sock,
.setsockopt = udpv6_setsockopt, .setsockopt = udpv6_setsockopt,
.getsockopt = udpv6_getsockopt, .getsockopt = udpv6_getsockopt,
.sendmsg = udpv6_sendmsg,
.recvmsg = udpv6_recvmsg,
.backlog_rcv = udpv6_queue_rcv_skb,
.hash = udp_v6_hash,
.unhash = udp_v6_unhash,
.get_port = udp_v6_get_port,
.obj_size = sizeof(struct udp6_sock),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_udpv6_setsockopt, .compat_setsockopt = compat_udpv6_setsockopt,
.compat_getsockopt = compat_udpv6_getsockopt, .compat_getsockopt = compat_udpv6_getsockopt,
#endif #endif
.sendmsg = udpv6_sendmsg,
.recvmsg = udpv6_recvmsg,
.backlog_rcv = udpv6_queue_rcv_skb,
.hash = udp_v6_hash,
.unhash = udp_v6_unhash,
.get_port = udp_v6_get_port,
.obj_size = sizeof(struct udp6_sock),
}; };
static struct inet_protosw udpv6_protosw = { static struct inet_protosw udpv6_protosw = {
......
...@@ -133,7 +133,7 @@ EXPORT_SYMBOL(nf_getsockopt); ...@@ -133,7 +133,7 @@ EXPORT_SYMBOL(nf_getsockopt);
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
static int compat_nf_sockopt(struct sock *sk, int pf, int val, static int compat_nf_sockopt(struct sock *sk, int pf, int val,
char __user *opt, int *len, int get) char __user *opt, int *len, int get)
{ {
struct list_head *i; struct list_head *i;
struct nf_sockopt_ops *ops; struct nf_sockopt_ops *ops;
......
...@@ -861,27 +861,27 @@ static int sctp_inet6_supported_addrs(const struct sctp_sock *opt, ...@@ -861,27 +861,27 @@ static int sctp_inet6_supported_addrs(const struct sctp_sock *opt,
} }
static const struct proto_ops inet6_seqpacket_ops = { static const struct proto_ops inet6_seqpacket_ops = {
.family = PF_INET6, .family = PF_INET6,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = inet6_release, .release = inet6_release,
.bind = inet6_bind, .bind = inet6_bind,
.connect = inet_dgram_connect, .connect = inet_dgram_connect,
.socketpair = sock_no_socketpair, .socketpair = sock_no_socketpair,
.accept = inet_accept, .accept = inet_accept,
.getname = inet6_getname, .getname = inet6_getname,
.poll = sctp_poll, .poll = sctp_poll,
.ioctl = inet6_ioctl, .ioctl = inet6_ioctl,
.listen = sctp_inet_listen, .listen = sctp_inet_listen,
.shutdown = inet_shutdown, .shutdown = inet_shutdown,
.setsockopt = sock_common_setsockopt, .setsockopt = sock_common_setsockopt,
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
}; };
static struct inet_protosw sctpv6_seqpacket_protosw = { static struct inet_protosw sctpv6_seqpacket_protosw = {
...@@ -915,35 +915,35 @@ static struct inet6_protocol sctpv6_protocol = { ...@@ -915,35 +915,35 @@ static struct inet6_protocol sctpv6_protocol = {
}; };
static struct sctp_af sctp_ipv6_specific = { static struct sctp_af sctp_ipv6_specific = {
.sctp_xmit = sctp_v6_xmit, .sa_family = AF_INET6,
.setsockopt = ipv6_setsockopt, .sctp_xmit = sctp_v6_xmit,
.getsockopt = ipv6_getsockopt, .setsockopt = ipv6_setsockopt,
.getsockopt = ipv6_getsockopt,
.get_dst = sctp_v6_get_dst,
.get_saddr = sctp_v6_get_saddr,
.copy_addrlist = sctp_v6_copy_addrlist,
.from_skb = sctp_v6_from_skb,
.from_sk = sctp_v6_from_sk,
.to_sk_saddr = sctp_v6_to_sk_saddr,
.to_sk_daddr = sctp_v6_to_sk_daddr,
.from_addr_param = sctp_v6_from_addr_param,
.to_addr_param = sctp_v6_to_addr_param,
.dst_saddr = sctp_v6_dst_saddr,
.cmp_addr = sctp_v6_cmp_addr,
.scope = sctp_v6_scope,
.addr_valid = sctp_v6_addr_valid,
.inaddr_any = sctp_v6_inaddr_any,
.is_any = sctp_v6_is_any,
.available = sctp_v6_available,
.skb_iif = sctp_v6_skb_iif,
.is_ce = sctp_v6_is_ce,
.seq_dump_addr = sctp_v6_seq_dump_addr,
.net_header_len = sizeof(struct ipv6hdr),
.sockaddr_len = sizeof(struct sockaddr_in6),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ipv6_setsockopt, .compat_setsockopt = compat_ipv6_setsockopt,
.compat_getsockopt = compat_ipv6_getsockopt, .compat_getsockopt = compat_ipv6_getsockopt,
#endif #endif
.get_dst = sctp_v6_get_dst,
.get_saddr = sctp_v6_get_saddr,
.copy_addrlist = sctp_v6_copy_addrlist,
.from_skb = sctp_v6_from_skb,
.from_sk = sctp_v6_from_sk,
.to_sk_saddr = sctp_v6_to_sk_saddr,
.to_sk_daddr = sctp_v6_to_sk_daddr,
.from_addr_param = sctp_v6_from_addr_param,
.to_addr_param = sctp_v6_to_addr_param,
.dst_saddr = sctp_v6_dst_saddr,
.cmp_addr = sctp_v6_cmp_addr,
.scope = sctp_v6_scope,
.addr_valid = sctp_v6_addr_valid,
.inaddr_any = sctp_v6_inaddr_any,
.is_any = sctp_v6_is_any,
.available = sctp_v6_available,
.skb_iif = sctp_v6_skb_iif,
.is_ce = sctp_v6_is_ce,
.seq_dump_addr = sctp_v6_seq_dump_addr,
.net_header_len = sizeof(struct ipv6hdr),
.sockaddr_len = sizeof(struct sockaddr_in6),
.sa_family = AF_INET6,
}; };
static struct sctp_pf sctp_pf_inet6_specific = { static struct sctp_pf sctp_pf_inet6_specific = {
......
...@@ -831,28 +831,28 @@ static struct notifier_block sctp_inetaddr_notifier = { ...@@ -831,28 +831,28 @@ static struct notifier_block sctp_inetaddr_notifier = {
/* Socket operations. */ /* Socket operations. */
static const struct proto_ops inet_seqpacket_ops = { static const struct proto_ops inet_seqpacket_ops = {
.family = PF_INET, .family = PF_INET,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.release = inet_release, /* Needs to be wrapped... */ .release = inet_release, /* Needs to be wrapped... */
.bind = inet_bind, .bind = inet_bind,
.connect = inet_dgram_connect, .connect = inet_dgram_connect,
.socketpair = sock_no_socketpair, .socketpair = sock_no_socketpair,
.accept = inet_accept, .accept = inet_accept,
.getname = inet_getname, /* Semantics are different. */ .getname = inet_getname, /* Semantics are different. */
.poll = sctp_poll, .poll = sctp_poll,
.ioctl = inet_ioctl, .ioctl = inet_ioctl,
.listen = sctp_inet_listen, .listen = sctp_inet_listen,
.shutdown = inet_shutdown, /* Looks harmless. */ .shutdown = inet_shutdown, /* Looks harmless. */
.setsockopt = sock_common_setsockopt, /* IP_SOL IP_OPTION is a problem. */ .setsockopt = sock_common_setsockopt, /* IP_SOL IP_OPTION is a problem */
.getsockopt = sock_common_getsockopt, .getsockopt = sock_common_getsockopt,
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = sock_no_sendpage,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt, .compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt, .compat_getsockopt = compat_sock_common_getsockopt,
#endif #endif
.sendmsg = inet_sendmsg,
.recvmsg = sock_common_recvmsg,
.mmap = sock_no_mmap,
.sendpage = sock_no_sendpage,
}; };
/* Registration with AF_INET family. */ /* Registration with AF_INET family. */
...@@ -884,35 +884,35 @@ static struct net_protocol sctp_protocol = { ...@@ -884,35 +884,35 @@ static struct net_protocol sctp_protocol = {
/* IPv4 address related functions. */ /* IPv4 address related functions. */
static struct sctp_af sctp_ipv4_specific = { static struct sctp_af sctp_ipv4_specific = {
.sctp_xmit = sctp_v4_xmit, .sa_family = AF_INET,
.setsockopt = ip_setsockopt, .sctp_xmit = sctp_v4_xmit,
.getsockopt = ip_getsockopt, .setsockopt = ip_setsockopt,
.getsockopt = ip_getsockopt,
.get_dst = sctp_v4_get_dst,
.get_saddr = sctp_v4_get_saddr,
.copy_addrlist = sctp_v4_copy_addrlist,
.from_skb = sctp_v4_from_skb,
.from_sk = sctp_v4_from_sk,
.to_sk_saddr = sctp_v4_to_sk_saddr,
.to_sk_daddr = sctp_v4_to_sk_daddr,
.from_addr_param = sctp_v4_from_addr_param,
.to_addr_param = sctp_v4_to_addr_param,
.dst_saddr = sctp_v4_dst_saddr,
.cmp_addr = sctp_v4_cmp_addr,
.addr_valid = sctp_v4_addr_valid,
.inaddr_any = sctp_v4_inaddr_any,
.is_any = sctp_v4_is_any,
.available = sctp_v4_available,
.scope = sctp_v4_scope,
.skb_iif = sctp_v4_skb_iif,
.is_ce = sctp_v4_is_ce,
.seq_dump_addr = sctp_v4_seq_dump_addr,
.net_header_len = sizeof(struct iphdr),
.sockaddr_len = sizeof(struct sockaddr_in),
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_ip_setsockopt, .compat_setsockopt = compat_ip_setsockopt,
.compat_getsockopt = compat_ip_getsockopt, .compat_getsockopt = compat_ip_getsockopt,
#endif #endif
.get_dst = sctp_v4_get_dst,
.get_saddr = sctp_v4_get_saddr,
.copy_addrlist = sctp_v4_copy_addrlist,
.from_skb = sctp_v4_from_skb,
.from_sk = sctp_v4_from_sk,
.to_sk_saddr = sctp_v4_to_sk_saddr,
.to_sk_daddr = sctp_v4_to_sk_daddr,
.from_addr_param= sctp_v4_from_addr_param,
.to_addr_param = sctp_v4_to_addr_param,
.dst_saddr = sctp_v4_dst_saddr,
.cmp_addr = sctp_v4_cmp_addr,
.addr_valid = sctp_v4_addr_valid,
.inaddr_any = sctp_v4_inaddr_any,
.is_any = sctp_v4_is_any,
.available = sctp_v4_available,
.scope = sctp_v4_scope,
.skb_iif = sctp_v4_skb_iif,
.is_ce = sctp_v4_is_ce,
.seq_dump_addr = sctp_v4_seq_dump_addr,
.net_header_len = sizeof(struct iphdr),
.sockaddr_len = sizeof(struct sockaddr_in),
.sa_family = AF_INET,
}; };
struct sctp_pf *sctp_get_pf_specific(sa_family_t family) { struct sctp_pf *sctp_get_pf_specific(sa_family_t family) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册