| version 1.134.2.3, 2005/05/01 11:03:37 |
version 1.134.2.4, 2005/05/06 08:40:21 |
| Line 146 int udpcksum = 1; |
|
| Line 146 int udpcksum = 1; |
|
| #else |
#else |
| int udpcksum = 0; /* XXX */ |
int udpcksum = 0; /* XXX */ |
| #endif |
#endif |
| int udp_do_loopback_cksum = 0; |
|
| |
|
| struct inpcbtable udbtable; |
struct inpcbtable udbtable; |
| struct udpstat udpstat; |
struct udpstat udpstat; |
| Line 1080 udp_output(struct mbuf *m, ...) |
|
| Line 1079 udp_output(struct mbuf *m, ...) |
|
| /* |
/* |
| * XXX Cache pseudo-header checksum part for |
* XXX Cache pseudo-header checksum part for |
| * XXX "connected" UDP sockets. |
* XXX "connected" UDP sockets. |
| * Maybe skip checksums on loopback interfaces. |
|
| */ |
*/ |
| ui->ui_sum = in_cksum_phdr(ui->ui_src.s_addr, |
ui->ui_sum = in_cksum_phdr(ui->ui_src.s_addr, |
| ui->ui_dst.s_addr, htons((u_int16_t)len + |
ui->ui_dst.s_addr, htons((u_int16_t)len + |
| sizeof(struct udphdr) + IPPROTO_UDP)); |
sizeof(struct udphdr) + IPPROTO_UDP)); |
| if (__predict_true(ro->ro_rt == NULL || |
m->m_pkthdr.csum_flags = M_CSUM_UDPv4; |
| !(ro->ro_rt->rt_ifp->if_flags & |
|
| IFF_LOOPBACK) || |
|
| udp_do_loopback_cksum)) |
|
| m->m_pkthdr.csum_flags = M_CSUM_UDPv4; |
|
| else |
|
| m->m_pkthdr.csum_flags = 0; |
|
| m->m_pkthdr.csum_data = offsetof(struct udphdr, uh_sum); |
m->m_pkthdr.csum_data = offsetof(struct udphdr, uh_sum); |
| } else |
} else |
| ui->ui_sum = 0; |
ui->ui_sum = 0; |