/* Checksum each fragment, and on the first include the headers and final checksum.  */
static int icmp_glue_bits(void *from, char *to, int offset, int len, int odd, struct sk_buff *skb)
/* Checksum each fragment, and on the first include the headers and final checksum.  */
static int icmp_glue_bits(void *from, char *to, int offset, int len, int odd, struct sk_buff *skb)
{
	struct icmp_bxm *icmp_param = (struct icmp_bxm *)from;
	__wsum csum;
	csum = skb_copy_and_csum_bits(icmp_param->skb,
				      icmp_param->offset + offset,
				      to, len, 0);
	skb->csum = csum_block_add(skb->csum, csum, odd);
	if (icmp_pointers[icmp_param->data.icmph.type].error)
		nf_ct_attach(skb, icmp_param->skb);
	return 0;
}