diff options
Diffstat (limited to 'net/ipv6/ping.c')
-rw-r--r-- | net/ipv6/ping.c | 16 |
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 | } |
65 | static int dummy_ip6_datagram_recv_ctl(struct sock *sk, struct msghdr *msg, | 65 | static 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 | } |
70 | static int dummy_icmpv6_err_convert(u8 type, u8 code, int *err) | 69 | static 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) | |||
267 | void pingv6_exit(void) | 268 | void 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; |