• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/netinet6/

Lines Matching refs:q6

78  * +--- TAILQ(struct ip6q, packets) *q6;		tailq entries holding
244 frag6_freef(struct ip6q *q6, uint32_t bucket)
252 while ((af6 = TAILQ_FIRST(&q6->ip6q_frags)) != NULL) {
255 TAILQ_REMOVE(&q6->ip6q_frags, af6, ip6af_tq);
267 ip6->ip6_src = q6->ip6q_src;
268 ip6->ip6_dst = q6->ip6q_dst;
278 TAILQ_REMOVE(IP6QB_HEAD(bucket), q6, ip6q_tq);
280 atomic_subtract_int(&frag6_nfrags, q6->ip6q_nfrag);
282 mac_ip6q_destroy(q6);
284 free(q6, M_FRAG6);
296 struct ip6q *q6;
318 TAILQ_FOREACH(q6, head, ip6q_tq) {
319 TAILQ_FOREACH(af6, &q6->ip6q_frags, ip6af_tq) {
371 struct ip6q *q6;
515 TAILQ_FOREACH(q6, head, ip6q_tq)
516 if (ip6f->ip6f_ident == q6->ip6q_ident &&
517 IN6_ARE_ADDR_EQUAL(&ip6->ip6_src, &q6->ip6q_src) &&
518 IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst, &q6->ip6q_dst)
520 && mac_ip6q_match(m, q6)
526 if (q6 == NULL) {
546 q6 = (struct ip6q *)malloc(sizeof(struct ip6q), M_FRAG6,
548 if (q6 == NULL)
551 if (mac_ip6q_init(q6, M_NOWAIT) != 0) {
552 free(q6, M_FRAG6);
555 mac_ip6q_create(m, q6);
560 TAILQ_INIT(&q6->ip6q_frags);
561 q6->ip6q_ident = ip6f->ip6f_ident;
562 q6->ip6q_ttl = IPV6_FRAGTTL;
563 q6->ip6q_src = ip6->ip6_src;
564 q6->ip6q_dst = ip6->ip6_dst;
565 q6->ip6q_ecn =
567 q6->ip6q_unfrglen = -1; /* The 1st fragment has not arrived. */
570 TAILQ_INSERT_HEAD(head, q6, ip6q_tq);
582 if (fragoff == 0 && q6->ip6q_unfrglen == -1) {
583 q6->ip6q_unfrglen = offset - sizeof(struct ip6_hdr) -
585 q6->ip6q_nxt = ip6f->ip6f_nxt;
594 if (q6->ip6q_unfrglen >= 0) {
596 if (q6->ip6q_unfrglen + fragoff + frgpartlen > IPV6_MAXPACKET) {
598 TAILQ_REMOVE(head, q6, ip6q_tq);
602 mac_ip6q_destroy(q6);
604 free(q6, M_FRAG6);
615 TAILQ_REMOVE(head, q6, ip6q_tq);
619 mac_ip6q_destroy(q6);
621 free(q6, M_FRAG6);
636 TAILQ_FOREACH_SAFE(af6, &q6->ip6q_frags, ip6af_tq, af6tmp) {
638 if (q6->ip6q_unfrglen + af6->ip6af_off +
648 TAILQ_REMOVE(&q6->ip6q_frags, af6, ip6af_tq);
649 q6->ip6q_nfrag--;
663 ip6err->ip6_src = q6->ip6q_src;
664 ip6err->ip6_dst = q6->ip6q_dst;
690 TAILQ_INSERT_HEAD(&q6->ip6q_frags, ip6af, ip6af_tq);
701 ecn0 = q6->ip6q_ecn;
708 q6->ip6q_ecn = IPTOS_ECN_CE;
716 TAILQ_FOREACH(af6, &q6->ip6q_frags, ip6af_tq)
731 af6tmp = TAILQ_LAST(&q6->ip6q_frags, ip6fraghead);
737 frag6_freef(q6, bucket);
747 frag6_freef(q6, bucket);
754 mac_ip6q_update(m, q6);
765 TAILQ_INSERT_TAIL(&q6->ip6q_frags, ip6af, ip6af_tq);
768 q6->ip6q_nfrag++;
771 TAILQ_FOREACH(af6, &q6->ip6q_frags, ip6af_tq) {
773 if (q6->ip6q_nfrag > V_ip6_maxfragsperpacket) {
774 IP6STAT_ADD(ip6s_fragdropped, q6->ip6q_nfrag);
775 frag6_freef(q6, bucket);
783 af6 = TAILQ_LAST(&q6->ip6q_frags, ip6fraghead);
785 if (q6->ip6q_nfrag > V_ip6_maxfragsperpacket) {
786 IP6STAT_ADD(ip6s_fragdropped, q6->ip6q_nfrag);
787 frag6_freef(q6, bucket);
795 ip6af = TAILQ_FIRST(&q6->ip6q_frags);
797 TAILQ_REMOVE(&q6->ip6q_frags, ip6af, ip6af_tq);
798 while ((af6 = TAILQ_FIRST(&q6->ip6q_frags)) != NULL) {
804 TAILQ_REMOVE(&q6->ip6q_frags, af6, ip6af_tq);
821 if (q6->ip6q_ecn == IPTOS_ECN_CE)
823 nxt = q6->ip6q_nxt;
825 TAILQ_REMOVE(head, q6, ip6q_tq);
827 atomic_subtract_int(&frag6_nfrags, q6->ip6q_nfrag);
836 mac_ip6q_reassemble(q6, m);
837 mac_ip6q_destroy(q6);
839 free(q6, M_FRAG6);
901 struct ip6q *q6, *q6tmp;
910 TAILQ_FOREACH_SAFE(q6, head, ip6q_tq, q6tmp)
911 if (--q6->ip6q_ttl == 0) {
913 q6->ip6q_nfrag);
915 frag6_freef(q6, bucket);
929 (q6 = TAILQ_LAST(head, ip6qhead)) != NULL) {
930 IP6STAT_ADD(ip6s_fragoverflow, q6->ip6q_nfrag);
932 frag6_freef(q6, bucket);
945 q6 = TAILQ_LAST(IP6QB_HEAD(bucket), ip6qhead);
946 if (q6 != NULL) {
947 IP6STAT_ADD(ip6s_fragoverflow, q6->ip6q_nfrag);
949 frag6_freef(q6, bucket);
1012 struct ip6q *q6;
1017 while ((q6 = TAILQ_FIRST(IP6QB_HEAD(bucket))) != NULL) {
1020 frag6_freef(q6, bucket);