| #include "kvm/uip.h" | |
| int uip_tx_do_ipv4(struct uip_tx_arg *arg) | |
| { | |
| struct uip_ip *ip; | |
| ip = (struct uip_ip *)(arg->eth); | |
| if (uip_ip_hdrlen(ip) != 20) { | |
| pr_warning("IP header length is not 20 bytes"); | |
| return -1; | |
| } | |
| switch (ip->proto) { | |
| case UIP_IP_P_ICMP: | |
| uip_tx_do_ipv4_icmp(arg); | |
| break; | |
| case UIP_IP_P_TCP: | |
| uip_tx_do_ipv4_tcp(arg); | |
| break; | |
| case UIP_IP_P_UDP: | |
| uip_tx_do_ipv4_udp(arg); | |
| break; | |
| default: | |
| break; | |
| } | |
| return 0; | |
| } |