xref: /kvmtool/net/uip/ipv4.c (revision 0134a2a7e319c13a4d54689113d97b0fdebead7b)
167ba1b25SAsias He #include "kvm/uip.h"
267ba1b25SAsias He 
367ba1b25SAsias He int uip_tx_do_ipv4(struct uip_tx_arg *arg)
467ba1b25SAsias He {
567ba1b25SAsias He 	struct uip_ip *ip;
667ba1b25SAsias He 
767ba1b25SAsias He 	ip = (struct uip_ip *)(arg->eth);
867ba1b25SAsias He 
967ba1b25SAsias He 	if (uip_ip_hdrlen(ip) != 20) {
1067ba1b25SAsias He 		pr_warning("IP header length is not 20 bytes");
1167ba1b25SAsias He 		return -1;
1267ba1b25SAsias He 	}
1367ba1b25SAsias He 
14*0134a2a7SAsias He 	switch (ip->proto) {
15*0134a2a7SAsias He 	case 0x01: /* ICMP */
16*0134a2a7SAsias He 		uip_tx_do_ipv4_icmp(arg);
17*0134a2a7SAsias He 		break;
18*0134a2a7SAsias He 	default:
19*0134a2a7SAsias He 		break;
20*0134a2a7SAsias He 	}
21*0134a2a7SAsias He 
2267ba1b25SAsias He 	return 0;
2367ba1b25SAsias He }
24