xref: /kvmtool/net/uip/icmp.c (revision 42a6c572af1499be7a43780144e35432e6bdeb09)
1 #include "kvm/uip.h"
2 
uip_tx_do_ipv4_icmp(struct uip_tx_arg * arg)3 int uip_tx_do_ipv4_icmp(struct uip_tx_arg *arg)
4 {
5 	struct uip_ip *ip, *ip2;
6 	struct uip_icmp *icmp2;
7 	struct uip_buf *buf;
8 
9 	buf		= uip_buf_clone(arg);
10 
11 	icmp2		= (struct uip_icmp *)(buf->eth);
12 	ip2		= (struct uip_ip *)(buf->eth);
13 	ip		= (struct uip_ip *)(arg->eth);
14 
15 	ip2->sip	= ip->dip;
16 	ip2->dip	= ip->sip;
17 	ip2->csum	= 0;
18 	/*
19 	 * ICMP reply: 0
20 	 */
21 	icmp2->type	= 0;
22 	icmp2->csum	= 0;
23 	ip2->csum	= uip_csum_ip(ip2);
24 	icmp2->csum	= uip_csum_icmp(icmp2);
25 
26 	uip_buf_set_used(arg->info, buf);
27 
28 	return 0;
29 }
30