Fix compilation issues

This commit is contained in:
Vladimir Dubrovin 2022-06-29 10:18:36 +03:00
parent c1beceb24b
commit 3dc698eccd
4 changed files with 17 additions and 10 deletions

View File

@ -431,15 +431,15 @@ int doconnect(struct clientparam * param){
#endif #endif
} }
#endif #endif
#ifdef SO_BINDTODEVICE #if defined SO_BINDTODEVICE
if(param->srv->obindtodevice) { if(param->srv->obindtodevice) {
if(so._setsockopt(param->remsock, SOL_SOCKET, SO_BINDTODEVICE, param->srv->obindtodevice, strlen(param->srv->obindtodevice) + 1)) if(so._setsockopt(param->remsock, SOL_SOCKET, SO_BINDTODEVICE, param->srv->obindtodevice, strlen(param->srv->obindtodevice) + 1))
return 12; return 12;
} }
#elseif IP_BOUND_IF #elif defined IP_BOUND_IF
if(param->srv->obindtodevice) { if(param->srv->obindtodevice) {
int idx; 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))) if(!idx || so._setsockopt(param->remsock, IPPROTO_IP, IP_BOUND_IF, &idx, sizeof(idx)))
return 12; return 12;
#ifndef NOIPV6 #ifndef NOIPV6

View File

@ -610,22 +610,22 @@ int MODULEMAINFUNC (int argc, char** argv){
opt = 1; opt = 1;
so._setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, (char *)&opt, sizeof(int)); so._setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, (char *)&opt, sizeof(int));
#endif #endif
#ifdef SO_BINDTODEVICE #if defined SO_BINDTODEVICE
if(srv.ibindtodevice && so._setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, srv.ibindtodevice, strlen(srv.ibindtodevice) + 1)) { if(srv.ibindtodevice && so._setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, srv.ibindtodevice, strlen(srv.ibindtodevice) + 1)) {
dolog(&defparam, "failed to bind device"); dolog(&defparam, "failed to bind device");
return -12; return -12;
} }
#elseif IP_BOUND_IF #elif defined IP_BOUND_IF
if(srv.ibindtodevice){ if(srv.ibindtodevice){
int idx; int idx;
idx = if_nametoindex(srv.ibindtodevice); idx = if_nametoindex(srv.ibindtodevice);
if(!idx || setsockopt(sockfd, IPPROTO_IP, IP_BOUND_IF, &idx, sizeof(idx))) { if(!idx || setsockopt(sock, IPPROTO_IP, IP_BOUND_IF, &idx, sizeof(idx))) {
dolog(&defparam, "failed to bind device"); dolog(&defparam, (unsigned char *)"failed to bind device");
return -12; return -12;
} }
#ifndef NOIPV6 #ifndef NOIPV6
if(so._setsockopt(param->remsock, IPPROTO_IPV6, IPV6_BOUND_IF, &idx, sizeof(idx))) { if(so._setsockopt(sock, IPPROTO_IPV6, IPV6_BOUND_IF, &idx, sizeof(idx))) {
dolog(&defparam, "failed to bind device"); dolog(&defparam, (unsigned char *)"failed to bind device");
return -12; return -12;
} }
#endif #endif

View File

@ -31,6 +31,9 @@ extern "C" {
#include <arpa/inet.h> #include <arpa/inet.h>
#include <netdb.h> #include <netdb.h>
#include <pthread.h> #include <pthread.h>
#ifdef IP_BOUND_IF
#include <net/if.h>
#endif
#define SASIZETYPE socklen_t #define SASIZETYPE socklen_t
#define SOCKET int #define SOCKET int
#define INVALID_SOCKET (-1) #define INVALID_SOCKET (-1)

View File

@ -28,7 +28,11 @@ void * tcppmchild(struct clientparam* param) {
} }
if(action != PASS) RETURN(19); 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: CLEANRET:
dolog(param, param->hostname); dolog(param, param->hostname);