From 3dc698eccddbadef8b689fa2875b4cf410708d51 Mon Sep 17 00:00:00 2001 From: Vladimir Dubrovin <3proxy@3proxy.ru> Date: Wed, 29 Jun 2022 10:18:36 +0300 Subject: [PATCH] Fix compilation issues --- src/common.c | 6 +++--- src/proxymain.c | 12 ++++++------ src/structures.h | 3 +++ src/tcppm.c | 6 +++++- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/common.c b/src/common.c index d584632..2acd64d 100644 --- a/src/common.c +++ b/src/common.c @@ -431,15 +431,15 @@ int doconnect(struct clientparam * param){ #endif } #endif -#ifdef SO_BINDTODEVICE +#if defined SO_BINDTODEVICE if(param->srv->obindtodevice) { if(so._setsockopt(param->remsock, SOL_SOCKET, SO_BINDTODEVICE, param->srv->obindtodevice, strlen(param->srv->obindtodevice) + 1)) return 12; } -#elseif IP_BOUND_IF +#elif defined IP_BOUND_IF if(param->srv->obindtodevice) { int idx; - idx = if_nametoindex(param->srv->obindtodevice) + idx = if_nametoindex(param->srv->obindtodevice); if(!idx || so._setsockopt(param->remsock, IPPROTO_IP, IP_BOUND_IF, &idx, sizeof(idx))) return 12; #ifndef NOIPV6 diff --git a/src/proxymain.c b/src/proxymain.c index 1312e9d..1534e11 100644 --- a/src/proxymain.c +++ b/src/proxymain.c @@ -610,22 +610,22 @@ int MODULEMAINFUNC (int argc, char** argv){ opt = 1; so._setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, (char *)&opt, sizeof(int)); #endif -#ifdef SO_BINDTODEVICE +#if defined SO_BINDTODEVICE if(srv.ibindtodevice && so._setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, srv.ibindtodevice, strlen(srv.ibindtodevice) + 1)) { dolog(&defparam, "failed to bind device"); return -12; } -#elseif IP_BOUND_IF +#elif defined IP_BOUND_IF if(srv.ibindtodevice){ int idx; idx = if_nametoindex(srv.ibindtodevice); - if(!idx || setsockopt(sockfd, IPPROTO_IP, IP_BOUND_IF, &idx, sizeof(idx))) { - dolog(&defparam, "failed to bind device"); + if(!idx || setsockopt(sock, IPPROTO_IP, IP_BOUND_IF, &idx, sizeof(idx))) { + dolog(&defparam, (unsigned char *)"failed to bind device"); return -12; } #ifndef NOIPV6 - if(so._setsockopt(param->remsock, IPPROTO_IPV6, IPV6_BOUND_IF, &idx, sizeof(idx))) { - dolog(&defparam, "failed to bind device"); + if(so._setsockopt(sock, IPPROTO_IPV6, IPV6_BOUND_IF, &idx, sizeof(idx))) { + dolog(&defparam, (unsigned char *)"failed to bind device"); return -12; } #endif diff --git a/src/structures.h b/src/structures.h index 0423ff2..01c3bff 100644 --- a/src/structures.h +++ b/src/structures.h @@ -31,6 +31,9 @@ extern "C" { #include #include #include +#ifdef IP_BOUND_IF +#include +#endif #define SASIZETYPE socklen_t #define SOCKET int #define INVALID_SOCKET (-1) diff --git a/src/tcppm.c b/src/tcppm.c index f043b7a..7d0b0df 100644 --- a/src/tcppm.c +++ b/src/tcppm.c @@ -28,7 +28,11 @@ void * tcppmchild(struct clientparam* param) { } if(action != PASS) RETURN(19); } - RETURN (param->redirectfunc?param->redirectfunc(param):mapsocket(param, conf.timeouts[CONNECTION_L])); + if(param->redirectfunc){ + return (*param->redirectfunc)(param); + } + + RETURN (mapsocket(param, conf.timeouts[CONNECTION_L])); CLEANRET: dolog(param, param->hostname);