Fix ipfilter bug 3600459 NAT bucket count wrong.

Obtained from:	ipfilter cvs repo r1.48.2.25
MFC after:	2 weeks
This commit is contained in:
Cy Schubert 2015-09-11 16:49:52 +00:00
parent 8f875df090
commit e1d4f0626e
2 changed files with 14 additions and 1 deletions

View File

@ -1104,6 +1104,18 @@ ipf_checkv4sum(fin)
return -1;
}
if (m->m_pkthdr.csum_flags & CSUM_DATA_VALID) {
/* UDP may have zero checksum */
if (fin->fin_p == IPPROTO_UDP && (fin->fin_flx & (FI_FRAG|FI_SHORT|FI_BAD)) == 0) {
udphdr_t *udp = fin->fin_dp;
if (udp->uh_sum == 0) {
/* we're good no matter what the hardware checksum flags
and csum_data say (handling of csum_data for zero UDP
checksum is not consistent across all drivers) */
fin->fin_cksum = 1;
return 0;
}
}
if (m->m_pkthdr.csum_flags & CSUM_PSEUDO_HDR)
sum = m->m_pkthdr.csum_data;
else

View File

@ -3646,7 +3646,8 @@ ipf_state_del(softc, is, why)
is->is_me = NULL;
is->is_ref--;
}
if (is->is_ref > 1) {
is->is_ref--;
if (is->is_ref > 0) {
int refs;
is->is_ref--;