Lines Matching defs:fra

304 	ipfr_t *fra, frag;
323 for (fra = table[idx]; (fra != NULL); fra = fra->ipfr_hnext)
324 if (!bcmp((char *)&frag.ipfr_ifp, (char *)&fra->ipfr_ifp,
334 KMALLOC(fra, ipfr_t *);
335 if (fra == NULL) {
340 fra->ipfr_rule = fin->fin_fr;
341 if (fra->ipfr_rule != NULL) {
356 if ((fra->ipfr_hnext = table[idx]) != NULL)
357 table[idx]->ipfr_hprev = &fra->ipfr_hnext;
358 fra->ipfr_hprev = table + idx;
359 fra->ipfr_data = NULL;
360 table[idx] = fra;
361 bcopy((char *)&frag.ipfr_ifp, (char *)&fra->ipfr_ifp, IPFR_CMPSZ);
362 fra->ipfr_ttl = ifs->ifs_fr_ticks + ifs->ifs_fr_ipfrttl;
369 fra->ipfr_seen0 = 1;
371 fra->ipfr_seen0 = 0;
373 fra->ipfr_off = off + fin->fin_dlen;
374 fra->ipfr_pass = pass;
375 fra->ipfr_ref = 1;
378 return fra;
393 ipfr_t *fra;
400 fra = ipfr_newfrag(fin, pass, ifs->ifs_ipfr_heads);
401 if (fra != NULL) {
402 *ifs->ifs_ipfr_tail = fra;
403 fra->ipfr_prev = ifs->ifs_ipfr_tail;
404 ifs->ifs_ipfr_tail = &fra->ipfr_next;
406 ifs->ifs_ipfr_list = fra;
407 fra->ipfr_next = NULL;
410 return fra ? 0 : -1;
428 ipfr_t *fra;
435 fra = ipfr_newfrag(fin, pass, ifs->ifs_ipfr_nattab);
436 if (fra != NULL) {
437 fra->ipfr_data = nat;
438 nat->nat_data = fra;
439 *ifs->ifs_ipfr_nattail = fra;
440 fra->ipfr_prev = ifs->ifs_ipfr_nattail;
441 ifs->ifs_ipfr_nattail = &fra->ipfr_next;
442 fra->ipfr_next = NULL;
445 return fra ? 0 : -1;
462 ipfr_t *fra;
469 fra = ipfr_newfrag(fin, 0, ifs->ifs_ipfr_ipidtab);
470 if (fra != NULL) {
471 fra->ipfr_data = (void *)(uintptr_t)ipid;
472 *ifs->ifs_ipfr_ipidtail = fra;
473 fra->ipfr_prev = ifs->ifs_ipfr_ipidtail;
474 ifs->ifs_ipfr_ipidtail = &fra->ipfr_next;
475 fra->ipfr_next = NULL;
478 return fra ? 0 : -1;
667 ipfr_t *fra;
676 fra = fr_fraglookup(fin, ifs->ifs_ipfr_heads);
677 if (fra != NULL) {
678 fr = fra->ipfr_rule;
744 /* Parameters: fra(I) - pointer to fragment structure to delete */
752 static void fr_fragdelete(fra, tail, ifs)
753 ipfr_t *fra, ***tail;
758 fr = fra->ipfr_rule;
762 if (fra->ipfr_next)
763 fra->ipfr_next->ipfr_prev = fra->ipfr_prev;
764 *fra->ipfr_prev = fra->ipfr_next;
765 if (*tail == &fra->ipfr_next)
766 *tail = fra->ipfr_prev;
768 if (fra->ipfr_hnext)
769 fra->ipfr_hnext->ipfr_hprev = fra->ipfr_hprev;
770 *fra->ipfr_hprev = fra->ipfr_hnext;
772 if (fra->ipfr_ref <= 0)
773 KFREE(fra);
788 ipfr_t *fra;
792 while ((fra = ifs->ifs_ipfr_list) != NULL) {
793 fra->ipfr_ref--;
794 fr_fragdelete(fra, &ifs->ifs_ipfr_tail, ifs);
801 while ((fra = ifs->ifs_ipfr_natlist) != NULL) {
802 nat = fra->ipfr_data;
804 if (nat->nat_data == fra)
807 fra->ipfr_ref--;
808 fr_fragdelete(fra, &ifs->ifs_ipfr_nattail, ifs);
826 ipfr_t **fp, *fra;
840 for (fp = &ifs->ifs_ipfr_list; ((fra = *fp) != NULL); ) {
841 if (fra->ipfr_ttl > ifs->ifs_fr_ticks)
843 fra->ipfr_ref--;
844 fr_fragdelete(fra, &ifs->ifs_ipfr_tail, ifs);
851 for (fp = &ifs->ifs_ipfr_ipidlist; ((fra = *fp) != NULL); ) {
852 if (fra->ipfr_ttl > ifs->ifs_fr_ticks)
854 fra->ipfr_ref--;
855 fr_fragdelete(fra, &ifs->ifs_ipfr_ipidtail, ifs);
870 for (fp = &ifs->ifs_ipfr_natlist; ((fra = *fp) != NULL); ) {
871 if (fra->ipfr_ttl > ifs->ifs_fr_ticks)
873 nat = fra->ipfr_data;
875 if (nat->nat_data == fra)
878 fra->ipfr_ref--;
879 fr_fragdelete(fra, &ifs->ifs_ipfr_nattail, ifs);
1006 ipfr_t *fra;
1008 fra = *frp;
1012 fra->ipfr_ref--;
1013 if (fra->ipfr_ref <= 0) {
1014 KFREE(fra);