From 3d2db66d28592526ba95066b1149e87fa470a07c Mon Sep 17 00:00:00 2001 From: Tom Carroll <34632752+tomc797@users.noreply.github.com> Date: Sun, 29 Sep 2024 16:10:39 -0700 Subject: [PATCH] Customize `hosted` socket factory to set `SO_MARK` Implements setting the SO_MARK option for sockets designated for the `hosted` services. Signed-off-by: Tom Carroll <4632752+tomc797@users.noreply.github.com> --- .../ziti-edge-tunnel/netif_driver/linux/tun.c | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/programs/ziti-edge-tunnel/netif_driver/linux/tun.c b/programs/ziti-edge-tunnel/netif_driver/linux/tun.c index decd7991..07b6359d 100644 --- a/programs/ziti-edge-tunnel/netif_driver/linux/tun.c +++ b/programs/ziti-edge-tunnel/netif_driver/linux/tun.c @@ -649,3 +649,25 @@ uv_os_sock_t tlsuv_socket(const struct addrinfo *ai, bool blocking) return sd; } + +/** + * Override ziti_hosting_cbs socket factory. This factory is used to create + * the sockets used for `hosted` services. + */ +int +ziti_tunnel_hosting_socket(uv_os_sock_t *psock, const struct addrinfo *ai) +{ + uv_os_sock_t sd; + + sd = make_bypass_socket(ai, true); + if (sd < 0) { + int uv_err = uv_translate_sys_error(errno); + + *psock = -1; + return uv_err; + } + + *psock = sd; + + return 0; +}