| version 1.262.6.4, 2008/10/05 20:11:33 |
version 1.262.6.5, 2009/01/17 13:29:32 |
|
|
| */ |
*/ |
| if (ip->ip_tos != fp->ipq_tos) { |
if (ip->ip_tos != fp->ipq_tos) { |
| IP_STATINC(IP_STAT_BADFRAGS); |
IP_STATINC(IP_STAT_BADFRAGS); |
| |
IPQ_UNLOCK(); |
| goto bad; |
goto bad; |
| } |
} |
| goto found; |
goto found; |
| Line 1121 ip_reass(struct ipqent *ipqe, struct ipq |
|
| Line 1122 ip_reass(struct ipqent *ipqe, struct ipq |
|
| else if (ip_nfragpackets >= ip_maxfragpackets) |
else if (ip_nfragpackets >= ip_maxfragpackets) |
| goto dropfrag; |
goto dropfrag; |
| ip_nfragpackets++; |
ip_nfragpackets++; |
| MALLOC(fp, struct ipq *, sizeof (struct ipq), |
fp = malloc(sizeof (struct ipq), M_FTABLE, M_NOWAIT); |
| M_FTABLE, M_NOWAIT); |
|
| if (fp == NULL) |
if (fp == NULL) |
| goto dropfrag; |
goto dropfrag; |
| LIST_INSERT_HEAD(ipqhead, fp, ipq_q); |
LIST_INSERT_HEAD(ipqhead, fp, ipq_q); |
|
|
| ip->ip_src = fp->ipq_src; |
ip->ip_src = fp->ipq_src; |
| ip->ip_dst = fp->ipq_dst; |
ip->ip_dst = fp->ipq_dst; |
| LIST_REMOVE(fp, ipq_q); |
LIST_REMOVE(fp, ipq_q); |
| FREE(fp, M_FTABLE); |
free(fp, M_FTABLE); |
| ip_nfragpackets--; |
ip_nfragpackets--; |
| m->m_len += (ip->ip_hl << 2); |
m->m_len += (ip->ip_hl << 2); |
| m->m_data -= (ip->ip_hl << 2); |
m->m_data -= (ip->ip_hl << 2); |
| Line 1306 ip_freef(struct ipq *fp) |
|
| Line 1306 ip_freef(struct ipq *fp) |
|
| printf("ip_freef: nfrags %d != %d\n", fp->ipq_nfrags, nfrags); |
printf("ip_freef: nfrags %d != %d\n", fp->ipq_nfrags, nfrags); |
| ip_nfrags -= nfrags; |
ip_nfrags -= nfrags; |
| LIST_REMOVE(fp, ipq_q); |
LIST_REMOVE(fp, ipq_q); |
| FREE(fp, M_FTABLE); |
free(fp, M_FTABLE); |
| ip_nfragpackets--; |
ip_nfragpackets--; |
| } |
} |
| |
|