|
Lines 211-217
Link Here
|
| 211 |
{ |
211 |
{ |
| 212 |
struct sk_buff *prev, *next; |
212 |
struct sk_buff *prev, *next; |
| 213 |
struct net_device *dev; |
213 |
struct net_device *dev; |
| 214 |
int offset, end; |
214 |
int offset, end, temp; |
| 215 |
struct net *net = dev_net(skb_dst(skb)->dev); |
215 |
struct net *net = dev_net(skb_dst(skb)->dev); |
| 216 |
u8 ecn; |
216 |
u8 ecn; |
| 217 |
|
217 |
|
|
Lines 219-226
Link Here
|
| 219 |
goto err; |
219 |
goto err; |
| 220 |
|
220 |
|
| 221 |
offset = ntohs(fhdr->frag_off) & ~0x7; |
221 |
offset = ntohs(fhdr->frag_off) & ~0x7; |
| 222 |
end = offset + (ntohs(ipv6_hdr(skb)->payload_len) - |
222 |
|
| 223 |
((u8 *)(fhdr + 1) - (u8 *)(ipv6_hdr(skb) + 1))); |
223 |
printk ("DDD ip6_frag_queue offset=%x; payload_len=%x; fhdr1=%x; ipv6_hdr=%x\n", offset, ntohs(ipv6_hdr(skb)->payload_len), (u8 *)(fhdr + 1), (u8 *)(ipv6_hdr(skb) + 1)); |
|
|
224 |
|
| 225 |
temp = (u8 *)(fhdr + 1) - (u8 *)(ipv6_hdr(skb) + 1); |
| 226 |
temp &= 0xff; |
| 227 |
end = offset + (ntohs(ipv6_hdr(skb)->payload_len) - temp); |
| 228 |
// ((u8 *)(fhdr + 1) - (u8 *)(ipv6_hdr(skb) + 1))); |
| 229 |
printk ("DDD ip6_frag_queue2 end=%x\n", end); |
| 224 |
|
230 |
|
| 225 |
if ((unsigned int)end > IPV6_MAXPLEN) { |
231 |
if ((unsigned int)end > IPV6_MAXPLEN) { |
| 226 |
__IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)), |
232 |
__IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)), |
|
Lines 558-564
Link Here
|
| 558 |
int ret; |
564 |
int ret; |
| 559 |
|
565 |
|
| 560 |
spin_lock(&fq->q.lock); |
566 |
spin_lock(&fq->q.lock); |
| 561 |
|
567 |
|
| 562 |
ret = ip6_frag_queue(fq, skb, fhdr, IP6CB(skb)->nhoff); |
568 |
ret = ip6_frag_queue(fq, skb, fhdr, IP6CB(skb)->nhoff); |
| 563 |
|
569 |
|
| 564 |
spin_unlock(&fq->q.lock); |
570 |
spin_unlock(&fq->q.lock); |