aboutgitcodebugslistschat
path: root/flow.c
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2024-07-18 15:26:44 +1000
committerStefano Brivio <sbrivio@redhat.com>2024-07-19 18:33:33 +0200
commitc000f2aba6a4612a202ee4e8e66fec2d19deedf7 (patch)
tree20269df0fe4081bb7e9b9c40d6f6ff5effb1144a /flow.c
parent060f24e310b71f8813dbbc561a2e5a59d21feae0 (diff)
downloadpasst-c000f2aba6a4612a202ee4e8e66fec2d19deedf7.tar
passt-c000f2aba6a4612a202ee4e8e66fec2d19deedf7.tar.gz
passt-c000f2aba6a4612a202ee4e8e66fec2d19deedf7.tar.bz2
passt-c000f2aba6a4612a202ee4e8e66fec2d19deedf7.tar.lz
passt-c000f2aba6a4612a202ee4e8e66fec2d19deedf7.tar.xz
passt-c000f2aba6a4612a202ee4e8e66fec2d19deedf7.tar.zst
passt-c000f2aba6a4612a202ee4e8e66fec2d19deedf7.zip
flow, icmp: Use general flow forwarding rules for ICMP
Current ICMP hard codes its forwarding rules, and never applies any translations. Change it to use the flow_target() function, so that it's translated the same as TCP (excluding TCP specific port redirection). This means that gw mapping now applies to ICMP so "ping <gw address>" will now ping the host's loopback instead of the actual gw machine. This removes the surprising behaviour that the target you ping might not be the same as you connect to with TCP. This removes the last user of flow_target_af(), so that's removed as well. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'flow.c')
-rw-r--r--flow.c32
1 files changed, 0 insertions, 32 deletions
diff --git a/flow.c b/flow.c
index c1af136..27340df 100644
--- a/flow.c
+++ b/flow.c
@@ -370,38 +370,6 @@ const struct flowside *flow_initiate_sa(union flow *flow, uint8_t pif,
}
/**
- * flow_target_af() - Move flow to TGT, setting TGTSIDE details
- * @flow: Flow to change state
- * @pif: pif of the target side
- * @af: Address family for @eaddr and @faddr
- * @saddr: Source address (pointer to in_addr or in6_addr)
- * @sport: Endpoint port
- * @daddr: Destination address (pointer to in_addr or in6_addr)
- * @dport: Destination port
- *
- * Return: pointer to the target flowside information
- */
-const struct flowside *flow_target_af(union flow *flow, uint8_t pif,
- sa_family_t af,
- const void *saddr, in_port_t sport,
- const void *daddr, in_port_t dport)
-{
- struct flow_common *f = &flow->f;
- struct flowside *tgt = &f->side[TGTSIDE];
-
- ASSERT(pif != PIF_NONE);
- ASSERT(flow_new_entry == flow && f->state == FLOW_STATE_INI);
- ASSERT(f->type == FLOW_TYPE_NONE);
- ASSERT(f->pif[INISIDE] != PIF_NONE && f->pif[TGTSIDE] == PIF_NONE);
-
- flowside_from_af(tgt, af, daddr, dport, saddr, sport);
- f->pif[TGTSIDE] = pif;
- flow_set_state(f, FLOW_STATE_TGT);
- return tgt;
-}
-
-
-/**
* flow_target() - Determine where flow should forward to, and move to TGT
* @c: Execution context
* @flow: Flow to forward