Lines Matching refs:icmp_param

350 	struct icmp_bxm *icmp_param = from;
353 csum = skb_copy_and_csum_bits(icmp_param->skb,
354 icmp_param->offset + offset,
358 if (icmp_pointers[icmp_param->data.icmph.type].error)
359 nf_ct_attach(skb, icmp_param->skb);
364 struct icmp_bxm *icmp_param,
370 if (ip_append_data(sk, fl4, icmp_glue_bits, icmp_param,
371 icmp_param->data_len+icmp_param->head_len,
372 icmp_param->head_len,
381 csum = csum_partial_copy_nocheck((void *)&icmp_param->data,
383 icmp_param->head_len);
397 static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb)
407 int type = icmp_param->data.icmph.type;
408 int code = icmp_param->data.icmph.code;
410 if (ip_options_echo(net, &icmp_param->replyopts.opt.opt, skb))
425 icmp_param->data.icmph.checksum = 0;
433 if (icmp_param->replyopts.opt.opt.optlen) {
434 ipc.opt = &icmp_param->replyopts.opt;
436 daddr = icmp_param->replyopts.opt.opt.faddr;
451 icmp_push_reply(sk, icmp_param, &fl4, &ipc, &rt);
592 struct icmp_bxm icmp_param;
716 if (__ip_options_echo(net, &icmp_param.replyopts.opt.opt, skb_in, opt))
724 icmp_param.data.icmph.type = type;
725 icmp_param.data.icmph.code = code;
726 icmp_param.data.icmph.un.gateway = info;
727 icmp_param.data.icmph.checksum = 0;
728 icmp_param.skb = skb_in;
729 icmp_param.offset = skb_network_offset(skb_in);
733 ipc.opt = &icmp_param.replyopts.opt;
737 type, code, &icmp_param);
750 room -= sizeof(struct iphdr) + icmp_param.replyopts.opt.opt.optlen;
758 icmp_param.data_len = skb_in->len - icmp_param.offset;
759 if (icmp_param.data_len > room)
760 icmp_param.data_len = room;
761 icmp_param.head_len = sizeof(struct icmphdr);
770 icmp_push_reply(sk, &icmp_param, &fl4, &ipc, &rt);
1000 struct icmp_bxm icmp_param;
1008 icmp_param.data.icmph = *icmp_hdr(skb);
1009 icmp_param.skb = skb;
1010 icmp_param.offset = 0;
1011 icmp_param.data_len = skb->len;
1012 icmp_param.head_len = sizeof(struct icmphdr);
1014 if (icmp_param.data.icmph.type == ICMP_ECHO)
1015 icmp_param.data.icmph.type = ICMP_ECHOREPLY;
1016 else if (!icmp_build_probe(skb, &icmp_param.data.icmph))
1019 icmp_reply(&icmp_param, skb);
1140 struct icmp_bxm icmp_param;
1150 icmp_param.data.times[1] = inet_current_timestamp();
1151 icmp_param.data.times[2] = icmp_param.data.times[1];
1153 BUG_ON(skb_copy_bits(skb, 0, &icmp_param.data.times[0], 4));
1155 icmp_param.data.icmph = *icmp_hdr(skb);
1156 icmp_param.data.icmph.type = ICMP_TIMESTAMPREPLY;
1157 icmp_param.data.icmph.code = 0;
1158 icmp_param.skb = skb;
1159 icmp_param.offset = 0;
1160 icmp_param.data_len = 0;
1161 icmp_param.head_len = sizeof(struct icmphdr) + 12;
1162 icmp_reply(&icmp_param, skb);