Lines Matching refs:icmp_param
365 DEFINE_RAW_FLEX(struct icmp_bxm, icmp_param, replyopts.opt.__data, in icmp_glue_bits()
369 icmp_param = from; in icmp_glue_bits()
371 csum = skb_copy_and_csum_bits(icmp_param->skb, in icmp_glue_bits()
372 icmp_param->offset + offset, in icmp_glue_bits()
376 if (icmp_pointers[icmp_param->data.icmph.type].error) in icmp_glue_bits()
377 nf_ct_attach(skb, icmp_param->skb); in icmp_glue_bits()
382 struct icmp_bxm *icmp_param, in icmp_push_reply() argument
388 if (ip_append_data(sk, fl4, icmp_glue_bits, icmp_param, in icmp_push_reply()
389 icmp_param->data_len+icmp_param->head_len, in icmp_push_reply()
390 icmp_param->head_len, in icmp_push_reply()
399 csum = csum_partial_copy_nocheck((void *)&icmp_param->data, in icmp_push_reply()
401 icmp_param->head_len); in icmp_push_reply()
415 static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb) in icmp_reply() argument
425 int type = icmp_param->data.icmph.type; in icmp_reply()
426 int code = icmp_param->data.icmph.code; in icmp_reply()
428 if (ip_options_echo(net, &icmp_param->replyopts.opt, skb)) in icmp_reply()
442 icmp_param->data.icmph.checksum = 0; in icmp_reply()
450 if (icmp_param->replyopts.opt.optlen) { in icmp_reply()
451 ipc.opt = &icmp_param->replyopts; in icmp_reply()
453 daddr = icmp_param->replyopts.opt.faddr; in icmp_reply()
468 icmp_push_reply(sk, icmp_param, &fl4, &ipc, &rt); in icmp_reply()
805 DEFINE_RAW_FLEX(struct icmp_bxm, icmp_param, replyopts.opt.__data, in __icmp_send()
937 if (__ip_options_echo(net, &icmp_param->replyopts.opt, skb_in, in __icmp_send()
946 icmp_param->data.icmph.type = type; in __icmp_send()
947 icmp_param->data.icmph.code = code; in __icmp_send()
948 icmp_param->data.icmph.un.gateway = info; in __icmp_send()
949 icmp_param->data.icmph.checksum = 0; in __icmp_send()
950 icmp_param->skb = skb_in; in __icmp_send()
951 icmp_param->offset = skb_network_offset(skb_in); in __icmp_send()
955 ipc.opt = &icmp_param->replyopts; in __icmp_send()
960 icmp_param); in __icmp_send()
973 room -= sizeof(struct iphdr) + icmp_param->replyopts.opt.optlen; in __icmp_send()
981 ext_skb = icmp_ext_append(net, skb_in, &icmp_param->data.icmph, room, in __icmp_send()
984 icmp_param->skb = ext_skb; in __icmp_send()
986 icmp_param->data_len = icmp_param->skb->len - icmp_param->offset; in __icmp_send()
987 if (icmp_param->data_len > room) in __icmp_send()
988 icmp_param->data_len = room; in __icmp_send()
989 icmp_param->head_len = sizeof(struct icmphdr); in __icmp_send()
1000 icmp_push_reply(sk, icmp_param, &fl4, &ipc, &rt); in __icmp_send()
1243 DEFINE_RAW_FLEX(struct icmp_bxm, icmp_param, replyopts.opt.__data, in icmp_echo()
1252 icmp_param->data.icmph = *icmp_hdr(skb); in icmp_echo()
1253 icmp_param->skb = skb; in icmp_echo()
1254 icmp_param->offset = 0; in icmp_echo()
1255 icmp_param->data_len = skb->len; in icmp_echo()
1256 icmp_param->head_len = sizeof(struct icmphdr); in icmp_echo()
1258 if (icmp_param->data.icmph.type == ICMP_ECHO) in icmp_echo()
1259 icmp_param->data.icmph.type = ICMP_ECHOREPLY; in icmp_echo()
1260 else if (!icmp_build_probe(skb, &icmp_param->data.icmph)) in icmp_echo()
1263 icmp_reply(icmp_param, skb); in icmp_echo()
1391 DEFINE_RAW_FLEX(struct icmp_bxm, icmp_param, replyopts.opt.__data, in icmp_timestamp()
1402 icmp_param->data.times[1] = inet_current_timestamp(); in icmp_timestamp()
1403 icmp_param->data.times[2] = icmp_param->data.times[1]; in icmp_timestamp()
1405 BUG_ON(skb_copy_bits(skb, 0, &icmp_param->data.times[0], 4)); in icmp_timestamp()
1407 icmp_param->data.icmph = *icmp_hdr(skb); in icmp_timestamp()
1408 icmp_param->data.icmph.type = ICMP_TIMESTAMPREPLY; in icmp_timestamp()
1409 icmp_param->data.icmph.code = 0; in icmp_timestamp()
1410 icmp_param->skb = skb; in icmp_timestamp()
1411 icmp_param->offset = 0; in icmp_timestamp()
1412 icmp_param->data_len = 0; in icmp_timestamp()
1413 icmp_param->head_len = sizeof(struct icmphdr) + 12; in icmp_timestamp()
1414 icmp_reply(icmp_param, skb); in icmp_timestamp()