|
@@ -672,7 +672,6 @@ static struct sock *dccp_v6_hnd_req(struct sock *sk,struct sk_buff *skb)
|
|
|
|
|
|
static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
|
|
|
{
|
|
|
- struct inet_request_sock *ireq;
|
|
|
struct dccp_sock dp;
|
|
|
struct request_sock *req;
|
|
|
struct dccp_request_sock *dreq;
|
|
@@ -701,7 +700,7 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
|
|
|
if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1)
|
|
|
goto drop;
|
|
|
|
|
|
- req = inet6_reqsk_alloc(sk->sk_prot->rsk_prot);
|
|
|
+ req = inet6_reqsk_alloc(&dccp6_request_sock_ops);
|
|
|
if (req == NULL)
|
|
|
goto drop;
|
|
|
|
|
@@ -713,7 +712,6 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
|
|
|
goto drop_and_free;
|
|
|
|
|
|
ireq6 = inet6_rsk(req);
|
|
|
- ireq = inet_rsk(req);
|
|
|
ipv6_addr_copy(&ireq6->rmt_addr, &skb->nh.ipv6h->saddr);
|
|
|
ipv6_addr_copy(&ireq6->loc_addr, &skb->nh.ipv6h->daddr);
|
|
|
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)
|
|
|
if (sk->sk_state == DCCP_OPEN) { /* Fast path */
|
|
|
if (dccp_rcv_established(sk, skb, dccp_hdr(skb), skb->len))
|
|
|
goto reset;
|
|
|
+ if (opt_skb) {
|
|
|
+ /* This is where we would goto ipv6_pktoptions. */
|
|
|
+ __kfree_skb(opt_skb);
|
|
|
+ }
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -1021,6 +1023,10 @@ static int dccp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
|
|
|
|
|
|
if (dccp_rcv_state_process(sk, skb, dccp_hdr(skb), skb->len))
|
|
|
goto reset;
|
|
|
+ if (opt_skb) {
|
|
|
+ /* This is where we would goto ipv6_pktoptions. */
|
|
|
+ __kfree_skb(opt_skb);
|
|
|
+ }
|
|
|
return 0;
|
|
|
|
|
|
reset:
|