Lines Matching refs:skb
26 static void dccp_enqueue_skb(struct sock *sk, struct sk_buff *skb) in dccp_enqueue_skb() argument
28 __skb_pull(skb, dccp_hdr(skb)->dccph_doff * 4); in dccp_enqueue_skb()
29 __skb_queue_tail(&sk->sk_receive_queue, skb); in dccp_enqueue_skb()
30 skb_set_owner_r(skb, sk); in dccp_enqueue_skb()
34 static void dccp_fin(struct sock *sk, struct sk_buff *skb) in dccp_fin() argument
44 dccp_enqueue_skb(sk, skb); in dccp_fin()
47 static int dccp_rcv_close(struct sock *sk, struct sk_buff *skb) in dccp_rcv_close() argument
81 dccp_fin(sk, skb); in dccp_rcv_close()
93 static int dccp_rcv_closereq(struct sock *sk, struct sk_buff *skb) in dccp_rcv_closereq() argument
104 dccp_send_sync(sk, DCCP_SKB_CB(skb)->dccpd_seq, DCCP_PKT_SYNC); in dccp_rcv_closereq()
118 dccp_fin(sk, skb); in dccp_rcv_closereq()
149 static void dccp_rcv_reset(struct sock *sk, struct sk_buff *skb) in dccp_rcv_reset() argument
151 u16 err = dccp_reset_code_convert(dccp_hdr_reset(skb)->dccph_reset_code); in dccp_rcv_reset()
156 dccp_fin(sk, skb); in dccp_rcv_reset()
163 static void dccp_handle_ackvec_processing(struct sock *sk, struct sk_buff *skb) in dccp_handle_ackvec_processing() argument
169 if (DCCP_SKB_CB(skb)->dccpd_ack_seq != DCCP_PKT_WITHOUT_ACK_SEQ) in dccp_handle_ackvec_processing()
170 dccp_ackvec_clear_state(av, DCCP_SKB_CB(skb)->dccpd_ack_seq); in dccp_handle_ackvec_processing()
171 dccp_ackvec_input(av, skb); in dccp_handle_ackvec_processing()
174 static void dccp_deliver_input_to_ccids(struct sock *sk, struct sk_buff *skb) in dccp_deliver_input_to_ccids() argument
180 ccid_hc_rx_packet_recv(dp->dccps_hc_rx_ccid, sk, skb); in dccp_deliver_input_to_ccids()
186 ccid_hc_tx_packet_recv(dp->dccps_hc_tx_ccid, sk, skb); in dccp_deliver_input_to_ccids()
189 static int dccp_check_seqno(struct sock *sk, struct sk_buff *skb) in dccp_check_seqno() argument
191 const struct dccp_hdr *dh = dccp_hdr(skb); in dccp_check_seqno()
193 u64 lswl, lawl, seqno = DCCP_SKB_CB(skb)->dccpd_seq, in dccp_check_seqno()
194 ackno = DCCP_SKB_CB(skb)->dccpd_ack_seq; in dccp_check_seqno()
287 static int __dccp_rcv_established(struct sock *sk, struct sk_buff *skb, in __dccp_rcv_established() argument
292 switch (dccp_hdr(skb)->dccph_type) { in __dccp_rcv_established()
300 dccp_enqueue_skb(sk, skb); in __dccp_rcv_established()
313 dccp_rcv_reset(sk, skb); in __dccp_rcv_established()
316 if (dccp_rcv_closereq(sk, skb)) in __dccp_rcv_established()
320 if (dccp_rcv_close(sk, skb)) in __dccp_rcv_established()
343 DCCP_SKB_CB(skb)->dccpd_seq) >= 0) { in __dccp_rcv_established()
345 dccp_send_sync(sk, DCCP_SKB_CB(skb)->dccpd_seq, in __dccp_rcv_established()
350 dccp_send_sync(sk, DCCP_SKB_CB(skb)->dccpd_seq, in __dccp_rcv_established()
364 __kfree_skb(skb); in __dccp_rcv_established()
368 int dccp_rcv_established(struct sock *sk, struct sk_buff *skb, in dccp_rcv_established() argument
371 if (dccp_check_seqno(sk, skb)) in dccp_rcv_established()
374 if (dccp_parse_options(sk, NULL, skb)) in dccp_rcv_established()
377 dccp_handle_ackvec_processing(sk, skb); in dccp_rcv_established()
378 dccp_deliver_input_to_ccids(sk, skb); in dccp_rcv_established()
380 return __dccp_rcv_established(sk, skb, dh, len); in dccp_rcv_established()
382 __kfree_skb(skb); in dccp_rcv_established()
389 struct sk_buff *skb, in dccp_rcv_request_sent_state_process() argument
409 if (!between48(DCCP_SKB_CB(skb)->dccpd_ack_seq, in dccp_rcv_request_sent_state_process()
414 (unsigned long long)DCCP_SKB_CB(skb)->dccpd_ack_seq, in dccp_rcv_request_sent_state_process()
424 if (dccp_parse_options(sk, NULL, skb)) in dccp_rcv_request_sent_state_process()
445 dp->dccps_gsr = dp->dccps_isr = DCCP_SKB_CB(skb)->dccpd_seq; in dccp_rcv_request_sent_state_process()
498 __kfree_skb(skb); in dccp_rcv_request_sent_state_process()
507 DCCP_SKB_CB(skb)->dccpd_reset_code = DCCP_RESET_CODE_PACKET_ERROR; in dccp_rcv_request_sent_state_process()
511 DCCP_SKB_CB(skb)->dccpd_reset_code = DCCP_RESET_CODE_ABORTED; in dccp_rcv_request_sent_state_process()
522 struct sk_buff *skb, in dccp_rcv_respond_partopen_state_process() argument
559 dp->dccps_osr = DCCP_SKB_CB(skb)->dccpd_seq; in dccp_rcv_respond_partopen_state_process()
564 __dccp_rcv_established(sk, skb, dh, len); in dccp_rcv_respond_partopen_state_process()
574 int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb, in dccp_rcv_state_process() argument
578 struct dccp_skb_cb *dcb = DCCP_SKB_CB(skb); in dccp_rcv_state_process()
607 skb) < 0) in dccp_rcv_state_process()
623 if (sk->sk_state != DCCP_REQUESTING && dccp_check_seqno(sk, skb)) in dccp_rcv_state_process()
644 if (dccp_parse_options(sk, NULL, skb)) in dccp_rcv_state_process()
656 dccp_rcv_reset(sk, skb); in dccp_rcv_state_process()
659 if (dccp_rcv_closereq(sk, skb)) in dccp_rcv_state_process()
663 if (dccp_rcv_close(sk, skb)) in dccp_rcv_state_process()
670 queued = dccp_rcv_request_sent_state_process(sk, skb, dh, len); in dccp_rcv_state_process()
674 __kfree_skb(skb); in dccp_rcv_state_process()
679 dccp_handle_ackvec_processing(sk, skb); in dccp_rcv_state_process()
680 dccp_deliver_input_to_ccids(sk, skb); in dccp_rcv_state_process()
683 queued = dccp_rcv_respond_partopen_state_process(sk, skb, in dccp_rcv_state_process()
703 __kfree_skb(skb); in dccp_rcv_state_process()