Lines Matching refs:ifs

137 void nat6_addrdr(n, ifs)  in nat6_addrdr()  argument
139 ipf_stack_t *ifs;
148 ifs->ifs_rdr6_masks[k >> 5] |= 1 << (k & 31);
150 hv = NAT_HASH_FN6(&j, 0, ifs->ifs_ipf_rdrrules_sz);
151 np = ifs->ifs_rdr_rules + hv;
170 void nat6_addnat(n, ifs) in nat6_addnat() argument
172 ipf_stack_t *ifs;
181 ifs->ifs_nat6_masks[k >> 5] |= 1 << (k & 31);
183 hv = NAT_HASH_FN6(&j, 0, ifs->ifs_ipf_natrules_sz);
184 np = ifs->ifs_nat_rules + hv;
208 static struct hostmap *nat6_hostmap(np, src, dst, map, port, ifs) in nat6_hostmap() argument
212 ipf_stack_t *ifs;
230 for (hm = ifs->ifs_maptable[hv]; hm; hm = hm->hm_next)
244 hm->hm_hnext = ifs->ifs_ipf_hm_maplist;
245 hm->hm_phnext = &ifs->ifs_ipf_hm_maplist;
246 if (ifs->ifs_ipf_hm_maplist != NULL)
247 ifs->ifs_ipf_hm_maplist->hm_phnext = &hm->hm_hnext;
248 ifs->ifs_ipf_hm_maplist = hm;
250 hm->hm_next = ifs->ifs_maptable[hv];
251 hm->hm_pnext = ifs->ifs_maptable + hv;
252 if (ifs->ifs_maptable[hv] != NULL)
253 ifs->ifs_maptable[hv]->hm_pnext = &hm->hm_next;
254 ifs->ifs_maptable[hv] = hm;
292 ipf_stack_t *ifs = fin->fin_ifs; local
321 &in, 0, ifs);
515 &nat->nat_outip6, 0, ifs);
559 ipf_stack_t *ifs = fin->fin_ifs; local
582 (u_32_t)dport, ifs);
602 &in, (u_32_t)dport, ifs);
698 &fin->fin_dst6, &in, (u_32_t)dport, ifs);
749 ipf_stack_t *ifs = fin->fin_ifs; local
755 if (NAT_TAB_WATER_LEVEL(ifs) > ifs->ifs_nat_flush_level_hi)
756 ifs->ifs_nat_doflush = 1;
758 if (ifs->ifs_nat_stats.ns_inuse >= ifs->ifs_ipf_nattable_max) {
759 ifs->ifs_nat_stats.ns_memfail++;
774 ifs->ifs_nat_stats.ns_memfail++;
781 if (ifs->ifs_ipf_nattable_max > ifs->ifs_ipf_nattable_sz) {
782 ifs->ifs_ipf_nattable_max =
783 ifs->ifs_nat_stats.ns_inuse - 100;
785 ifs->ifs_ipf_nattable_max);
817 MUTEX_ENTER(&ifs->ifs_ipf_nat_new);
864 nat6_addrdr(np, ifs);
867 nat6_addnat(np, ifs);
878 ifs->ifs_nat_stats.ns_wilds++;
881 ifs->ifs_nat_stats.ns_badnat++;
888 MUTEX_EXIT(&ifs->ifs_ipf_nat_new);
917 ipf_stack_t *ifs = fin->fin_ifs; local
946 if (nat6_insert(nat, fin->fin_rev, ifs) == 0) {
947 if (ifs->ifs_nat_logging)
948 nat_log(nat, (u_int)np->in_redir, ifs);
975 int nat6_insert(nat, rev, ifs) in nat6_insert() argument
978 ipf_stack_t *ifs;
991 ifs->ifs_ipf_nattable_sz);
995 ifs->ifs_ipf_nattable_sz);
999 ifs->ifs_ipf_nattable_sz);
1002 ifs->ifs_ipf_nattable_sz);
1005 if ((ifs->ifs_nat_stats.ns_bucketlen[0][hv1] >=
1006 ifs->ifs_fr_nat_maxbucket) ||
1007 (ifs->ifs_nat_stats.ns_bucketlen[1][hv2] >=
1008 ifs->ifs_fr_nat_maxbucket)) {
1025 nat->nat_ifps[0] = fr_resolvenic(nat->nat_ifnames[0], 6, ifs);
1029 nat->nat_ifps[1] = fr_resolvenic(nat->nat_ifnames[1], 6, ifs);
1037 nat->nat_next = ifs->ifs_nat_instances;
1038 nat->nat_pnext = &ifs->ifs_nat_instances;
1039 if (ifs->ifs_nat_instances)
1040 ifs->ifs_nat_instances->nat_pnext = &nat->nat_next;
1041 ifs->ifs_nat_instances = nat;
1043 natp = &ifs->ifs_nat_table[0][hv1];
1049 ifs->ifs_nat_stats.ns_bucketlen[0][hv1]++;
1051 natp = &ifs->ifs_nat_table[1][hv2];
1057 ifs->ifs_nat_stats.ns_bucketlen[1][hv2]++;
1059 fr_setnatqueue(nat, rev, ifs);
1061 ifs->ifs_nat_stats.ns_added++;
1062 ifs->ifs_nat_stats.ns_inuse++;
1488 ipf_stack_t *ifs = fin->fin_ifs; local
1521 hv = NAT_HASH_FN6(src, hv + sport, ifs->ifs_ipf_nattable_sz);
1522 nat = ifs->ifs_nat_table[1][hv];
1588 if (ifs->ifs_nat_stats.ns_wilds == 0)
1591 RWLOCK_EXIT(&ifs->ifs_ipf_nat);
1594 hv = NAT_HASH_FN6(src, hv, ifs->ifs_ipf_nattable_sz);
1596 WRITE_ENTER(&ifs->ifs_ipf_nat);
1598 nat = ifs->ifs_nat_table[1][hv];
1628 MUTEX_ENTER(&ifs->ifs_ipf_nat_new);
1629 ifs->ifs_nat_stats.ns_wilds--;
1630 MUTEX_EXIT(&ifs->ifs_ipf_nat_new);
1635 nat6_tabmove(nat, ifs);
1640 MUTEX_DOWNGRADE(&ifs->ifs_ipf_nat);
1656 static void nat6_tabmove(nat, ifs) in nat6_tabmove() argument
1658 ipf_stack_t *ifs;
1672 ifs->ifs_nat_stats.ns_bucketlen[0][nat->nat_hv[0]]--;
1677 ifs->ifs_nat_stats.ns_bucketlen[1][nat->nat_hv[1]]--;
1684 ifs->ifs_ipf_nattable_sz);
1686 natp = &ifs->ifs_nat_table[0][hv];
1692 ifs->ifs_nat_stats.ns_bucketlen[0][hv]++;
1696 ifs->ifs_ipf_nattable_sz);
1698 natp = &ifs->ifs_nat_table[1][hv];
1704 ifs->ifs_nat_stats.ns_bucketlen[1][hv]++;
1742 ipf_stack_t *ifs = fin->fin_ifs; local
1771 hv = NAT_HASH_FN6(dst, hv + dport, ifs->ifs_ipf_nattable_sz);
1772 nat = ifs->ifs_nat_table[0][hv];
1828 if (ifs->ifs_nat_stats.ns_wilds == 0)
1831 RWLOCK_EXIT(&ifs->ifs_ipf_nat);
1834 hv = NAT_HASH_FN6(dst, hv, ifs->ifs_ipf_nattable_sz);
1836 WRITE_ENTER(&ifs->ifs_ipf_nat);
1838 nat = ifs->ifs_nat_table[0][hv];
1868 MUTEX_ENTER(&ifs->ifs_ipf_nat_new);
1869 ifs->ifs_nat_stats.ns_wilds--;
1870 MUTEX_EXIT(&ifs->ifs_ipf_nat_new);
1877 nat6_tabmove(nat, ifs);
1882 MUTEX_DOWNGRADE(&ifs->ifs_ipf_nat);
1897 nat_t *nat6_lookupredir(np, ifs) in nat6_lookupredir() argument
1899 ipf_stack_t *ifs;
1919 fi.fin_ifs = ifs;
1944 fin.fin_ifs = ifs;
2041 ipf_stack_t *ifs = fin->fin_ifs; local
2043 if (ifs->ifs_nat_stats.ns_rules == 0 || ifs->ifs_fr_nat_lock != 0)
2084 READ_ENTER(&ifs->ifs_ipf_nat);
2104 RWLOCK_EXIT(&ifs->ifs_ipf_nat);
2110 nmsk = ifs->ifs_nat6_masks[3];
2111 WRITE_ENTER(&ifs->ifs_ipf_nat);
2114 hv = NAT_HASH_FN6(&iph, 0, ifs->ifs_ipf_natrules_sz);
2115 for (np = ifs->ifs_nat_rules[hv]; np; np = np->in_mnext)
2165 nmsk = ifs->ifs_nat6_masks[i];
2171 MUTEX_DOWNGRADE(&ifs->ifs_ipf_nat);
2179 RWLOCK_EXIT(&ifs->ifs_ipf_nat);
2212 ipf_stack_t *ifs = fin->fin_ifs; local
2215 net_handle_t net_data_p = ifs->ifs_ipf_ipv6;
2289 ATOMIC_INCL(ifs->ifs_nat_stats.ns_mapped[1]);
2323 ipf_stack_t *ifs = fin->fin_ifs; local
2325 if (ifs->ifs_nat_stats.ns_rules == 0 || ifs->ifs_fr_nat_lock != 0)
2368 READ_ENTER(&ifs->ifs_ipf_nat);
2383 RWLOCK_EXIT(&ifs->ifs_ipf_nat);
2389 rmsk = ifs->ifs_rdr6_masks[3];
2390 WRITE_ENTER(&ifs->ifs_ipf_nat);
2397 hv = NAT_HASH_FN6(&iph, 0, ifs->ifs_ipf_rdrrules_sz);
2398 for (np = ifs->ifs_rdr_rules[hv]; np; np = np->in_rnext) {
2448 rmsk = ifs->ifs_rdr6_masks[i];
2454 MUTEX_DOWNGRADE(&ifs->ifs_ipf_nat);
2461 RWLOCK_EXIT(&ifs->ifs_ipf_nat);
2494 ipf_stack_t *ifs = fin->fin_ifs; local
2497 net_handle_t net_data_p = ifs->ifs_ipf_ipv6;
2593 ATOMIC_INCL(ifs->ifs_nat_stats.ns_mapped[0]);