Lines Matching refs:fra

379 	ipfr_t *fra, frag, *fran;
454 for (fra = table[idx]; (fra != NULL); fra = fra->ipfr_hnext)
455 if (!bcmp((char *)&frag.ipfr_ifp, (char *)&fra->ipfr_ifp,
459 KFREE(fra);
463 fra = fran;
466 fra->ipfr_rule = fr;
478 if ((fra->ipfr_hnext = table[idx]) != NULL)
479 table[idx]->ipfr_hprev = &fra->ipfr_hnext;
480 fra->ipfr_hprev = table + idx;
481 fra->ipfr_data = NULL;
482 table[idx] = fra;
483 bcopy((char *)&frag.ipfr_ifp, (char *)&fra->ipfr_ifp, IPFR_CMPSZ);
484 fra->ipfr_v = fin->fin_v;
485 fra->ipfr_ttl = softc->ipf_ticks + softf->ipfr_ttl;
486 fra->ipfr_firstend = frag.ipfr_firstend;
492 fra->ipfr_seen0 = 1;
493 fra->ipfr_off = off + (fin->fin_dlen >> 3);
494 fra->ipfr_pass = pass;
495 fra->ipfr_ref = 1;
496 fra->ipfr_pkts = 1;
497 fra->ipfr_bytes = fin->fin_plen;
500 return fra;
518 ipfr_t *fra;
524 fra = ipfr_frag_new(softc, softf, fin, pass, softf->ipfr_heads, &softc->ipf_frag);
526 fra = ipfr_frag_new(softc, softf, fin, pass, softf->ipfr_heads);
528 if (fra != NULL) {
529 *softf->ipfr_tail = fra;
530 fra->ipfr_prev = softf->ipfr_tail;
531 softf->ipfr_tail = &fra->ipfr_next;
532 fra->ipfr_next = NULL;
535 return fra ? 0 : -1;
556 ipfr_t *fra;
562 fra = ipfr_frag_new(softc, softf, fin, pass, softf->ipfr_nattab,
565 fra = ipfr_frag_new(softc, softf, fin, pass, softf->ipfr_nattab);
567 if (fra != NULL) {
568 fra->ipfr_data = nat;
569 nat->nat_data = fra;
570 *softf->ipfr_nattail = fra;
571 fra->ipfr_prev = softf->ipfr_nattail;
572 softf->ipfr_nattail = &fra->ipfr_next;
573 fra->ipfr_next = NULL;
597 ipfr_t *fra;
603 fra = ipfr_frag_new(softc, softf, fin, 0, softf->ipfr_ipidtab, &softf->ipfr_ipidfrag);
605 fra = ipfr_frag_new(softc, softf, fin, 0, softf->ipfr_ipidtab);
607 if (fra != NULL) {
608 fra->ipfr_data = (void *)(intptr_t)ipid;
609 *softf->ipfr_ipidtail = fra;
610 fra->ipfr_prev = softf->ipfr_ipidtail;
611 softf->ipfr_ipidtail = &fra->ipfr_next;
612 fra->ipfr_next = NULL;
615 return fra ? 0 : -1;
888 ipfr_t *fra;
895 fra = ipf_frag_lookup(softc, softf, fin, softf->ipfr_heads,
898 fra = ipf_frag_lookup(softc, softf, fin, softf->ipfr_heads);
900 if (fra != NULL) {
905 fr = fra->ipfr_rule;
959 /* fra(I) - pointer to fragment structure to delete */
968 ipf_frag_delete(softc, fra, tail)
970 ipfr_t *fra, ***tail;
974 if (fra->ipfr_next)
975 fra->ipfr_next->ipfr_prev = fra->ipfr_prev;
976 *fra->ipfr_prev = fra->ipfr_next;
977 if (*tail == &fra->ipfr_next)
978 *tail = fra->ipfr_prev;
980 if (fra->ipfr_hnext)
981 fra->ipfr_hnext->ipfr_hprev = fra->ipfr_hprev;
982 *fra->ipfr_hprev = fra->ipfr_hnext;
984 if (fra->ipfr_rule != NULL) {
985 (void) ipf_derefrule(softc, &fra->ipfr_rule);
988 if (fra->ipfr_ref <= 0)
989 ipf_frag_free(softf, fra);
997 /* fra(I) - pointer to fragment structure to free */
1002 ipf_frag_free(softf, fra)
1004 ipfr_t *fra;
1006 KFREE(fra);
1025 ipfr_t *fra;
1029 while ((fra = softf->ipfr_list) != NULL) {
1030 fra->ipfr_ref--;
1031 ipf_frag_delete(softc, fra, &softf->ipfr_tail);
1038 while ((fra = softf->ipfr_natlist) != NULL) {
1039 nat = fra->ipfr_data;
1041 if (nat->nat_data == fra)
1044 fra->ipfr_ref--;
1045 ipf_frag_delete(softc, fra, &softf->ipfr_nattail);
1065 ipfr_t **fp, *fra;
1078 for (fp = &softf->ipfr_list; ((fra = *fp) != NULL); ) {
1079 if (fra->ipfr_ttl > softc->ipf_ticks)
1081 fra->ipfr_ref--;
1082 ipf_frag_delete(softc, fra, &softf->ipfr_tail);
1087 for (fp = &softf->ipfr_ipidlist; ((fra = *fp) != NULL); ) {
1088 if (fra->ipfr_ttl > softc->ipf_ticks)
1090 fra->ipfr_ref--;
1091 ipf_frag_delete(softc, fra, &softf->ipfr_ipidtail);
1108 for (fp = &softf->ipfr_natlist; ((fra = *fp) != NULL); ) {
1109 if (fra->ipfr_ttl > softc->ipf_ticks)
1111 nat = fra->ipfr_data;
1113 if (nat->nat_data == fra)
1116 fra->ipfr_ref--;
1117 ipf_frag_delete(softc, fra, &softf->ipfr_nattail);
1335 ipfr_t *fra;
1337 fra = *frp;
1341 fra->ipfr_ref--;
1342 if (fra->ipfr_ref <= 0)
1343 ipf_frag_free(softf, fra);