NPF_FLOW_FORW
if (flow == NPF_FLOW_FORW || !npf_iscached(npc, NPC_ICMP))
npf_flow_t pflow = match ? NPF_FLOW_FORW : NPF_FLOW_BACK;
if (!npf_conn_conkey(npc, &key, di, NPF_FLOW_FORW)) {
if (!npf_conn_conkey(npc, fw, di, NPF_FLOW_FORW) ||
if (!npf_conndb_insert(conn_db, fw, con, NPF_FLOW_FORW)) {
if (!npf_conndb_insert(cd, fw, con, NPF_FLOW_FORW)) {
if (!npf_conn_check(con, NULL, 0, NPF_FLOW_FORW)) {
*flow = CONNDB_ISFORW_P(val) ? NPF_FLOW_FORW : NPF_FLOW_BACK;
const bool invert = flow != NPF_FLOW_FORW;
ret = npf_connkey_setkey(key, alen1, proto, ips, ids, NPF_FLOW_FORW);
if (__predict_true(flow == NPF_FLOW_FORW)) {
CTASSERT(NPF_FLOW_FORW == NPF_SRC && NPF_FLOW_BACK == NPF_DST);
KASSERT(flow == NPF_FLOW_FORW || flow == NPF_FLOW_BACK);
const unsigned which = npf_nat_which(np->n_type, NPF_FLOW_FORW);
if (flow == NPF_FLOW_FORW) {
*flow = (np->n_type == di) ? NPF_FLOW_FORW : NPF_FLOW_BACK;
flow = NPF_FLOW_FORW;
ret = npf_state_tcp(npc, nst, NPF_FLOW_FORW);
nst->nst_state = npf_generic_fsm[nst->nst_state][NPF_FLOW_FORW];
[NPF_FLOW_FORW] = NPF_ANY_CONN_NEW,
[NPF_FLOW_FORW] = NPF_ANY_CONN_NEW,
[NPF_FLOW_FORW] = NPF_ANY_CONN_ESTABLISHED,
[NPF_FLOW_FORW] = {
[NPF_FLOW_FORW] = {
[NPF_FLOW_FORW] = {
[NPF_FLOW_FORW] = {
[NPF_FLOW_FORW] = {
[NPF_FLOW_FORW] = {
[NPF_FLOW_FORW] = {
[NPF_FLOW_FORW] = {
[NPF_FLOW_FORW] = {
[NPF_FLOW_FORW] = {
[NPF_FLOW_FORW] = {
[NPF_FLOW_FORW] = {
(p->flags == OUT) ? NPF_FLOW_FORW : NPF_FLOW_BACK);
const int di = forw ? NPF_FLOW_FORW : NPF_FLOW_BACK;