Lines Matching refs:icmp_param

341 	struct icmp_bxm *icmp_param = (struct icmp_bxm *)from;  in icmp_glue_bits()  local
344 csum = skb_copy_and_csum_bits(icmp_param->skb, in icmp_glue_bits()
345 icmp_param->offset + offset, in icmp_glue_bits()
349 if (icmp_pointers[icmp_param->data.icmph.type].error) in icmp_glue_bits()
350 nf_ct_attach(skb, icmp_param->skb); in icmp_glue_bits()
354 static void icmp_push_reply(struct icmp_bxm *icmp_param, in icmp_push_reply() argument
362 if (ip_append_data(sk, fl4, icmp_glue_bits, icmp_param, in icmp_push_reply()
363 icmp_param->data_len+icmp_param->head_len, in icmp_push_reply()
364 icmp_param->head_len, in icmp_push_reply()
376 csum = csum_partial_copy_nocheck((void *)&icmp_param->data, in icmp_push_reply()
378 icmp_param->head_len, csum); in icmp_push_reply()
389 static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb) in icmp_reply() argument
400 if (ip_options_echo(&icmp_param->replyopts.opt.opt, skb)) in icmp_reply()
408 icmp_param->data.icmph.checksum = 0; in icmp_reply()
419 if (icmp_param->replyopts.opt.opt.optlen) { in icmp_reply()
420 ipc.opt = &icmp_param->replyopts.opt; in icmp_reply()
422 daddr = icmp_param->replyopts.opt.opt.faddr; in icmp_reply()
435 if (icmpv4_xrlim_allow(net, rt, &fl4, icmp_param->data.icmph.type, in icmp_reply()
436 icmp_param->data.icmph.code)) in icmp_reply()
437 icmp_push_reply(icmp_param, &fl4, &ipc, &rt); in icmp_reply()
572 struct icmp_bxm *icmp_param; in icmp_send() local
649 icmp_param = kmalloc(sizeof(*icmp_param), GFP_ATOMIC); in icmp_send()
650 if (!icmp_param) in icmp_send()
682 if (ip_options_echo(&icmp_param->replyopts.opt.opt, skb_in)) in icmp_send()
690 icmp_param->data.icmph.type = type; in icmp_send()
691 icmp_param->data.icmph.code = code; in icmp_send()
692 icmp_param->data.icmph.un.gateway = info; in icmp_send()
693 icmp_param->data.icmph.checksum = 0; in icmp_send()
694 icmp_param->skb = skb_in; in icmp_send()
695 icmp_param->offset = skb_network_offset(skb_in); in icmp_send()
699 ipc.opt = &icmp_param->replyopts.opt; in icmp_send()
705 type, code, icmp_param); in icmp_send()
717 room -= sizeof(struct iphdr) + icmp_param->replyopts.opt.opt.optlen; in icmp_send()
720 icmp_param->data_len = skb_in->len - icmp_param->offset; in icmp_send()
721 if (icmp_param->data_len > room) in icmp_send()
722 icmp_param->data_len = room; in icmp_send()
723 icmp_param->head_len = sizeof(struct icmphdr); in icmp_send()
725 icmp_push_reply(icmp_param, &fl4, &ipc, &rt); in icmp_send()
731 kfree(icmp_param); in icmp_send()
911 struct icmp_bxm icmp_param; in icmp_echo() local
913 icmp_param.data.icmph = *icmp_hdr(skb); in icmp_echo()
914 icmp_param.data.icmph.type = ICMP_ECHOREPLY; in icmp_echo()
915 icmp_param.skb = skb; in icmp_echo()
916 icmp_param.offset = 0; in icmp_echo()
917 icmp_param.data_len = skb->len; in icmp_echo()
918 icmp_param.head_len = sizeof(struct icmphdr); in icmp_echo()
919 icmp_reply(&icmp_param, skb); in icmp_echo()
935 struct icmp_bxm icmp_param; in icmp_timestamp() local
946 icmp_param.data.times[1] = htonl((tv.tv_sec % 86400) * MSEC_PER_SEC + in icmp_timestamp()
948 icmp_param.data.times[2] = icmp_param.data.times[1]; in icmp_timestamp()
949 if (skb_copy_bits(skb, 0, &icmp_param.data.times[0], 4)) in icmp_timestamp()
951 icmp_param.data.icmph = *icmp_hdr(skb); in icmp_timestamp()
952 icmp_param.data.icmph.type = ICMP_TIMESTAMPREPLY; in icmp_timestamp()
953 icmp_param.data.icmph.code = 0; in icmp_timestamp()
954 icmp_param.skb = skb; in icmp_timestamp()
955 icmp_param.offset = 0; in icmp_timestamp()
956 icmp_param.data_len = 0; in icmp_timestamp()
957 icmp_param.head_len = sizeof(struct icmphdr) + 12; in icmp_timestamp()
958 icmp_reply(&icmp_param, skb); in icmp_timestamp()