aboutsummaryrefslogtreecommitdiffstats
path: root/net/dccp
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-12-19 18:37:49 -0500
committerDavid S. Miller <davem@davemloft.net>2013-12-19 18:37:49 -0500
commit1669cb9855050fe9d2a13391846f9aceccf42559 (patch)
tree80a2f1229902e9db7fd1552ee770372b351f2036 /net/dccp
parentcb4eae3d525abbe408e7e0efd7841b5c3c13cd0f (diff)
parentb3c6efbc36e2c5ac820b1a800ac17cc3e040de0c (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next
Steffen Klassert says: ==================== pull request (net-next): ipsec-next 2013-12-19 1) Use the user supplied policy index instead of a generated one if present. From Fan Du. 2) Make xfrm migration namespace aware. From Fan Du. 3) Make the xfrm state and policy locks namespace aware. From Fan Du. 4) Remove ancient sleeping when the SA is in acquire state, we now queue packets to the policy instead. This replaces the sleeping code. 5) Remove FLOWI_FLAG_CAN_SLEEP. This was used to notify xfrm about the posibility to sleep. The sleeping code is gone, so remove it. 6) Check user specified spi for IPComp. Thr spi for IPcomp is only 16 bit wide, so check for a valid value. From Fan Du. 7) Export verify_userspi_info to check for valid user supplied spi ranges with pfkey and netlink. From Fan Du. 8) RFC3173 states that if the total size of a compressed payload and the IPComp header is not smaller than the size of the original payload, the IP datagram must be sent in the original non-compressed form. These packets are dropped by the inbound policy check because they are not transformed. Document the need to set 'level use' for IPcomp to receive such packets anyway. From Fan Du. Please pull or let me know if there are problems. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dccp')
-rw-r--r--net/dccp/ipv4.c2
-rw-r--r--net/dccp/ipv6.c8
2 files changed, 5 insertions, 5 deletions
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
index d9f65fc66db5..88299c29101d 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -75,7 +75,7 @@ int dccp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
75 rt = ip_route_connect(fl4, nexthop, inet->inet_saddr, 75 rt = ip_route_connect(fl4, nexthop, inet->inet_saddr,
76 RT_CONN_FLAGS(sk), sk->sk_bound_dev_if, 76 RT_CONN_FLAGS(sk), sk->sk_bound_dev_if,
77 IPPROTO_DCCP, 77 IPPROTO_DCCP,
78 orig_sport, orig_dport, sk, true); 78 orig_sport, orig_dport, sk);
79 if (IS_ERR(rt)) 79 if (IS_ERR(rt))
80 return PTR_ERR(rt); 80 return PTR_ERR(rt);
81 81
diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c
index 629019e6f8e9..4db3c2a1679c 100644
--- a/net/dccp/ipv6.c
+++ b/net/dccp/ipv6.c
@@ -240,7 +240,7 @@ static int dccp_v6_send_response(struct sock *sk, struct request_sock *req)
240 240
241 final_p = fl6_update_dst(&fl6, np->opt, &final); 241 final_p = fl6_update_dst(&fl6, np->opt, &final);
242 242
243 dst = ip6_dst_lookup_flow(sk, &fl6, final_p, false); 243 dst = ip6_dst_lookup_flow(sk, &fl6, final_p);
244 if (IS_ERR(dst)) { 244 if (IS_ERR(dst)) {
245 err = PTR_ERR(dst); 245 err = PTR_ERR(dst);
246 dst = NULL; 246 dst = NULL;
@@ -304,7 +304,7 @@ static void dccp_v6_ctl_send_reset(struct sock *sk, struct sk_buff *rxskb)
304 security_skb_classify_flow(rxskb, flowi6_to_flowi(&fl6)); 304 security_skb_classify_flow(rxskb, flowi6_to_flowi(&fl6));
305 305
306 /* sk = NULL, but it is safe for now. RST socket required. */ 306 /* sk = NULL, but it is safe for now. RST socket required. */
307 dst = ip6_dst_lookup_flow(ctl_sk, &fl6, NULL, false); 307 dst = ip6_dst_lookup_flow(ctl_sk, &fl6, NULL);
308 if (!IS_ERR(dst)) { 308 if (!IS_ERR(dst)) {
309 skb_dst_set(skb, dst); 309 skb_dst_set(skb, dst);
310 ip6_xmit(ctl_sk, skb, &fl6, NULL, 0); 310 ip6_xmit(ctl_sk, skb, &fl6, NULL, 0);
@@ -515,7 +515,7 @@ static struct sock *dccp_v6_request_recv_sock(struct sock *sk,
515 fl6.fl6_sport = htons(ireq->ir_num); 515 fl6.fl6_sport = htons(ireq->ir_num);
516 security_sk_classify_flow(sk, flowi6_to_flowi(&fl6)); 516 security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));
517 517
518 dst = ip6_dst_lookup_flow(sk, &fl6, final_p, false); 518 dst = ip6_dst_lookup_flow(sk, &fl6, final_p);
519 if (IS_ERR(dst)) 519 if (IS_ERR(dst))
520 goto out; 520 goto out;
521 } 521 }
@@ -934,7 +934,7 @@ static int dccp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
934 934
935 final_p = fl6_update_dst(&fl6, np->opt, &final); 935 final_p = fl6_update_dst(&fl6, np->opt, &final);
936 936
937 dst = ip6_dst_lookup_flow(sk, &fl6, final_p, true); 937 dst = ip6_dst_lookup_flow(sk, &fl6, final_p);
938 if (IS_ERR(dst)) { 938 if (IS_ERR(dst)) {
939 err = PTR_ERR(dst); 939 err = PTR_ERR(dst);
940 goto failure; 940 goto failure;