Lines Matching refs:nt
306 npf_nat_t *nt; in npf_natpolicy_destroy() local
309 LIST_FOREACH(nt, &np->n_nat_list, nt_entry) { in npf_natpolicy_destroy()
310 npf_conn_t *con = nt->nt_conn; in npf_natpolicy_destroy()
331 npf_nat_t *nt; in npf_nat_freealg() local
334 LIST_FOREACH(nt, &np->n_nat_list, nt_entry) { in npf_nat_freealg()
335 if (nt->nt_alg == alg) { in npf_nat_freealg()
336 npf_alg_destroy(np->n_npfctx, alg, nt, nt->nt_conn); in npf_nat_freealg()
337 nt->nt_alg = NULL; in npf_nat_freealg()
484 npf_nat_t *nt; in npf_nat_create() local
490 nt = pool_cache_get(nat_cache, PR_NOWAIT); in npf_nat_create()
491 if (__predict_false(!nt)) { in npf_nat_create()
495 nt->nt_natpolicy = np; in npf_nat_create()
496 nt->nt_conn = con; in npf_nat_create()
497 nt->nt_alg = NULL; in npf_nat_create()
507 nt->nt_ifid = nbuf->nb_ifid; in npf_nat_create()
517 pool_cache_put(nat_cache, nt); in npf_nat_create()
520 memcpy(&nt->nt_taddr, taddr, alen); in npf_nat_create()
525 npf_nat_algo_netmap(npc, np, which, &nt->nt_taddr); in npf_nat_create()
526 taddr = &nt->nt_taddr; in npf_nat_create()
530 memcpy(&nt->nt_taddr, taddr, alen); in npf_nat_create()
532 nt->nt_alen = alen; in npf_nat_create()
537 memcpy(&nt->nt_oaddr, npc->npc_ips[NPF_SRC], alen); in npf_nat_create()
541 memcpy(&nt->nt_oaddr, npc->npc_ips[NPF_DST], alen); in npf_nat_create()
549 nt->nt_oport = 0; in npf_nat_create()
550 nt->nt_tport = 0; in npf_nat_create()
557 nt->nt_oport = (np->n_type == NPF_NATOUT) ? in npf_nat_create()
561 nt->nt_oport = (np->n_type == NPF_NATOUT) ? in npf_nat_create()
568 nt->nt_tport = npf_portmap_get(pm, alen, taddr); in npf_nat_create()
570 nt->nt_tport = np->n_tport; in npf_nat_create()
574 LIST_INSERT_HEAD(&np->n_nat_list, nt, nt_entry); in npf_nat_create()
577 return nt; in npf_nat_create()
584 npf_dnat_translate(npf_cache_t *npc, npf_nat_t *nt, npf_flow_t flow) in npf_dnat_translate() argument
586 const npf_natpolicy_t *np = nt->nt_natpolicy; in npf_dnat_translate()
596 addr = &nt->nt_taddr; in npf_dnat_translate()
597 port = nt->nt_tport; in npf_dnat_translate()
600 addr = &nt->nt_oaddr; in npf_dnat_translate()
601 port = nt->nt_oport; in npf_dnat_translate()
608 npf_alg_exec(npc, nt, flow); in npf_dnat_translate()
651 npf_nat_t *nt; in npf_nat_share_policy() local
655 nt = npf_nat_create(npc, np, con); in npf_nat_share_policy()
656 if (__predict_false(nt == NULL)) { in npf_nat_share_policy()
662 ret = npf_conn_setnat(npc, con, nt, np->n_type); in npf_nat_share_policy()
665 npf_nat_destroy(con, nt); in npf_nat_share_policy()
668 return nt; in npf_nat_share_policy()
683 npf_nat_t *nt; in npf_nat_lookup() local
685 if ((nt = npf_conn_getnat(con)) == NULL) { in npf_nat_lookup()
688 if (nt->nt_ifid != nbuf->nb_ifid) { in npf_nat_lookup()
692 np = nt->nt_natpolicy; in npf_nat_lookup()
700 return nt; in npf_nat_lookup()
722 npf_nat_t *nt; in npf_do_nat() local
736 if (con && (nt = npf_nat_lookup(npc, con, di, &flow)) != NULL) { in npf_do_nat()
737 np = nt->nt_natpolicy; in npf_do_nat()
781 nt = npf_nat_create(npc, np, con); in npf_do_nat()
782 if (nt == NULL) { in npf_do_nat()
789 if (npf_alg_match(npc, nt, di)) { in npf_do_nat()
790 KASSERT(nt->nt_alg != NULL); in npf_do_nat()
794 error = npf_conn_setnat(npc, con, nt, np->n_type); in npf_do_nat()
797 npf_nat_destroy(con, nt); in npf_do_nat()
808 error = npf_dnat_translate(npc, nt, flow); in npf_do_nat()
824 npf_nat_gettrans(npf_nat_t *nt, npf_addr_t **addr, in_port_t *port) in npf_nat_gettrans() argument
826 *addr = &nt->nt_taddr; in npf_nat_gettrans()
827 *port = nt->nt_tport; in npf_nat_gettrans()
834 npf_nat_getorig(npf_nat_t *nt, npf_addr_t **addr, in_port_t *port) in npf_nat_getorig() argument
836 *addr = &nt->nt_oaddr; in npf_nat_getorig()
837 *port = nt->nt_oport; in npf_nat_getorig()
844 npf_nat_setalg(npf_nat_t *nt, npf_alg_t *alg, uintptr_t arg) in npf_nat_setalg() argument
846 nt->nt_alg = alg; in npf_nat_setalg()
847 nt->nt_alg_arg = arg; in npf_nat_setalg()
851 npf_nat_getalg(const npf_nat_t *nt) in npf_nat_getalg() argument
853 return nt->nt_alg; in npf_nat_getalg()
857 npf_nat_getalgarg(const npf_nat_t *nt) in npf_nat_getalgarg() argument
859 return nt->nt_alg_arg; in npf_nat_getalgarg()
866 npf_nat_destroy(npf_conn_t *con, npf_nat_t *nt) in npf_nat_destroy() argument
868 npf_natpolicy_t *np = nt->nt_natpolicy; in npf_nat_destroy()
873 if ((alg = npf_nat_getalg(nt)) != NULL) { in npf_nat_destroy()
874 npf_alg_destroy(npf, alg, nt, con); in npf_nat_destroy()
875 nt->nt_alg = NULL; in npf_nat_destroy()
879 if ((np->n_flags & NPF_NAT_PORTMAP) != 0 && nt->nt_tport) { in npf_nat_destroy()
881 npf_portmap_put(pm, nt->nt_alen, &nt->nt_taddr, nt->nt_tport); in npf_nat_destroy()
890 LIST_REMOVE(nt, nt_entry); in npf_nat_destroy()
894 pool_cache_put(nat_cache, nt); in npf_nat_destroy()
901 npf_nat_export(npf_t *npf, const npf_nat_t *nt, nvlist_t *con_nv) in npf_nat_export() argument
903 npf_natpolicy_t *np = nt->nt_natpolicy; in npf_nat_export()
904 unsigned alen = nt->nt_alen; in npf_nat_export()
908 if (nt->nt_ifid) { in npf_nat_export()
910 npf_ifmap_copyname(npf, nt->nt_ifid, ifname, sizeof(ifname)); in npf_nat_export()
915 nvlist_add_binary(nat_nv, "oaddr", &nt->nt_oaddr, alen); in npf_nat_export()
916 nvlist_add_number(nat_nv, "oport", nt->nt_oport); in npf_nat_export()
918 nvlist_add_binary(nat_nv, "taddr", &nt->nt_taddr, alen); in npf_nat_export()
919 nvlist_add_number(nat_nv, "tport", nt->nt_tport); in npf_nat_export()
933 npf_nat_t *nt; in npf_nat_import() local
943 nt = pool_cache_get(nat_cache, PR_WAITOK); in npf_nat_import()
944 memset(nt, 0, sizeof(npf_nat_t)); in npf_nat_import()
947 if (ifname && (nt->nt_ifid = npf_ifmap_register(npf, ifname)) == 0) { in npf_nat_import()
960 memcpy(&nt->nt_taddr, taddr, sizeof(npf_addr_t)); in npf_nat_import()
966 memcpy(&nt->nt_oaddr, oaddr, sizeof(npf_addr_t)); in npf_nat_import()
968 nt->nt_oport = dnvlist_get_number(nat, "oport", 0); in npf_nat_import()
969 nt->nt_tport = dnvlist_get_number(nat, "tport", 0); in npf_nat_import()
972 if ((np->n_flags & NPF_NAT_PORTMAP) != 0 && nt->nt_tport) { in npf_nat_import()
975 if (!npf_portmap_take(pm, nt->nt_alen, in npf_nat_import()
976 &nt->nt_taddr, nt->nt_tport)) { in npf_nat_import()
986 nt->nt_natpolicy = np; in npf_nat_import()
987 nt->nt_conn = con; in npf_nat_import()
990 LIST_INSERT_HEAD(&np->n_nat_list, nt, nt_entry); in npf_nat_import()
991 return nt; in npf_nat_import()
993 pool_cache_put(nat_cache, nt); in npf_nat_import()
1000 npf_nat_dump(const npf_nat_t *nt) in npf_nat_dump() argument
1005 np = nt->nt_natpolicy; in npf_nat_dump()
1006 memcpy(&ip, &nt->nt_taddr, sizeof(ip)); in npf_nat_dump()
1009 memcpy(&ip, &nt->nt_oaddr, sizeof(ip)); in npf_nat_dump()
1011 inet_ntoa(ip), ntohs(nt->nt_oport), ntohs(nt->nt_tport)); in npf_nat_dump()
1012 if (nt->nt_alg) { in npf_nat_dump()
1014 nt->nt_alg, (void *)nt->nt_alg_arg); in npf_nat_dump()