aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ping.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/ping.c')
-rw-r--r--net/ipv6/ping.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/net/ipv6/ping.c b/net/ipv6/ping.c
index a83243c3d656..fb9beb78f00b 100644
--- a/net/ipv6/ping.c
+++ b/net/ipv6/ping.c
@@ -31,7 +31,7 @@ struct proto pingv6_prot = {
31 .owner = THIS_MODULE, 31 .owner = THIS_MODULE,
32 .init = ping_init_sock, 32 .init = ping_init_sock,
33 .close = ping_close, 33 .close = ping_close,
34 .connect = ip6_datagram_connect, 34 .connect = ip6_datagram_connect_v6_only,
35 .disconnect = udp_disconnect, 35 .disconnect = udp_disconnect,
36 .setsockopt = ipv6_setsockopt, 36 .setsockopt = ipv6_setsockopt,
37 .getsockopt = ipv6_getsockopt, 37 .getsockopt = ipv6_getsockopt,
@@ -62,10 +62,9 @@ static int dummy_ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len,
62{ 62{
63 return -EAFNOSUPPORT; 63 return -EAFNOSUPPORT;
64} 64}
65static int dummy_ip6_datagram_recv_ctl(struct sock *sk, struct msghdr *msg, 65static void dummy_ip6_datagram_recv_ctl(struct sock *sk, struct msghdr *msg,
66 struct sk_buff *skb) 66 struct sk_buff *skb)
67{ 67{
68 return -EAFNOSUPPORT;
69} 68}
70static int dummy_icmpv6_err_convert(u8 type, u8 code, int *err) 69static int dummy_icmpv6_err_convert(u8 type, u8 code, int *err)
71{ 70{
@@ -103,7 +102,7 @@ int ping_v6_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
103 return err; 102 return err;
104 103
105 if (msg->msg_name) { 104 if (msg->msg_name) {
106 struct sockaddr_in6 *u = (struct sockaddr_in6 *) msg->msg_name; 105 DECLARE_SOCKADDR(struct sockaddr_in6 *, u, msg->msg_name);
107 if (msg->msg_namelen < sizeof(struct sockaddr_in6) || 106 if (msg->msg_namelen < sizeof(struct sockaddr_in6) ||
108 u->sin6_family != AF_INET6) { 107 u->sin6_family != AF_INET6) {
109 return -EINVAL; 108 return -EINVAL;
@@ -145,7 +144,7 @@ int ping_v6_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
145 else if (!fl6.flowi6_oif) 144 else if (!fl6.flowi6_oif)
146 fl6.flowi6_oif = np->ucast_oif; 145 fl6.flowi6_oif = np->ucast_oif;
147 146
148 dst = ip6_sk_dst_lookup_flow(sk, &fl6, daddr, 1); 147 dst = ip6_sk_dst_lookup_flow(sk, &fl6, daddr);
149 if (IS_ERR(dst)) 148 if (IS_ERR(dst))
150 return PTR_ERR(dst); 149 return PTR_ERR(dst);
151 rt = (struct rt6_info *) dst; 150 rt = (struct rt6_info *) dst;
@@ -254,7 +253,9 @@ int __init pingv6_init(void)
254 return ret; 253 return ret;
255#endif 254#endif
256 pingv6_ops.ipv6_recv_error = ipv6_recv_error; 255 pingv6_ops.ipv6_recv_error = ipv6_recv_error;
257 pingv6_ops.ip6_datagram_recv_ctl = ip6_datagram_recv_ctl; 256 pingv6_ops.ip6_datagram_recv_common_ctl = ip6_datagram_recv_common_ctl;
257 pingv6_ops.ip6_datagram_recv_specific_ctl =
258 ip6_datagram_recv_specific_ctl;
258 pingv6_ops.icmpv6_err_convert = icmpv6_err_convert; 259 pingv6_ops.icmpv6_err_convert = icmpv6_err_convert;
259 pingv6_ops.ipv6_icmp_error = ipv6_icmp_error; 260 pingv6_ops.ipv6_icmp_error = ipv6_icmp_error;
260 pingv6_ops.ipv6_chk_addr = ipv6_chk_addr; 261 pingv6_ops.ipv6_chk_addr = ipv6_chk_addr;
@@ -267,7 +268,8 @@ int __init pingv6_init(void)
267void pingv6_exit(void) 268void pingv6_exit(void)
268{ 269{
269 pingv6_ops.ipv6_recv_error = dummy_ipv6_recv_error; 270 pingv6_ops.ipv6_recv_error = dummy_ipv6_recv_error;
270 pingv6_ops.ip6_datagram_recv_ctl = dummy_ip6_datagram_recv_ctl; 271 pingv6_ops.ip6_datagram_recv_common_ctl = dummy_ip6_datagram_recv_ctl;
272 pingv6_ops.ip6_datagram_recv_specific_ctl = dummy_ip6_datagram_recv_ctl;
271 pingv6_ops.icmpv6_err_convert = dummy_icmpv6_err_convert; 273 pingv6_ops.icmpv6_err_convert = dummy_icmpv6_err_convert;
272 pingv6_ops.ipv6_icmp_error = dummy_ipv6_icmp_error; 274 pingv6_ops.ipv6_icmp_error = dummy_ipv6_icmp_error;
273 pingv6_ops.ipv6_chk_addr = dummy_ipv6_chk_addr; 275 pingv6_ops.ipv6_chk_addr = dummy_ipv6_chk_addr;