xref: /kvmtool/net/uip/ipv4.c (revision 7b0155fed9b4b9fb7af1b54d4c19880a41b21768)
1 #include "kvm/uip.h"
2 
uip_tx_do_ipv4(struct uip_tx_arg * arg)3 int uip_tx_do_ipv4(struct uip_tx_arg *arg)
4 {
5 	struct uip_ip *ip;
6 
7 	ip = (struct uip_ip *)(arg->eth);
8 
9 	if (uip_ip_hdrlen(ip) != 20) {
10 		pr_warning("IP header length is not 20 bytes");
11 		return -1;
12 	}
13 
14 	switch (ip->proto) {
15 	case UIP_IP_P_ICMP:
16 		uip_tx_do_ipv4_icmp(arg);
17 		break;
18 	case UIP_IP_P_TCP:
19 		uip_tx_do_ipv4_tcp(arg);
20 		break;
21 	case UIP_IP_P_UDP:
22 		uip_tx_do_ipv4_udp(arg);
23 		break;
24 	default:
25 		break;
26 	}
27 
28 	return 0;
29 }
30