diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2022-09-24 19:08:16 +1000 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2022-09-24 14:48:35 +0200 |
commit | 1128fa03fe73092dc68f30d0550283f0897d1f89 (patch) | |
tree | d5888f195c6be778f64f0e5e45d58a84c8a69361 /tcp.h | |
parent | 11e285df8f6f5943e87c78d025da2c95ca158e0b (diff) | |
download | passt-1128fa03fe73092dc68f30d0550283f0897d1f89.tar passt-1128fa03fe73092dc68f30d0550283f0897d1f89.tar.gz passt-1128fa03fe73092dc68f30d0550283f0897d1f89.tar.bz2 passt-1128fa03fe73092dc68f30d0550283f0897d1f89.tar.lz passt-1128fa03fe73092dc68f30d0550283f0897d1f89.tar.xz passt-1128fa03fe73092dc68f30d0550283f0897d1f89.tar.zst passt-1128fa03fe73092dc68f30d0550283f0897d1f89.zip |
Improve types and names for port forwarding configuration
enum conf_port_type is local to conf.c and is used to track the port
forwarding mode during configuration. We don't keep it around in the
context structure, however the 'init_detect_ports' and 'ns_detect_ports'
fields in the context are based solely on this. Rather than changing
encoding, just include the forwarding mode into the context structure.
Move the type definition to a new port_fwd.h, which is kind of trivial at
the moment but will have more stuff later.
While we're there, "conf_port_type" doesn't really convey that this enum is
describing how port forwarding is configured. Rename it to port_fwd_mode.
The variables (now fields) of this type also have mildly confusing names
since it's not immediately obvious whether 'ns' and 'init' refer to the
source or destination of the packets. Use "in" (host to guest / init to
ns) and "out" (guest to host / ns to init) instead.
This has the added bonus that we no longer have locals 'udp_init' and
'tcp_init' which shadow global functions.
In addition, add a typedef 'port_fwd_map' for a bitmap of each port number,
which is used in several places.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'tcp.h')
-rw-r--r-- | tcp.h | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -58,9 +58,9 @@ union tcp_epoll_ref { * @conn_count: Count of connections (not spliced) in connection table * @splice_conn_count: Count of spliced connections in connection table * @port_to_tap: Ports bound host-side, packets to tap or spliced - * @init_detect_ports: If set, periodically detect ports bound in init + * @fwd_mode_in: Port forwarding mode for inbound packets * @port_to_init: Ports bound namespace-side, spliced to init - * @ns_detect_ports: If set, periodically detect ports bound in namespace + * @fwd_mode_out: Port forwarding mode for outbound packets * @timer_run: Timestamp of most recent timer run * @kernel_snd_wnd: Kernel reports sending window (with commit 8f7baad7f035) * @pipe_size: Size of pipes for spliced connections @@ -69,10 +69,10 @@ struct tcp_ctx { uint64_t hash_secret[2]; int conn_count; int splice_conn_count; - uint8_t port_to_tap [DIV_ROUND_UP(USHRT_MAX, 8)]; - int init_detect_ports; - uint8_t port_to_init [DIV_ROUND_UP(USHRT_MAX, 8)]; - int ns_detect_ports; + uint8_t port_to_tap [PORT_BITMAP_SIZE]; + enum port_fwd_mode fwd_mode_in; + uint8_t port_to_init [PORT_BITMAP_SIZE]; + enum port_fwd_mode fwd_mode_out; struct timespec timer_run; #ifdef HAS_SND_WND int kernel_snd_wnd; |