diff options
Diffstat (limited to 'net/dccp')
| -rw-r--r-- | net/dccp/ipv4.c | 4 | ||||
| -rw-r--r-- | net/dccp/ipv6.c | 12 |
2 files changed, 12 insertions, 4 deletions
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c index 7e746c4c1688..aaaf4d09516b 100644 --- a/net/dccp/ipv4.c +++ b/net/dccp/ipv4.c | |||
| @@ -449,6 +449,8 @@ static inline u64 dccp_v4_init_sequence(const struct sock *sk, | |||
| 449 | dccp_hdr(skb)->dccph_sport); | 449 | dccp_hdr(skb)->dccph_sport); |
| 450 | } | 450 | } |
| 451 | 451 | ||
| 452 | static struct request_sock_ops dccp_request_sock_ops; | ||
| 453 | |||
| 452 | int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb) | 454 | int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb) |
| 453 | { | 455 | { |
| 454 | struct inet_request_sock *ireq; | 456 | struct inet_request_sock *ireq; |
| @@ -489,7 +491,7 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb) | |||
| 489 | if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) | 491 | if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) |
| 490 | goto drop; | 492 | goto drop; |
| 491 | 493 | ||
| 492 | req = reqsk_alloc(sk->sk_prot->rsk_prot); | 494 | req = reqsk_alloc(&dccp_request_sock_ops); |
| 493 | if (req == NULL) | 495 | if (req == NULL) |
| 494 | goto drop; | 496 | goto drop; |
| 495 | 497 | ||
diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c index 7171a78671aa..c8bf89bfb088 100644 --- a/net/dccp/ipv6.c +++ b/net/dccp/ipv6.c | |||
| @@ -672,7 +672,6 @@ static struct sock *dccp_v6_hnd_req(struct sock *sk,struct sk_buff *skb) | |||
| 672 | 672 | ||
| 673 | static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb) | 673 | static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb) |
| 674 | { | 674 | { |
| 675 | struct inet_request_sock *ireq; | ||
| 676 | struct dccp_sock dp; | 675 | struct dccp_sock dp; |
| 677 | struct request_sock *req; | 676 | struct request_sock *req; |
| 678 | struct dccp_request_sock *dreq; | 677 | struct dccp_request_sock *dreq; |
| @@ -701,7 +700,7 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb) | |||
| 701 | if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) | 700 | if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) |
| 702 | goto drop; | 701 | goto drop; |
| 703 | 702 | ||
| 704 | req = inet6_reqsk_alloc(sk->sk_prot->rsk_prot); | 703 | req = inet6_reqsk_alloc(&dccp6_request_sock_ops); |
| 705 | if (req == NULL) | 704 | if (req == NULL) |
| 706 | goto drop; | 705 | goto drop; |
| 707 | 706 | ||
| @@ -713,7 +712,6 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb) | |||
| 713 | goto drop_and_free; | 712 | goto drop_and_free; |
| 714 | 713 | ||
| 715 | ireq6 = inet6_rsk(req); | 714 | ireq6 = inet6_rsk(req); |
| 716 | ireq = inet_rsk(req); | ||
| 717 | ipv6_addr_copy(&ireq6->rmt_addr, &skb->nh.ipv6h->saddr); | 715 | ipv6_addr_copy(&ireq6->rmt_addr, &skb->nh.ipv6h->saddr); |
| 718 | ipv6_addr_copy(&ireq6->loc_addr, &skb->nh.ipv6h->daddr); | 716 | ipv6_addr_copy(&ireq6->loc_addr, &skb->nh.ipv6h->daddr); |
| 719 | req->rcv_wnd = dccp_feat_default_sequence_window; | 717 | req->rcv_wnd = dccp_feat_default_sequence_window; |
| @@ -997,6 +995,10 @@ static int dccp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) | |||
| 997 | if (sk->sk_state == DCCP_OPEN) { /* Fast path */ | 995 | if (sk->sk_state == DCCP_OPEN) { /* Fast path */ |
| 998 | if (dccp_rcv_established(sk, skb, dccp_hdr(skb), skb->len)) | 996 | if (dccp_rcv_established(sk, skb, dccp_hdr(skb), skb->len)) |
| 999 | goto reset; | 997 | goto reset; |
| 998 | if (opt_skb) { | ||
| 999 | /* This is where we would goto ipv6_pktoptions. */ | ||
| 1000 | __kfree_skb(opt_skb); | ||
| 1001 | } | ||
| 1000 | return 0; | 1002 | return 0; |
| 1001 | } | 1003 | } |
| 1002 | 1004 | ||
| @@ -1021,6 +1023,10 @@ static int dccp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) | |||
| 1021 | 1023 | ||
| 1022 | if (dccp_rcv_state_process(sk, skb, dccp_hdr(skb), skb->len)) | 1024 | if (dccp_rcv_state_process(sk, skb, dccp_hdr(skb), skb->len)) |
| 1023 | goto reset; | 1025 | goto reset; |
| 1026 | if (opt_skb) { | ||
| 1027 | /* This is where we would goto ipv6_pktoptions. */ | ||
| 1028 | __kfree_skb(opt_skb); | ||
| 1029 | } | ||
| 1024 | return 0; | 1030 | return 0; |
| 1025 | 1031 | ||
| 1026 | reset: | 1032 | reset: |
