Lines Matching refs:np

141 	ipnat_t **np;  local
151 np = ifs->ifs_rdr_rules + hv;
152 while (*np != NULL)
153 np = &(*np)->in_rnext;
155 n->in_prnext = np;
157 *np = n;
174 ipnat_t **np; local
184 np = ifs->ifs_nat_rules + hv;
185 while (*np != NULL)
186 np = &(*np)->in_mnext;
188 n->in_pmnext = np;
190 *np = n;
208 static struct hostmap *nat6_hostmap(np, src, dst, map, port, ifs) in nat6_hostmap() argument
209 ipnat_t *np; in nat6_hostmap()
233 ((np == NULL) || (np == hm->hm_ipnat)) &&
239 if (np == NULL)
255 hm->hm_ipnat = np;
289 ipnat_t *np; local
300 np = ni->nai_np;
301 st_ip = np->in_next6;
302 st_port = np->in_pnext;
314 in = np->in_next6;
320 hm = nat6_hostmap(np, &fin->fin_src6, &fin->fin_dst6,
330 if (IP6_ISONES(&np->in_out[1]) && (np->in_pnext == 0)) {
335 if (np->in_redir == NAT_BIMAP &&
336 IP6_EQ(&np->in_in[1], &np->in_out[1])) {
342 ~np->in_in[1].i6[0];
344 ~np->in_in[1].i6[1];
346 ~np->in_in[1].i6[2];
348 ~np->in_in[1].i6[3];
349 in = np->in_out[0];
350 IP6_MERGE(&in, &temp, &np->in_in[0]);
353 } else if (np->in_redir & NAT_MAPBLK) {
354 if ((l >= np->in_ppip) || ((l > 0) &&
360 IP6_MASK(&in, &fin->fin_src6, &np->in_in[1]);
363 in /= np->in_ippip;
364 in &= ntohl(~np->in_out[1]);
365 in += ntohl(np->in_out[0]);
370 (np->in_ppip != 0)) {
372 port %= np->in_ppip;
373 port += np->in_ppip *
374 (inb.s_addr % np->in_ippip);
380 } else if (IP6_ISZERO(&np->in_out[0]) &&
381 IP6_ISONES(&np->in_out[1])) {
390 } else if (IP6_ISZERO(&np->in_out[0]) &&
391 IP6_ISZERO(&np->in_out[1])) {
399 } else if (!IP6_ISONES(&np->in_out[1]) &&
400 (np->in_pnext == 0) && ((l > 0) || (hm == NULL))) {
401 IP6_INC(&np->in_next6);
407 ((np->in_redir & NAT_MAPBLK) == 0) &&
408 (np->in_flags & IPN_AUTOPORTMAP)) {
414 if ((l > 0) && (l % np->in_ppip == 0)) {
415 if (l > np->in_space) {
417 } else if ((l > np->in_ppip) &&
418 !IP6_ISONES(&np->in_out[1])) {
419 IP6_INC(&np->in_next6);
422 if (np->in_ppip != 0) {
424 port += (l % np->in_ppip);
425 port %= np->in_ppip;
426 port += np->in_ppip *
428 np->in_ippip);
434 } else if (((np->in_redir & NAT_MAPBLK) == 0) &&
435 (flags & IPN_TCPUDPICMP) && (np->in_pnext != 0)) {
439 if (np->in_flags & IPN_SEQUENTIAL) {
440 port = np->in_pnext;
442 port = ipf_random() % (ntohs(np->in_pmax) -
443 ntohs(np->in_pmin));
444 port += ntohs(np->in_pmin);
447 np->in_pnext++;
449 if (np->in_pnext > ntohs(np->in_pmax)) {
450 np->in_pnext = ntohs(np->in_pmin);
451 if (!IP6_ISONES(&np->in_out[1])) {
452 IP6_INC(&np->in_next6);
457 if (np->in_flags & IPN_IPRANGE) {
458 if (IP6_GT(&np->in_next6, &np->in_out[1]))
459 np->in_next6 = np->in_out[0];
463 a1 = np->in_next6;
465 IP6_AND(&a1, &np->in_out[1], &a2);
466 if (!IP6_ISONES(&np->in_out[1]) &&
467 IP6_GT(&a2, &np->in_out[0])) {
468 IP6_ADD(&np->in_out[0], 1, &np->in_next6);
499 (np->in_pnext != 0) && (st_port == np->in_pnext) &&
500 !IP6_ISZERO(&np->in_next6) &&
501 IP6_EQ(&st_ip, &np->in_next6))
506 if (np->in_space > 0)
507 np->in_space--;
514 nat->nat_hm = nat6_hostmap(np, &fin->fin_src6, &fin->fin_dst6,
556 ipnat_t *np; local
567 np = ni->nai_np;
579 if ((np->in_flags & (IPN_ROUNDR|IPN_STICKY)) ==
585 np = hm->hm_ipnat;
586 ni->nai_np = np;
597 if (np->in_flags & IPN_SPLIT) {
598 in = np->in_next6;
600 if ((np->in_flags & (IPN_ROUNDR|IPN_STICKY)) == IPN_STICKY) {
601 hm = nat6_hostmap(np, &fin->fin_src6, &fin->fin_dst6,
610 if (IP6_EQ(&np->in_in[0], &in)) {
611 np->in_next6 = np->in_in[1];
614 np->in_next6 = np->in_in[0];
618 } else if (IP6_ISZERO(&np->in_in[0]) &&
619 IP6_ISONES(&np->in_in[1])) {
627 } else if (IP6_ISZERO(&np->in_in[0]) &&
628 IP6_ISZERO(&np->in_in[1])) {
634 } else if (np->in_redir == NAT_BIMAP &&
635 IP6_EQ(&np->in_in[1], &np->in_out[1])) {
640 temp.i6[0] = fin->fin_dst6.i6[0] & ~np->in_in[1].i6[0];
641 temp.i6[1] = fin->fin_dst6.i6[1] & ~np->in_in[1].i6[1];
642 temp.i6[2] = fin->fin_dst6.i6[2] & ~np->in_in[1].i6[2];
643 temp.i6[3] = fin->fin_dst6.i6[3] & ~np->in_in[1].i6[3];
644 in = np->in_in[0];
645 IP6_MERGE(&in, &temp, &np->in_in[1]);
647 in = np->in_in[0];
650 if ((np->in_pnext == 0) || ((flags & NAT_NOTRULEPORT) != 0))
657 if (((np->in_flags & IPN_FIXEDDPORT) == 0) &&
658 (np->in_pmin != np->in_pmax)) {
659 nport = ntohs(dport) - ntohs(np->in_pmin) +
660 ntohs(np->in_pnext);
663 nport = np->in_pnext;
696 if ((nat->nat_hm == NULL) && ((np->in_flags & IPN_STICKY) != 0))
697 nat->nat_hm = nat6_hostmap(np, &fin->fin_src6,
736 nat_t *nat6_new(fin, np, natsave, flags, direction) in nat6_new() argument
738 ipnat_t *np;
764 nflags = np->in_flags & flags;
767 ni.nai_np = np;
814 nat->nat_redir = np->in_redir;
841 np = ni.nai_np;
858 np = ni.nai_np;
861 if ((move == 1) && (np->in_flags & IPN_ROUNDR)) {
862 if (np->in_redir == NAT_REDIRECT) {
863 nat_delrdr(np);
864 nat6_addrdr(np, ifs);
865 } else if (np->in_redir == NAT_MAP) {
866 nat_delnat(np);
867 nat6_addnat(np, ifs);
916 ipnat_t *np; local
919 np = ni->nai_np;
930 nat->nat_ifps[0] = np->in_ifps[0];
931 nat->nat_ifps[1] = np->in_ifps[1];
932 nat->nat_ptr = np;
935 nat->nat_mssclamp = np->in_mssclamp;
941 if ((np->in_apr != NULL) && ((ni->nai_flags & NAT_SLAVE) == 0))
948 nat_log(nat, (u_int)np->in_redir, ifs);
949 np->in_use++;
1897 nat_t *nat6_lookupredir(np, ifs) in nat6_lookupredir() argument
1898 natlookup_t *np; in nat6_lookupredir()
1905 if (np->nl_flags & IPN_IN) {
1906 fi.fin_data[0] = ntohs(np->nl_realport);
1907 fi.fin_data[1] = ntohs(np->nl_outport);
1909 fi.fin_data[0] = ntohs(np->nl_inport);
1910 fi.fin_data[1] = ntohs(np->nl_outport);
1912 if (np->nl_flags & IPN_TCP)
1914 else if (np->nl_flags & IPN_UDP)
1916 else if (np->nl_flags & (IPN_ICMPERR|IPN_ICMPQUERY))
1925 if (np->nl_flags & IPN_IN) {
1926 if ((nat = nat6_inlookup(&fi, np->nl_flags, fi.fin_p,
1927 &np->nl_realip6, &np->nl_outip6))) {
1928 np->nl_inipaddr = nat->nat_inip6;
1929 np->nl_inport = nat->nat_inport;
1936 if ((nat = nat6_outlookup(&fi, np->nl_flags, fi.fin_p,
1937 &np->nl_inip6, &np->nl_outip6))) {
1938 if ((np->nl_flags & IPN_FINDFORWARD) != 0) {
1945 if (nat6_inlookup(&fin, np->nl_flags, fin.fin_p,
1948 np->nl_flags &= ~IPN_FINDFORWARD;
1952 np->nl_realip6 = nat->nat_outip6.in6;
1953 np->nl_realport = nat->nat_outport;
1970 static int nat6_match(fin, np) in nat6_match() argument
1972 ipnat_t *np;
1979 if (np->in_p && fin->fin_p != np->in_p)
1983 if (!(np->in_redir & (NAT_MAP|NAT_MAPBLK)))
1985 if (IP6_MASKNEQ(&fin->fin_src6, &np->in_in[1], &np->in_in[0])
1986 ^ ((np->in_flags & IPN_NOTSRC) != 0))
1988 if (IP6_MASKNEQ(&fin->fin_dst6, &np->in_src[1], &np->in_src[0])
1989 ^ ((np->in_flags & IPN_NOTDST) != 0))
1992 if (!(np->in_redir & NAT_REDIRECT))
1994 if (IP6_MASKNEQ(&fin->fin_src6, &np->in_src[1], &np->in_src[0])
1995 ^ ((np->in_flags & IPN_NOTSRC) != 0))
1997 if (IP6_MASKNEQ(&fin->fin_dst6, &np->in_out[1], &np->in_out[0])
1998 ^ ((np->in_flags & IPN_NOTDST) != 0))
2002 ft = &np->in_tuc;
2035 ipnat_t *np = NULL; local
2115 for (np = ifs->ifs_nat_rules[hv]; np; np = np->in_mnext)
2117 if ((np->in_ifps[1] && (np->in_ifps[1] != ifp)))
2119 if (np->in_v != 6)
2121 if (np->in_p && (np->in_p != fin->fin_p))
2123 if ((np->in_flags & IPN_RF) && !(np->in_flags & nflags))
2125 if (np->in_flags & IPN_FILTER) {
2126 if (!nat6_match(fin, np))
2128 } else if (!IP6_MASKEQ(&ipa, &np->in_in[1],
2129 &np->in_in[0]))
2133 !fr_matchtag(&np->in_tag, &fr->fr_nattag))
2137 if (*np->in_plabel != '\0') {
2138 if (((np->in_flags & IPN_FILTER) == 0) &&
2139 (np->in_dport != tcp->th_dport))
2141 if (appr_ok(fin, tcp, np) == 0)
2146 if (nat = nat6_new(fin, np, NULL, nflags,
2148 np->in_hits++;
2153 if ((np == NULL) && (i >= 0)) {
2210 ipnat_t *np; local
2221 np = nat->nat_ptr;
2250 nat_update(fin, nat, np);
2283 if ((np != NULL) && (np->in_apr != NULL)) {
2320 ipnat_t *np; local
2398 for (np = ifs->ifs_rdr_rules[hv]; np; np = np->in_rnext) {
2399 if (np->in_ifps[0] && (np->in_ifps[0] != ifp))
2401 if (np->in_v != fin->fin_v)
2403 if (np->in_p && (np->in_p != fin->fin_p))
2405 if ((np->in_flags & IPN_RF) && !(np->in_flags & nflags))
2407 if (np->in_flags & IPN_FILTER) {
2408 if (!nat6_match(fin, np))
2411 if (!IP6_MASKEQ(&ipa, &np->in_out[1],
2412 &np->in_out[0]))
2414 if (np->in_pmin &&
2415 ((ntohs(np->in_pmax) < ntohs(dport)) ||
2416 (ntohs(dport) < ntohs(np->in_pmin))))
2421 if (*np->in_plabel != '\0') {
2422 if (!appr_ok(fin, tcp, np)) {
2428 nat = nat6_new(fin, np, NULL, nflags, NAT_INBOUND);
2430 np->in_hits++;
2436 if ((np == NULL) && (i >= 0)) {
2493 ipnat_t *np; local
2502 np = nat->nat_ptr;
2509 if (np != NULL) {
2521 if (np->in_apr != NULL) {
2561 nat_update(fin, nat, np);
2595 if (np != NULL && np->in_tag.ipt_num[0] != 0)
2596 fin->fin_nattag = &np->in_tag;