Index: sys/netpfil/ipfw/ip_fw_nat.c =================================================================== --- sys/netpfil/ipfw/ip_fw_nat.c +++ sys/netpfil/ipfw/ip_fw_nat.c @@ -373,9 +373,18 @@ return (IP_FW_NAT); } } else { - if (args->oif == NULL) + if (args->oif == NULL) { + if (t->redir_cnt == 1 && t->ip.s_addr == INADDR_ANY) { + + struct cfg_redir *r; + r = t->redir_chain.lh_first; + if (r->mode == NAT44_REDIR_PORT) { + LibAliasSetAddress(t->lib, ip->ip_dst); + } + } retval = LibAliasIn(t->lib, c, mcl->m_len + M_TRAILINGSPACE(mcl)); + } else retval = LibAliasOut(t->lib, c, mcl->m_len + M_TRAILINGSPACE(mcl));