Lines Matching refs:head
212 struct sk_buff *head = qp->q.fragments; in ip_expire() local
222 head->dev = dev_get_by_index_rcu(net, qp->iif); in ip_expire()
223 if (!head->dev) in ip_expire()
227 iph = ip_hdr(head); in ip_expire()
228 err = ip_route_input_noref(head, iph->daddr, iph->saddr, in ip_expire()
229 iph->tos, head->dev); in ip_expire()
237 (skb_rtable(head)->rt_type != RTN_LOCAL)) in ip_expire()
241 icmp_send(head, ICMP_TIME_EXCEEDED, ICMP_EXC_FRAGTIME, 0); in ip_expire()
529 struct sk_buff *fp, *head = qp->q.fragments; in ip_frag_reasm() local
544 head = prev->next; in ip_frag_reasm()
545 fp = skb_clone(head, GFP_ATOMIC); in ip_frag_reasm()
549 fp->next = head->next; in ip_frag_reasm()
554 skb_morph(head, qp->q.fragments); in ip_frag_reasm()
555 head->next = qp->q.fragments->next; in ip_frag_reasm()
558 qp->q.fragments = head; in ip_frag_reasm()
561 WARN_ON(!head); in ip_frag_reasm()
562 WARN_ON(FRAG_CB(head)->offset != 0); in ip_frag_reasm()
565 ihlen = ip_hdrlen(head); in ip_frag_reasm()
573 if (skb_unclone(head, GFP_ATOMIC)) in ip_frag_reasm()
579 if (skb_has_frag_list(head)) { in ip_frag_reasm()
586 clone->next = head->next; in ip_frag_reasm()
587 head->next = clone; in ip_frag_reasm()
588 skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list; in ip_frag_reasm()
589 skb_frag_list_init(head); in ip_frag_reasm()
590 for (i = 0; i < skb_shinfo(head)->nr_frags; i++) in ip_frag_reasm()
591 plen += skb_frag_size(&skb_shinfo(head)->frags[i]); in ip_frag_reasm()
592 clone->len = clone->data_len = head->data_len - plen; in ip_frag_reasm()
593 head->data_len -= clone->len; in ip_frag_reasm()
594 head->len -= clone->len; in ip_frag_reasm()
596 clone->ip_summed = head->ip_summed; in ip_frag_reasm()
600 skb_shinfo(head)->frag_list = head->next; in ip_frag_reasm()
601 skb_push(head, head->data - skb_network_header(head)); in ip_frag_reasm()
603 for (fp=head->next; fp; fp = fp->next) { in ip_frag_reasm()
604 head->data_len += fp->len; in ip_frag_reasm()
605 head->len += fp->len; in ip_frag_reasm()
606 if (head->ip_summed != fp->ip_summed) in ip_frag_reasm()
607 head->ip_summed = CHECKSUM_NONE; in ip_frag_reasm()
608 else if (head->ip_summed == CHECKSUM_COMPLETE) in ip_frag_reasm()
609 head->csum = csum_add(head->csum, fp->csum); in ip_frag_reasm()
610 head->truesize += fp->truesize; in ip_frag_reasm()
612 sub_frag_mem_limit(qp->q.net, head->truesize); in ip_frag_reasm()
614 head->next = NULL; in ip_frag_reasm()
615 head->dev = dev; in ip_frag_reasm()
616 head->tstamp = qp->q.stamp; in ip_frag_reasm()
617 IPCB(head)->frag_max_size = max(qp->max_df_size, qp->q.max_size); in ip_frag_reasm()
619 iph = ip_hdr(head); in ip_frag_reasm()
632 IPCB(head)->flags |= IPSKB_FRAG_PMTU; in ip_frag_reasm()