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; |