Lines Matching refs:q6
119 struct ip6q *q6; in frag6_input() local
187 TAILQ_FOREACH(q6, &frag6_queue, ip6q_queue) in frag6_input()
188 if (ip6f->ip6f_ident == q6->ip6q_ident && in frag6_input()
189 IN6_ARE_ADDR_EQUAL(&ip6->ip6_src, &q6->ip6q_src) && in frag6_input()
190 IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst, &q6->ip6q_dst)) in frag6_input()
193 if (q6 == NULL) { in frag6_input()
212 q6 = pool_get(&ip6q_pool, PR_NOWAIT | PR_ZERO); in frag6_input()
213 if (q6 == NULL) { in frag6_input()
218 TAILQ_INSERT_HEAD(&frag6_queue, q6, ip6q_queue); in frag6_input()
221 LIST_INIT(&q6->ip6q_asfrag); in frag6_input()
222 q6->ip6q_ident = ip6f->ip6f_ident; in frag6_input()
223 q6->ip6q_ttl = IPV6_FRAGTTL; in frag6_input()
224 q6->ip6q_src = ip6->ip6_src; in frag6_input()
225 q6->ip6q_dst = ip6->ip6_dst; in frag6_input()
226 q6->ip6q_ecn = (ntohl(ip6->ip6_flow) >> 20) & IPTOS_ECN_MASK; in frag6_input()
227 q6->ip6q_unfrglen = -1; /* The 1st fragment has not arrived. */ in frag6_input()
228 q6->ip6q_nfrag = 0; in frag6_input()
236 q6->ip6q_unfrglen = offset - sizeof(struct ip6_hdr) - in frag6_input()
238 q6->ip6q_nxt = ip6f->ip6f_nxt; in frag6_input()
247 if (q6->ip6q_unfrglen >= 0) { in frag6_input()
249 if (q6->ip6q_unfrglen + fragoff + frgpartlen > IPV6_MAXPACKET) { in frag6_input()
268 LIST_FOREACH_SAFE(af6, &q6->ip6q_asfrag, ip6af_list, naf6) { in frag6_input()
269 if (q6->ip6q_unfrglen + af6->ip6af_off + in frag6_input()
286 ip6err->ip6_src = q6->ip6q_src; in frag6_input()
287 ip6err->ip6_dst = q6->ip6q_dst; in frag6_input()
319 ecn0 = q6->ip6q_ecn; in frag6_input()
327 q6->ip6q_ecn = IPTOS_ECN_CE; in frag6_input()
338 for (paf6 = NULL, af6 = LIST_FIRST(&q6->ip6q_asfrag); in frag6_input()
371 LIST_INSERT_HEAD(&q6->ip6q_asfrag, ip6af, ip6af_list); in frag6_input()
373 q6->ip6q_nfrag++; in frag6_input()
375 for (paf6 = NULL, af6 = LIST_FIRST(&q6->ip6q_asfrag); in frag6_input()
392 ip6af = LIST_FIRST(&q6->ip6q_asfrag); in frag6_input()
395 while ((af6 = LIST_FIRST(&q6->ip6q_asfrag)) != NULL) { in frag6_input()
410 TAILQ_REMOVE(&frag6_queue, q6, ip6q_queue); in frag6_input()
411 frag6_nfrags -= q6->ip6q_nfrag; in frag6_input()
414 pool_put(&ip6q_pool, q6); in frag6_input()
419 ip6->ip6_src = q6->ip6q_src; in frag6_input()
420 ip6->ip6_dst = q6->ip6q_dst; in frag6_input()
421 if (q6->ip6q_ecn == IPTOS_ECN_CE) in frag6_input()
423 nxt = q6->ip6q_nxt; in frag6_input()
427 TAILQ_REMOVE(&frag6_queue, q6, ip6q_queue); in frag6_input()
428 frag6_nfrags -= q6->ip6q_nfrag; in frag6_input()
431 pool_put(&ip6q_pool, q6); in frag6_input()
435 TAILQ_REMOVE(&frag6_queue, q6, ip6q_queue); in frag6_input()
436 frag6_nfrags -= q6->ip6q_nfrag; in frag6_input()
441 pool_put(&ip6q_pool, q6); in frag6_input()
471 TAILQ_REMOVE(&frag6_queue, q6, ip6q_queue); in frag6_input()
472 frag6_nfrags -= q6->ip6q_nfrag; in frag6_input()
479 while ((af6 = LIST_FIRST(&q6->ip6q_asfrag)) != NULL) { in frag6_input()
484 ip6stat_add(ip6s_fragdropped, q6->ip6q_nfrag + 1); in frag6_input()
485 pool_put(&ip6q_pool, q6); in frag6_input()
525 frag6_freef(struct ip6q *q6) in frag6_freef() argument
529 while ((af6 = LIST_FIRST(&q6->ip6q_asfrag)) != NULL) { in frag6_freef()
545 ip6->ip6_src = q6->ip6q_src; in frag6_freef()
546 ip6->ip6_dst = q6->ip6q_dst; in frag6_freef()
556 pool_put(&ip6q_pool, q6); in frag6_freef()
564 frag6_unlink(struct ip6q *q6, struct ip6q_head *rmq6) in frag6_unlink() argument
568 TAILQ_REMOVE(&frag6_queue, q6, ip6q_queue); in frag6_unlink()
569 TAILQ_INSERT_HEAD(rmq6, q6, ip6q_queue); in frag6_unlink()
570 frag6_nfrags -= q6->ip6q_nfrag; in frag6_unlink()
583 struct ip6q *q6, *nq6; in frag6_slowtimo() local
589 TAILQ_FOREACH_SAFE(q6, &frag6_queue, ip6q_queue, nq6) { in frag6_slowtimo()
590 if (--q6->ip6q_ttl == 0) { in frag6_slowtimo()
592 frag6_unlink(q6, &rmq6); in frag6_slowtimo()
609 while ((q6 = TAILQ_FIRST(&rmq6)) != NULL) { in frag6_slowtimo()
610 TAILQ_REMOVE(&rmq6, q6, ip6q_queue); in frag6_slowtimo()
611 frag6_freef(q6); in frag6_slowtimo()