diff --git a/.github/workflows/build-watcom.yml b/.github/workflows/build-watcom.yml deleted file mode 100644 index 2ba5013..0000000 --- a/.github/workflows/build-watcom.yml +++ /dev/null @@ -1,116 +0,0 @@ -name: Build Win32 3proxy-lite with Watcom - -on: - release: - types: [published] - workflow_dispatch: - -permissions: - contents: read - -jobs: - kind: - uses: ./.github/workflows/release-kind.yml - - ci: - # not for a release of the development branch - needs: kind - if: github.event_name != 'release' || needs.kind.outputs.devel != 'true' - permissions: - contents: write - id-token: write - attestations: write - name: "${{ matrix.target }}" - strategy: - matrix: - target: - - windows-2022 - runs-on: ${{ matrix.target }} - steps: - - uses: actions/checkout@v7 -# - name: configure -# run: ./configure - - name: Setup Open Watcom - uses: open-watcom/setup-watcom@v1 - - name: set date - run: | - $NOW = Get-Date -Format "yyMMddHHmmss" - echo "now: $NOW" - $RELEASE = Get-Content -Path "RELEASE" -Raw - echo "release: $RELEASE" - echo "RELEASE=$RELEASE" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - echo "VERSION=/D `"VERSION=\`"3proxy-$RELEASE\`"`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - echo "BUILDDATE=/D `"BUILDDATE=\`"$NOW\`"`"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - - name: make Watcom - shell: cmd - run: | - echo "volatile char VerSion[]=^"3APA3A-3proxy-Internal-Build: 3proxy-%RELEASE%-%NOW%\r\n^";" >>src/3proxy.c - nmake /F Makefile.watcom - if errorlevel 1 exit /b 1 - if not exist bin\3proxy.exe (echo bin\3proxy.exe was not built & exit /b 1) - - name: make dist dir - shell: cmd - run: | - mkdir dist - mkdir dist\3proxy - mkdir dist\3proxy\bin - mkdir dist\3proxy\cfg - mkdir dist\3proxy\cfg\sql - mkdir dist\3proxy\doc - mkdir dist\3proxy\doc\ru - mkdir dist\3proxy\doc\html - mkdir dist\3proxy\doc\html\plugins - mkdir dist\3proxy\doc\html\man5 - mkdir dist\3proxy\doc\html\man8 - mkdir dist\3proxy\doc\html\devel - copy bin\3proxy.exe dist\3proxy\bin\ - copy bin\*.dll dist\3proxy\bin\ - copy bin\3proxy_crypt.exe dist\3proxy\bin\ - copy cfg\*.* dist\3proxy\cfg\ - copy cfg\sql\*.* dist\3proxy\cfg\sql\ - copy doc\ru\*.* dist\3proxy\doc\ru\ - copy doc\html\*.* dist\3proxy\doc\html\ - copy doc\html\plugins\*.* dist\3proxy\doc\html\plugins\ - copy doc\html\man8\*.* dist\3proxy\doc\html\man8\ - copy doc\html\man5\*.* dist\3proxy\doc\html\man5\ - copy doc\html\devel\*.* dist\3proxy\doc\html\devel\ - copy copying dist\3proxy\ - copy authors dist\3proxy\ - copy README.md dist\3proxy\ - copy rus.3ps dist\3proxy\ - - name: Get artifact - uses: actions/upload-artifact@v7 - with: - name: "3proxy-${{ env.RELEASE }}-lite" - path: dist/ - - name: Create zip - if: github.event_name == 'release' - shell: pwsh - run: Compress-Archive -Path dist/* -DestinationPath 3proxy-${{ env.RELEASE }}-lite.zip - - name: Checksums and detached signature - if: github.event_name == 'release' - shell: bash - env: - GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - run: | - if [ -z "$GPG_PRIVATE_KEY" ]; then echo "GPG_PRIVATE_KEY is not set"; exit 1; fi - printf '%s' "$GPG_PRIVATE_KEY" | gpg --batch --import - KEYID=$(gpg --list-secret-keys --with-colons | awk -F: '/^sec:/{print $5; exit}') - sha256sum *.zip > SHA256SUMS-win-lite - gpg --batch --yes --pinentry-mode loopback --passphrase "$GPG_PASSPHRASE" \ - -u "$KEYID" --armor --detach-sign SHA256SUMS-win-lite - sha256sum -c SHA256SUMS-win-lite - - name: Attest build provenance - if: github.event_name == 'release' - uses: actions/attest-build-provenance@v4 - with: - subject-path: | - *.zip - - name: Upload to release - if: github.event_name == 'release' - shell: bash - env: - GH_TOKEN: ${{ github.token }} - TAG: ${{ github.event.release.tag_name }} - run: gh release upload "$TAG" *.zip SHA256SUMS-win-lite SHA256SUMS-win-lite.asc diff --git a/CMakeLists.txt b/CMakeLists.txt index 908bc55..c27933b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,8 +64,6 @@ option(3PROXY_USE_PCRE2 "Enable PCRE2 regex filtering" ON) option(3PROXY_USE_PAM "Enable PAM/PamAuth" ON) option(3PROXY_USE_ODBC "Enable ODBC support (Unix only, always ON on Windows)" OFF) option(3PROXY_USE_SPLICE "Build Linux splice() support, used by services given -s (Linux only)" ON) -option(3PROXY_USE_POLL "Use poll() instead of select() (Unix only)" ON) -option(3PROXY_USE_WSAPOLL "Use WSAPoll instead of select() (Windows only)" ON) option(3PROXY_USE_NETFILTER "Enable Linux netfilter support (Linux only)" ON) option(3PROXY_USE_TRANSPARENT "Build transparent proxying support (Linux and BSD only)" ON) option(3PROXY_USE_UNIX_SOCKETS "Enable Unix domain socket support (Unix only)" ON) @@ -158,16 +156,6 @@ if(WIN32) # Clang or GCC on Windows (MinGW-like) add_compile_definitions(WITH_STD_MALLOC) add_compile_options(-fno-strict-aliasing) - - elseif(WATCOM) - # OpenWatcom-specific flags - add_compile_definitions( - WATCOM - MSVC - NOIPV6 - NODEBUG - NORADIUS - ) endif() # Windows libraries @@ -289,23 +277,6 @@ if(NOT 3PROXY_USE_UNIX_SOCKETS) add_compile_definitions(NO_UN) endif() -# Common definitions -if(WIN32) - # Windows: use WSAPOLL - if(3PROXY_USE_WSAPOLL) - add_compile_definitions(WITH_WSAPOLL) - else() - add_compile_definitions(FD_SETSIZE=4096) - endif() -else() - # Unix: use poll - if(3PROXY_USE_POLL) - add_compile_definitions(WITH_POLL) - else() - add_compile_definitions(FD_SETSIZE=4096) - endif() -endif() - # Find dependencies # TLS/SSL backend: prefer wolfSSL when detected, fall back to OpenSSL. @@ -1004,7 +975,6 @@ message(STATUS " USE_PCRE2: ${3PROXY_USE_PCRE2}") message(STATUS " TRANSPARENT: ${3PROXY_TRANSPARENT_BUILT}") message(STATUS " USE_PAM: ${3PROXY_USE_PAM}") message(STATUS " USE_ODBC: ${3PROXY_USE_ODBC}") -message(STATUS " USE_POLL: ${3PROXY_USE_POLL}") if(CMAKE_SYSTEM_NAME STREQUAL "Linux") message(STATUS " USE_SPLICE: ${3PROXY_USE_SPLICE}") message(STATUS " USE_NETFILTER: ${3PROXY_USE_NETFILTER}") @@ -1012,9 +982,6 @@ endif() if(NOT WIN32 AND NOT APPLE) message(STATUS " STATIC_LINK: ${3PROXY_STATIC_LINK}") endif() -if(WIN32) - message(STATUS " USE_WSAPOLL: ${3PROXY_USE_WSAPOLL}") -endif() message(STATUS "") message(STATUS " Libraries found:") message(STATUS " wolfSSL: ${WOLFSSL_FOUND}") diff --git a/Makefile.FreeBSD b/Makefile.FreeBSD index abbb24b..5a74cca 100644 --- a/Makefile.FreeBSD +++ b/Makefile.FreeBSD @@ -11,7 +11,7 @@ MANDIR ?= /usr/share/man CC ?= cc CFLAGS ?= -O3 -flto -CFLAGS += -c -fno-strict-aliasing -DFD_SETSIZE=4096 -DWITH_POLL -DWITH_UN +CFLAGS += -c -fno-strict-aliasing -DWITH_UN COUT = -o LN ?= ${CC} LDFLAGS ?= -O3 -flto diff --git a/Makefile.Linux b/Makefile.Linux index ba7cb12..5cb5af5 100644 --- a/Makefile.Linux +++ b/Makefile.Linux @@ -14,7 +14,7 @@ CRYPT_PREFIX ?= $(PREFIX) CC ?= gcc CFLAGS ?= -O3 -flto -CFLAGS += -fno-strict-aliasing -c -pthread -DWITHSPLICE -D_GNU_SOURCE -DGETHOSTBYNAME_R -D_THREAD_SAFE -D_REENTRANT -DFD_SETSIZE=4096 -DWITH_POLL -DWITH_NETFILTER -D WITH_UN +CFLAGS += -fno-strict-aliasing -c -pthread -DWITHSPLICE -D_GNU_SOURCE -DGETHOSTBYNAME_R -D_THREAD_SAFE -D_REENTRANT -DWITH_NETFILTER -D WITH_UN COUT = -o LN ?= ${CC} DCFLAGS ?= -fPIC diff --git a/Makefile.Solaris b/Makefile.Solaris index 8595400..36b0f70 100644 --- a/Makefile.Solaris +++ b/Makefile.Solaris @@ -9,7 +9,7 @@ BUILDDIR = ../bin/ PREFIX ?= 3proxy_ CRYPT_PREFIX ?= $(PREFIX) CC ?= cc -CFLAGS = -xO3 -c -D_SOLARIS -D_THREAD_SAFE -DGETHOSTBYNAME_R -D_REENTRANT -DFD_SETSIZE=4096 -DWITH_POLL +CFLAGS = -xO3 -c -D_SOLARIS -D_THREAD_SAFE -DGETHOSTBYNAME_R -D_REENTRANT COUT = -o ./ LN = $(CC) LDFLAGS = -xO3 diff --git a/Makefile.msvc b/Makefile.msvc index a948e0c..3529aec 100644 --- a/Makefile.msvc +++ b/Makefile.msvc @@ -18,7 +18,7 @@ SSL_LIBS = wolfssl.lib SSL_DEFS = /D "WITH_SSL" SSL_LIBS = libcrypto.lib libssl.lib !ENDIF -CFLAGS = /D "WITH_HTTPSRV" /nologo /MT /W3 /Ox /GS /EHs- /GA /GF /D "MSVC" /D "WITH_WSAPOLL" /D "NDEBUG" /D "WIN32" $(SSL_DEFS) /D "WITH_PCRE" /D "WITH_ODBC" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /Fp"proxy.pch" /FD /c $(BUILDDATE) $(VERSION) +CFLAGS = /D "WITH_HTTPSRV" /nologo /MT /W3 /Ox /GS /EHs- /GA /GF /D "MSVC" /D "NDEBUG" /D "WIN32" $(SSL_DEFS) /D "WITH_PCRE" /D "WITH_ODBC" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /Fp"proxy.pch" /FD /c $(BUILDDATE) $(VERSION) COUT = /Fo LN = link LDFLAGS = /nologo /subsystem:console /incremental:no diff --git a/Makefile.unix b/Makefile.unix index a04b113..4cfff3f 100644 --- a/Makefile.unix +++ b/Makefile.unix @@ -13,7 +13,7 @@ CC ?= gcc # you may need -L/usr/pkg/lib for older NetBSD versions CFLAGS ?= -O3 -flto -CFLAGS += -fno-strict-aliasing -c -pthread -D_THREAD_SAFE -D_REENTRANT -DFD_SETSIZE=4096 -DWITH_POLL -DWITH_UN +CFLAGS += -fno-strict-aliasing -c -pthread -D_THREAD_SAFE -D_REENTRANT -DWITH_UN COUT = -o LN ?= $(CC) LDFLAGS ?= -O3 -flto diff --git a/Makefile.watcom b/Makefile.watcom deleted file mode 100644 index dbf0752..0000000 --- a/Makefile.watcom +++ /dev/null @@ -1,66 +0,0 @@ -# -# 3 proxy Makefile for Open Watcom 2 -# -# -# Add /DSAFESQL to CFLAGS if you are using poorely written/tested ODBC driver - -BUILDDIR = ../bin/ -PREFIX = 3proxy_ -CRYPT_PREFIX = 3proxy_ -CC = cl -CFLAGS = /D "WITH_HTTPSRV" /nologo /Ox /MT /D "NOIPV6" /D "NO_UN" /D "NODEBUG" /D "NORADIUS" /D"WATCOM" /D "MSVC" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /D "PRId64=\"I64d\"" /D "PRIu64=\"I64u\"" /D "SCNu64=\"I64u\"" /D "SCNx64=\"I64x\"" /D "SCNd64=\"I64d\"" /D "PRIx64=\"I64x\"" /c $(VERSION) $(BUILDDATE) -COUT = /Fo -LN = link -LDFLAGS = /nologo /subsystem:console /incremental:no -DLFLAGS = /DLL -DLSUFFICS = .dll -LIBS = ws2_32.lib mswsock.lib advapi32.lib user32.lib kernel32.lib -LIBSPREFIX = -LIBSSUFFIX = .lib -LIBEXT = .lib -LNOUT = /out: -EXESUFFICS = .exe -OBJSUFFICS = .obj -HTTPSRV_OBJS = srvhttpsrv$(OBJSUFFICS) srvwebadmin$(OBJSUFFICS) -DEFINEOPTION = /D -COMPFILES = *.pch *.idb *.err -REMOVECOMMAND = del 2>NUL >NUL -TYPECOMMAND = type -COMPATLIBS = -MAKEFILE = Makefile.watcom -PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin -VERFILE = $(VERFILE) -VERSION = $(VERSION) -VERSIONDEP = 3proxy.res $(VERSIONDEP) -BUILDDATE = $(BUILDDATE) - -include Makefile.inc - -3proxy.res: - rc 3proxy.rc - -allplugins: - copy Makefile plugins\utf8tocp1251 - copy Makefile.var plugins\utf8tocp1251 - cd plugins\utf8tocp1251 - nmake - del *.obj *.idb - cd ../../ - copy Makefile plugins\WindowsAuthentication - copy Makefile.var plugins\WindowsAuthentication - cd plugins\WindowsAuthentication - nmake - del *.obj *.idb - cd ../../ - copy Makefile plugins\TrafficPlugin - copy Makefile.var plugins\TrafficPlugin - cd plugins\TrafficPlugin - nmake - del *.obj *.idb - cd ../../ - copy Makefile plugins\StringsPlugin - copy Makefile.var plugins\StringsPlugin - cd plugins\StringsPlugin - nmake - del *.obj *.idb - cd ../../ diff --git a/Makefile.win b/Makefile.win index 7ad9197..ec80f21 100644 --- a/Makefile.win +++ b/Makefile.win @@ -10,7 +10,7 @@ PREFIX ?= 3proxy_ CRYPT_PREFIX ?= $(PREFIX) CC ?= gcc CFLAGS ?= -O3 -flto -CFLAGS += -fno-strict-aliasing -c -mthreads -DWITH_WSAPOLL -DWITH_ODBC +CFLAGS += -fno-strict-aliasing -c -mthreads -DWITH_ODBC COUT = -o LN ?= $(CC) LDFLAGS ?= -O3 -flto diff --git a/README.md b/README.md index 6866e41..36475e8 100644 --- a/README.md +++ b/README.md @@ -359,7 +359,6 @@ sudo launchctl unload /Library/LaunchDaemons/org.3proxy.3proxy.plist ### 7. Compilation - MSVC (static) -- OpenWatcom (static) - Intel Windows Compiler (msvcrt.dll) - Windows/gcc (msvcrt.dll) - Cygwin/gcc (cygwin.dll) @@ -368,7 +367,6 @@ sudo launchctl unload /Library/LaunchDaemons/org.3proxy.3proxy.plist - Solaris - Mac OS X, iPhone OS - Linux and derived systems -- Lite version for Windows 95/98/NT/2000/XP/2003 - 32 bit and 64 bit versions for Windows Vista and above, Windows 2008 server and above ## Executables diff --git a/src/auth.c b/src/auth.c index 9bdf8e9..0c43544 100644 --- a/src/auth.c +++ b/src/auth.c @@ -87,9 +87,7 @@ int cacheauth(struct clientparam * param){ ((type & 4) && !*param->password) || ( (type & 1) && *SAFAMILY(¶m->sincr) != AF_INET -#ifndef NOIPV6 && *SAFAMILY(¶m->sincr) != AF_INET6 -#endif ) || (!hashresolv(&auth_table, param, &ac, &ttl))) { return 4; } @@ -128,18 +126,14 @@ int doauth(struct clientparam * param){ strncpy((char *)ac.username, (char *)param->username, 64); ac.username[63] = 0; if(*SAFAMILY(¶m->sincr) == AF_INET -#ifndef NOIPV6 || *SAFAMILY(¶m->sincr) == AF_INET6 -#endif ) { ac.sincr_family = *SAFAMILY(¶m->sincr); memcpy(ac.sincr_addr, SAADDR(¶m->sincr), SAADDRLEN(¶m->sincr)); } if(*SAFAMILY(¶m->sinsl) == AF_INET -#ifndef NOIPV6 || *SAFAMILY(¶m->sinsl) == AF_INET6 -#endif ) { ac.sinsl_family = *SAFAMILY(¶m->sinsl); memcpy(ac.sinsl_addr, SAADDR(¶m->sinsl), SAADDRLEN(¶m->sinsl)); diff --git a/src/authradius.c b/src/authradius.c index e62a4bc..e3c30b0 100644 --- a/src/authradius.c +++ b/src/authradius.c @@ -526,15 +526,9 @@ int radsend(struct clientparam * param, int auth, int stop){ saremote = auth?param->srv->config->radiuslist[loop].authaddr : param->srv->config->radiuslist[loop].logaddr; -#ifdef NOIPV6 - if(*SAFAMILY(&saremote)!= AF_INET) { - continue; - } -#else if(*SAFAMILY(&saremote)!= AF_INET && *SAFAMILY(&saremote)!= AF_INET6){ continue; } -#endif /* if(auth) { diff --git a/src/common.c b/src/common.c index 9456a8f..7af4ac4 100644 --- a/src/common.c +++ b/src/common.c @@ -16,16 +16,11 @@ int socks5_setaddr(int family, int atyp, const unsigned char *addr, PROXYSOCKADD memset(sa, 0, sizeof(*sa)); if(atyp == 4){ -#ifdef NOIPV6 - return 1; -#else if(family == 4) return 1; len = 16; *SAFAMILY(sa) = AF_INET6; memcpy(SAADDR(sa), addr, 16); -#endif } -#ifndef NOIPV6 else if(family == 6){ unsigned char prefix[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255}; @@ -33,7 +28,6 @@ int socks5_setaddr(int family, int atyp, const unsigned char *addr, PROXYSOCKADD memcpy(SAADDR(sa), prefix, 12); memcpy(12 + (unsigned char *)SAADDR(sa), addr, 4); } -#endif else { *SAFAMILY(sa) = AF_INET; memcpy(SAADDR(sa), addr, 4); @@ -104,14 +98,9 @@ char * copyright = COPYRIGHT; # define MYRAND_GETRANDOM 1 # include #elif defined(_WIN32) -# if defined(__WATCOMC__) -# define MYRAND_CRYPTGENRANDOM 1 -# include -# else # define MYRAND_BCRYPTGENRANDOM 1 # include # pragma comment(lib, "bcrypt.lib") -# endif #else # define MYRAND_FALLBACK 1 #endif @@ -171,21 +160,17 @@ int myinet_ntop(int af, void *src, char *dst, socklen_t size){ return (int)strlen(dst); } #endif -#ifndef NOIPV6 if(af != AF_INET6){ -#endif unsigned u = ntohl(((struct in_addr *)src)->s_addr); return sprintf(dst, "%u.%u.%u.%u", ((u&0xFF000000)>>24), ((u&0x00FF0000)>>16), ((u&0x0000FF00)>>8), ((u&0x000000FF))); -#ifndef NOIPV6 } *dst = 0; inet_ntop(af, src, dst, size); return (int)strlen(dst); -#endif } char *rotations[] = { @@ -286,50 +271,6 @@ uint32_t myrand(void){ #endif } -#ifndef WITH_POLL -#ifndef WITH_WSAPOLL -int -#ifdef _WIN32 - WINAPI -#endif - - mypoll(struct mypollfd *fds, unsigned int nfds, int timeout){ - fd_set readfd; - fd_set writefd; - fd_set oobfd; - struct timeval tv; - unsigned i; - int num; - SOCKET maxfd = 0; - - tv.tv_sec = timeout/1000; - tv.tv_usec = (timeout%1000)*1000; - FD_ZERO(&readfd); - FD_ZERO(&writefd); - FD_ZERO(&oobfd); - for(i=0; i= FD_SETSIZE) continue; -#endif - if((fds[i].events&POLLIN))FD_SET(fds[i].fd, &readfd); - if((fds[i].events&POLLOUT))FD_SET(fds[i].fd, &writefd); - if((fds[i].events&POLLPRI))FD_SET(fds[i].fd, &oobfd); - fds[i].revents = 0; - if(fds[i].fd > maxfd) maxfd = fds[i].fd; - } - if((num = select(((int)(maxfd))+1, &readfd, &writefd, &oobfd, &tv)) < 1) return num; - for(i=0; i= FD_SETSIZE) continue; -#endif - if(FD_ISSET(fds[i].fd, &readfd)) fds[i].revents |= POLLIN; - if(FD_ISSET(fds[i].fd, &writefd)) fds[i].revents |= POLLOUT; - if(FD_ISSET(fds[i].fd, &oobfd)) fds[i].revents |= POLLPRI; - } - return num; -} -#endif -#endif /* Set while clients are served by fibers on event loops, which keep their @@ -567,12 +508,8 @@ int sockpoll(struct sockfuncs *sf, void *state, struct pollfd *fds, unsigned nfd if(!(res = sf->_prepoll(state, fds, nfds))){ /* a fiber waits in its loop */ if(!fiberpollfunc || (res = fiberpollfunc(fds, nfds, timeout)) == -2){ -#ifndef WITH_POLL -#ifndef WITH_WSAPOLL - res = mypoll(fds, nfds, timeout); -#else +#ifdef _WIN32 res = WSAPoll(fds, nfds, timeout); -#endif #else res = poll(fds, (nfds_t)nfds, timeout); #endif @@ -822,12 +759,10 @@ int bindtodevice(struct sockfuncs *sf, void *state, SOCKET sock, const char *dev idx = if_nametoindex(device); if(!idx || (family == AF_INET && sf->_setsockopt(state, sock, IPPROTO_IP, IP_BOUND_IF, &idx, sizeof(idx)))) return 1; -#ifndef NOIPV6 #ifndef IPV6_BOUND_IF #define IPV6_BOUND_IF 125 #endif if(family == AF_INET6 && sf->_setsockopt(state, sock, IPPROTO_IPV6, IPV6_BOUND_IF, &idx, sizeof(idx))) return 1; -#endif } #endif return 0; @@ -889,10 +824,8 @@ int doconnect(struct clientparam * param){ if(*SAFAMILY(¶m->sinsr) == AF_UNIX) param->sinsl = param->sinsr; else #endif -#ifndef NOIPV6 if(*SAFAMILY(¶m->sinsr) == AF_INET6) param->sinsl = param->srv->extsa6; else -#endif param->sinsl = param->srv->extsa; } *SAPORT(¶m->sinsl) = 0; @@ -1086,62 +1019,6 @@ struct hostent * my_gethostbyname(char *name, char *buf, struct hostent *hp){ #endif #endif -#ifdef NOIPV6 -static uint32_t getipm(int mode, unsigned char *name){ - uint32_t retval; - int i; - int ndots = 0; - struct hostent *hp=NULL; - RESOLVFUNC tmpresolv; - -#ifdef GETHOSTBYNAME_R - struct hostent he; - char ghbuf[1024]; -#define gethostbyname(NAME) my_gethostbyname(NAME, ghbuf, &he) -#endif - - if(strlen((char *)name)>255)name[255] = 0; - for(i=0; name[i]; i++){ - if(name[i] == '.'){ - if(++ndots > 3) break; - continue; - } - if(name[i] <'0' || name[i] >'9') break; - } - if(!name[i] && ndots == 3){ - if(scanaddr(name, &retval, NULL) == 4){ - return retval; - } - } - if((tmpresolv=moderesolver(mode))){ - return (*tmpresolv)(AF_INET, name, (unsigned char *)&retval)?retval:0; - } -#ifndef NOSTDRESOLVE -#if !defined(_WIN32) && !defined(GETHOSTBYNAME_R) - if(!ghbn_init){ - _3proxy_mutex_init(&gethostbyname_mutex); - ghbn_init++; - } - _3proxy_mutex_lock(&gethostbyname_mutex); -#endif - hp=gethostbyname((char *)name); - retval = hp?*(uint32_t *)hp->h_addr:0; -#if !defined(_WIN32) && !defined(GETHOSTBYNAME_R) - _3proxy_mutex_unlock(&gethostbyname_mutex); -#endif -#ifdef GETHOSTBYNAME_R -#undef gethostbyname -#endif -#else - retval=0; -#endif - return retval; -} - -uint32_t getip(unsigned char *name){ - return getipm(resolvmode, name); -} -#endif int afdetect(unsigned char *name){ int ndots=0, ncols=0, nhex=0; @@ -1176,7 +1053,7 @@ int afdetect(unsigned char *name){ } /* A name resolved the way a mode says: a service's names with its own */ -#if !defined(NOIPV6) && !defined(NOSTDRESOLVE) +#ifndef NOSTDRESOLVE /* What the C library's resolver is asked, and its answer */ struct stdresolve { unsigned char *name; @@ -1213,18 +1090,12 @@ static void stdresolve46(void *arg){ #endif uint32_t getip46m(int mode, int family, unsigned char *name, struct sockaddr *sa){ -#ifndef NOIPV6 int detect; RESOLVFUNC tmpresolv; if(!sa) return 0; if(!family) { family = 4; -#else - ((struct sockaddr_in *)sa)->sin_family = AF_INET; - return (((struct sockaddr_in *)sa)->sin_addr.s_addr = getipm(mode, name))? AF_INET:0; -#endif -#ifndef NOIPV6 } detect = afdetect(name); @@ -1258,7 +1129,6 @@ uint32_t getip46m(int mode, int family, unsigned char *name, struct sockaddr *s } #endif return 0; -#endif } uint32_t getip46(int family, unsigned char *name, struct sockaddr *sa){ diff --git a/src/conf.c b/src/conf.c index ecb3854..7127826 100644 --- a/src/conf.c +++ b/src/conf.c @@ -235,11 +235,6 @@ static int h_proxy(int argc, unsigned char ** argv){ childdef.service = S_PROXY; #ifdef WITH_FTP childdef.helpmessage = " -Xftp - fetch ftp:// URLs\n"; -#endif -#ifdef NOIPV6 - if(noresolver()){ - fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, proxy may run very slow\n", linenum); - } #endif } else if(!strcmp((char *)argv[0], "pop3p")) { @@ -275,11 +270,6 @@ static int h_proxy(int argc, unsigned char ** argv){ childdef.port = 1080; childdef.isudp = 0; childdef.service = S_SOCKS; -#ifdef NOIPV6 - if(noresolver()){ - fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, socks may run very slow\n", linenum); - } -#endif } else if(!strcmp((char *)argv[0], "auto")) { childdef.pf = autochild; @@ -343,11 +333,9 @@ static int h_proxy(int argc, unsigned char ** argv){ childdef.isudp = 1; childdef.service = S_DNSPR; childdef.helpmessage = " -s - simple DNS forwarding - do not use 3proxy resolver / name cache\n -Fip - fake: answer all A queries with this IP\n"; -#ifndef NOIPV6 if(noresolver() || conf->resolvmode == RESOLVE_FAKE){ fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, dnspr will not work as expected\n", linenum); } -#endif } return start_proxy_thread(&ch); } @@ -365,17 +353,12 @@ static int h_internal(int argc, unsigned char ** argv){ static int h_external(int argc, unsigned char ** argv){ int res; -#ifndef NOIPV6 PROXYSOCKADDRTYPE sa6; memset(&sa6, 0, sizeof(sa6)); res = getip46(46, argv[1], (struct sockaddr *)&sa6); if(!res) return 1; if (*SAFAMILY(&sa6)==AF_INET) conf->extsa = sa6; else conf->extsa6 = sa6; -#else - res = getip46(46, argv[1], (struct sockaddr *)&conf->extsa); - if(!res) return 1; -#endif return 0; } diff --git a/src/confinit.h b/src/confinit.h index af05924..1ee45c7 100644 --- a/src/confinit.h +++ b/src/confinit.h @@ -50,14 +50,9 @@ .logtype = NONE, .countertype = NONE, .counterfile = NULL, -#ifndef NOIPV6 .intsa = {AF_INET}, .extsa6 = {AF_INET6}, .extsa = {AF_INET}, -#else - .intsa = {AF_INET}, - .extsa = {AF_INET}, -#endif .pwl = NULL, .authenticate = NULL, .authfunc = doconnect, diff --git a/src/datatypes.c b/src/datatypes.c index 7da3702..8464a5e 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -62,16 +62,12 @@ static void pr_ip(struct node *node, CBFUNC cbf, void*cb){ } static void pr_sa(struct node *node, CBFUNC cbf, void*cb){ -#ifdef NOIPV6 - if(node->value)pr_ip(node, cbf, cb); -#else char buf[64]; buf[0] = '['; buf[1] = 0; inet_ntop(*SAFAMILY(node->value), SAADDR(node->value), buf+1, sizeof(buf)-10); sprintf(buf + strlen(buf), "]:%hu", (unsigned short)*SAPORT(node->value)); if(node->value)(*cbf)(cb, buf, strlen(buf)); -#endif } static void pr_wdays(struct node *node, CBFUNC cbf, void*cb){ @@ -620,11 +616,9 @@ static void * ef_server_extsa(struct node * node){ return &((struct srvparam *)node->value) -> extsa; } -#ifndef NOIPV6 static void * ef_server_extsa6(struct node * node){ return &((struct srvparam *)node->value) -> extsa6; } -#endif static void * ef_server_intNat(struct node * node){ return &((struct srvparam *)node->value) -> intNat; @@ -916,9 +910,7 @@ static struct property prop_server[] = { {"extsa", ef_server_extsa, TYPE_SA, "ip address of external interface"}, {"intnat", ef_server_intNat, TYPE_SA, "internal NAT address"}, {"extnat", ef_server_extNat, TYPE_SA, "external NAT address"}, -#ifndef NOIPV6 {"extsa6", ef_server_extsa6, TYPE_SA, "ipv6 address of external interface"}, -#endif {"child", ef_server_child, TYPE_CLIENT, "connected clients"}, {"next", ef_server_next, TYPE_SERVER, "next"} }; diff --git a/src/dnspr.c b/src/dnspr.c index 418655b..32f556c 100644 --- a/src/dnspr.c +++ b/src/dnspr.c @@ -253,12 +253,10 @@ static int dnsprfirst(struct udploop *u, struct udpsession *ss, unsigned char *q ip = 1; *(uint32_t *)q->addr = param->srv->fakeip; } -#ifndef NOIPV6 else if(q->type==0x1c && *(uint32_t *)param->srv->fakeip6){ ip = 1; memcpy(q->addr, param->srv->fakeip6, 16); } -#endif /* the name cache only: what it does not have the name servers are asked, without waiting here */ else if((q->type==0x01 || q->type==0x1c) && !param->srv->s_option){ diff --git a/src/fiber.h b/src/fiber.h index fadf88d..c9747e3 100644 --- a/src/fiber.h +++ b/src/fiber.h @@ -17,7 +17,7 @@ #define _FIBER_H #if defined _WIN32 -#if !defined __WATCOMC__ && !defined _WINCE +#ifndef _WINCE #define FIBER_WINDOWS #endif #elif defined __x86_64__ && defined __LP64__ diff --git a/src/httpsrv.c b/src/httpsrv.c index 3e35b0e..17d5ab2 100644 --- a/src/httpsrv.c +++ b/src/httpsrv.c @@ -480,19 +480,9 @@ static int filemeta(const char *path, struct filemeta *m) { #ifdef _WIN32 wchar_t wide[HTTPSRV_LINE]; -#ifdef __WATCOMC__ - /* Open Watcom has the 64-bit stat under its older name */ -#ifndef _S_IFREG -#define _S_IFREG S_IFREG -#endif - struct _stati64 st; - - if(widepath(path, wide, HTTPSRV_LINE) || _wstati64(wide, &st)) return 1; -#else struct _stat64 st; if(widepath(path, wide, HTTPSRV_LINE) || _wstat64(wide, &st)) return 1; -#endif m->size = (uint64_t)st.st_size; m->mtime = st.st_mtime; m->isreg = (st.st_mode & _S_IFREG) != 0; diff --git a/src/libs/blake2.h b/src/libs/blake2.h index a51262c..8d035ac 100644 --- a/src/libs/blake2.h +++ b/src/libs/blake2.h @@ -18,9 +18,7 @@ #include #include -#if defined(WATCOM) -#define BLAKE2_PACKED(x) _Packed x -#elif defined(_MSC_VER) +#if defined(_MSC_VER) #define BLAKE2_PACKED(x) __pragma(pack(push, 1)) x __pragma(pack(pop)) #else #define BLAKE2_PACKED(x) x __attribute__((packed)) diff --git a/src/loop.c b/src/loop.c index d561ce2..575ce5a 100644 --- a/src/loop.c +++ b/src/loop.c @@ -969,12 +969,10 @@ int looponce(struct loop *l, int maxwait){ { unsigned j; -#if defined WITH_POLL - n = poll(l->pfds, (nfds_t)l->npfds, timeo); -#elif defined WITH_WSAPOLL +#ifdef _WIN32 n = WSAPoll(l->pfds, l->npfds, timeo); #else - n = mypoll(l->pfds, l->npfds, timeo); + n = poll(l->pfds, (nfds_t)l->npfds, timeo); #endif if(n > 0 && l->pfds[0].revents) woken = 1; for(j = 1; n > 0 && j < l->npfds && l->nready < LOOPREADY; j++) diff --git a/src/loop.h b/src/loop.h index e32428b..8f530a0 100644 --- a/src/loop.h +++ b/src/loop.h @@ -19,7 +19,7 @@ #define LOOP_EPOLL #elif !defined LOOP_POLL && (defined __APPLE__ || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ || defined __DragonFly__) #define LOOP_KQUEUE -#elif !defined LOOP_POLL && defined _WIN32 && !defined __WATCOMC__ && !defined _WINCE +#elif !defined LOOP_POLL && defined _WIN32 && !defined _WINCE #define LOOP_AFD #elif !defined LOOP_POLL #define LOOP_POLL diff --git a/src/mainconf.c b/src/mainconf.c index c2d3732..390b95a 100644 --- a/src/mainconf.c +++ b/src/mainconf.c @@ -369,7 +369,6 @@ static int srvprepare(struct srvstart *s, int argc, char **argv){ break; case 'e': { -#ifndef NOIPV6 PROXYSOCKADDRTYPE sa6; memset(&sa6, 0, sizeof(sa6)); error = !getip46(46, (unsigned char *)argv[i]+2, (struct sockaddr *)&sa6); @@ -377,9 +376,6 @@ static int srvprepare(struct srvstart *s, int argc, char **argv){ if (*SAFAMILY(&sa6)==AF_INET) srv->extsa = sa6; else srv->extsa6 = sa6; } -#else - error = !getip46(46, (unsigned char *)argv[i]+2, (struct sockaddr *)&srv->extsa); -#endif } break; case 'N': @@ -467,9 +463,7 @@ static int srvprepare(struct srvstart *s, int argc, char **argv){ memset(&fsa, 0, sizeof(fsa)); if(!getip46(46, (unsigned char *)argv[i]+2, (struct sockaddr *)&fsa)) error = 1; else if(*SAFAMILY(&fsa) == AF_INET) srv->fakeip = *(uint32_t *)SAADDR(&fsa); -#ifndef NOIPV6 else if(*SAFAMILY(&fsa) == AF_INET6) memcpy(srv->fakeip6, SAADDR(&fsa), 16); -#endif else error = 1; } break; @@ -632,9 +626,7 @@ static int srvprepare(struct srvstart *s, int argc, char **argv){ if(!*SAFAMILY(&srv->intsa)) *SAFAMILY(&srv->intsa) = AF_INET; if(!*SAPORT(&srv->intsa)) *SAPORT(&srv->intsa) = htons(childdef.port); *SAFAMILY(&srv->extsa) = AF_INET; -#ifndef NOIPV6 *SAFAMILY(&srv->extsa6) = AF_INET6; -#endif if(hostname)parsehostname(hostname, defparam, childdef.port); #ifdef __linux__ @@ -788,9 +780,7 @@ void srvinit(struct srvparam * srv, struct clientparam *param){ (void)_3proxy_sem_init_timed(srv->childslots, srv->maxchild, srv->maxchild); srv->intsa = conf->intsa; srv->extsa = conf->extsa; -#ifndef NOIPV6 srv->extsa6 = conf->extsa6; -#endif srv->so = so; srv->authcachetime = conf->authcachetime; srv->authcachetype = conf->authcachetype; @@ -817,10 +807,8 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){ *SAFAMILY(¶m->sinsr) = AF_INET; *SAFAMILY(¶m->req) = AF_INET; param->sincr = param->sincl = srv->intsa; -#ifndef NOIPV6 if (srv->family == 6 || srv->family == 64) param->sinsr = srv->extsa6; else -#endif param->sinsr = srv->extsa; } diff --git a/src/plugins/FilePlugin/FilePlugin.c b/src/plugins/FilePlugin/FilePlugin.c index 7562ace..df7cd32 100644 --- a/src/plugins/FilePlugin/FilePlugin.c +++ b/src/plugins/FilePlugin/FilePlugin.c @@ -905,11 +905,6 @@ static struct commands file_commandhandlers[] = { static int file_loaded=0; -#ifdef WATCOM -#pragma aux file_plugin "*" parm caller [ ] value struct float struct routine [eax] modify [eax ecx edx] -#undef PLUGINCALL -#define PLUGINCALL -#endif PLUGINAPI int PLUGINCALL file_plugin (struct pluginlink * pluginlink, int argc, char** argv){ diff --git a/src/plugins/LdapPlugin/ldapauth.c b/src/plugins/LdapPlugin/ldapauth.c index 3d3fc5a..e3a4d2c 100644 --- a/src/plugins/LdapPlugin/ldapauth.c +++ b/src/plugins/LdapPlugin/ldapauth.c @@ -506,11 +506,6 @@ int h_dircount(int argc, unsigned char ** argv) /*------------------------------- MAIN -------------------------------------- start plugin init */ -#ifdef WATCOM -#pragma aux start "*" parm caller [ ] value struct float struct routine [eax] modify [eax ecx edx] -#undef PLUGINCALL -#define PLUGINCALL -#endif PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink, int argc, char** argv) diff --git a/src/plugins/PamAuth/pamauth.c b/src/plugins/PamAuth/pamauth.c index 5b4741a..5369d8f 100644 --- a/src/plugins/PamAuth/pamauth.c +++ b/src/plugins/PamAuth/pamauth.c @@ -116,11 +116,6 @@ static int pamfunc(struct clientparam *param) } -#ifdef WATCOM -#pragma aux start "*" parm caller [ ] value struct float struct routine [eax] modify [eax ecx edx] -#undef PLUGINCALL -#define PLUGINCALL -#endif /*------------------------------- MAIN -------------------------------------- start plugin init */ diff --git a/src/plugins/StringsPlugin/StringsPlugin.c b/src/plugins/StringsPlugin/StringsPlugin.c index 14d8507..d066df4 100644 --- a/src/plugins/StringsPlugin/StringsPlugin.c +++ b/src/plugins/StringsPlugin/StringsPlugin.c @@ -170,11 +170,6 @@ BOOL WINAPI DllMain( HINSTANCE hModule, #endif -#ifdef WATCOM -#pragma aux start "*" parm caller [ ] value struct float struct routine [eax] modify [eax ecx edx] -#undef PLUGINCALL -#define PLUGINCALL -#endif PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink, int argc, char** argv) diff --git a/src/plugins/TrafficPlugin/TrafficPlugin.c b/src/plugins/TrafficPlugin/TrafficPlugin.c index c8566ea..518a0a9 100644 --- a/src/plugins/TrafficPlugin/TrafficPlugin.c +++ b/src/plugins/TrafficPlugin/TrafficPlugin.c @@ -268,11 +268,6 @@ BOOL WINAPI DllMain( HINSTANCE hModule, #endif -#ifdef WATCOM -#pragma aux start "*" parm caller [ ] value struct float struct routine [eax] modify [eax ecx edx] -#undef PLUGINCALL -#define PLUGINCALL -#endif PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink, int argc, char** argv) { diff --git a/src/plugins/WindowsAuthentication/WindowsAuthentication.c b/src/plugins/WindowsAuthentication/WindowsAuthentication.c index c398c59..cb22b0b 100644 --- a/src/plugins/WindowsAuthentication/WindowsAuthentication.c +++ b/src/plugins/WindowsAuthentication/WindowsAuthentication.c @@ -57,11 +57,6 @@ extern "C" { return 7; } -#ifdef WATCOM -#pragma aux WindowsAuthentication "*" parm caller [ ] value struct float struct routine [eax] modify [eax ecx edx] -#undef PLUGINCALL -#define PLUGINCALL -#endif PLUGINAPI int PLUGINCALL WindowsAuthentication(struct pluginlink * pluginlink, int argc, char** argv){ char tmpbuf[4096]; diff --git a/src/plugins/utf8tocp1251/utf8tocp1251.c b/src/plugins/utf8tocp1251/utf8tocp1251.c index fd24f63..7c4c508 100644 --- a/src/plugins/utf8tocp1251/utf8tocp1251.c +++ b/src/plugins/utf8tocp1251/utf8tocp1251.c @@ -61,11 +61,6 @@ unsigned char * conv_utf8_to_cp1251(unsigned char *s){ } -#ifdef WATCOM -#pragma aux utf8tocp1251 "*" parm caller [ ] value struct float struct routine [eax] modify [eax ecx edx] -#undef PLUGINCALL -#define PLUGINCALL -#endif PLUGINAPI int PLUGINCALL utf8tocp1251(struct pluginlink * pluginlink, int argc, char** argv){ static int loaded = 0; diff --git a/src/proxy.h b/src/proxy.h index da6dfbf..2df5a7a 100644 --- a/src/proxy.h +++ b/src/proxy.h @@ -70,9 +70,6 @@ #define SHUT_WR SD_SEND #define SHUT_RD SD_RECEIVE #else -#ifndef FD_SETSIZE -#define FD_SETSIZE 4096 -#endif #include #include #include diff --git a/src/redirect.c b/src/redirect.c index 80053bc..9e04eb3 100644 --- a/src/redirect.c +++ b/src/redirect.c @@ -388,7 +388,6 @@ int handleredirect(struct clientparam * param, struct ace * acentry){ if(cur->type == R_EXTIP){ param->sinsl = cur->addr; if(SAISNULL(¶m->sinsl) && (*SAFAMILY(¶m->sincr) == AF_INET || *SAFAMILY(¶m->sincr) == AF_INET6))param->sinsl = param->sincr; -#ifndef NOIPV6 else if(cur->cidr && *SAFAMILY(¶m->sinsl) == AF_INET6){ uint16_t c; int i; @@ -403,7 +402,6 @@ int handleredirect(struct clientparam * param, struct ace * acentry){ } } } -#endif if(after)continue; return 0; } diff --git a/src/resolve.c b/src/resolve.c index 083626f..5f9470c 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -285,9 +285,7 @@ static int addns(struct nserver *ns, int n, const char *s){ if(n >= MAXNSERVERS) return n; memset(&sa, 0, sizeof(sa)); if(inet_pton(AF_INET, s, SAADDR(&sa)) > 0) *SAFAMILY(&sa) = AF_INET; -#ifndef NOIPV6 else if(inet_pton(AF_INET6, s, SAADDR(&sa)) > 0) *SAFAMILY(&sa) = AF_INET6; -#endif else return n; /* a link-local one with %scope is not */ *SAPORT(&sa) = htons(53); for(i = 0; i < n; i++) @@ -363,9 +361,7 @@ static int readsysns(struct nserver *ns){ RegCloseKey(k); } n = regifaces(ns, n, "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces", "NameServer", 1); -#ifndef NOIPV6 n = regifaces(ns, n, "SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters\\Interfaces", "NameServer", 0); -#endif n = regifaces(ns, n, "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces", "DhcpNameServer", 1); if(n < MAXNSERVERS && !RegOpenKeyExA(HKEY_LOCAL_MACHINE, tcpip, 0, KEY_READ, &k)){ if(regstr(k, "DhcpNameServer", buf, sizeof(buf))) n = addnslist(ns, n, buf); @@ -475,9 +471,7 @@ static void hostsimport(void){ memcpy(name, tok, l); name[l] = 0; if(inet_pton(AF_INET, name, addr) > 0) af = 4; -#ifndef NOIPV6 else if(inet_pton(AF_INET6, name, addr) > 0) af = 6; -#endif else continue; ht = (af == 6)? &hosts6_table : &hosts_table; /* its names */ @@ -532,9 +526,7 @@ static int sysdnsread(void){ void sysdnsinit(void){ _3proxy_mutex_init(&nservers_mutex); inithashtable(&hosts_table, 256, 256, 1 << 22); -#ifndef NOIPV6 inithashtable(&hosts6_table, 256, 256, 1 << 22); -#endif sysdnsread(); sysdns.checked = time(NULL); if(!sysdns.n) return; diff --git a/src/socks.c b/src/socks.c index 54e2f1b..f209422 100644 --- a/src/socks.c +++ b/src/socks.c @@ -117,10 +117,8 @@ void * sockschild(struct clientparam* param) { size = 4; switch(c) { -#ifndef NOIPV6 case 4: size = 16; -#endif case 1: for (i = 0; isrv->timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);} @@ -180,11 +178,7 @@ void * sockschild(struct clientparam* param) { case 2: case 3: -#ifndef NOIPV6 param->sinsl = *SAFAMILY(¶m->req)==AF_INET6? param->srv->extsa6 : param->srv->extsa; -#else - param->sinsl = param->srv->extsa; -#endif param->operation = command == 2?BIND:UDPASSOC; if(command == 2){ if ((param->remsock=nssocket(param->srv, ¶m->srv->so, param->sostate, NS_OUT, SASOCK(¶m->req), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {RETURN (11);} diff --git a/src/structures.h b/src/structures.h index b146e0a..e771dda 100644 --- a/src/structures.h +++ b/src/structures.h @@ -71,44 +71,10 @@ typedef struct _3proxy_sem_s { #define WEIGHTSCALE 1000000000u #define WEIGHTFUZZ 1000000u -#ifdef WITH_POLL -#include -#else -#ifdef WITH_WSAPOLL - -#define poll(A,B,C) WSAPoll(A,B,C) - -#else -struct mypollfd { - SOCKET fd; /* file descriptor */ - short events; /* events to look for */ - short revents; /* events returned */ -}; -#define pollfd mypollfd -int #ifdef _WIN32 - WINAPI -#endif - mypoll(struct mypollfd *fds, unsigned int nfds, int timeout); -#ifndef POLLIN -#define POLLIN 1 -#endif -#ifndef POLLOUT -#define POLLOUT 2 -#endif -#ifndef POLLPRI -#define POLLPRI 4 -#endif -#ifndef POLLERR -#define POLLERR 8 -#endif -#ifndef POLLHUP -#define POLLHUP 16 -#endif -#ifndef POLLNVAL -#define POLLNVAL 32 -#endif -#endif +#define poll(A,B,C) WSAPoll(A,B,C) +#else +#include #endif #ifdef WITH_UN @@ -174,30 +140,17 @@ int #define UN_SAISNULL(sa) #endif -#ifndef NOIPV6 #define SAPORT(sa) ( UN_SAPORT(sa) ((struct sockaddr_in *)sa)->sin_family == AF_INET6? &((struct sockaddr_in6 *)sa)->sin6_port : &((struct sockaddr_in *)sa)->sin_port) #define SAADDR(sa) ( UN_SAADDR(sa) ((struct sockaddr_in *)sa)->sin_family == AF_INET6? (unsigned char *)&((struct sockaddr_in6 *)sa)->sin6_addr : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr) #define SAADDRLEN(sa) ( UN_SAADDRLEN(sa) ((struct sockaddr_in *)sa)->sin_family == AF_INET6? 16:4) #define SASOCK(sa) ( UN_SASOCK(sa) ((struct sockaddr_in *)sa)->sin_family == AF_INET6? PF_INET6:PF_INET) #define SASIZE(sa) ( UN_SASIZE(sa) ((struct sockaddr_in *)sa)->sin_family == AF_INET6? sizeof(struct sockaddr_in6):sizeof(struct sockaddr_in)) #define SAISNULL(sa) ( UN_SAISNULL(sa) !memcmp(((struct sockaddr_in *)sa)->sin_family == AF_INET6? (unsigned char *)&((struct sockaddr_in6 *)sa)->sin6_addr : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr, NULLADDR, (((struct sockaddr_in *)sa)->sin_family == AF_INET6? 16:4))) -#else -#define SAPORT(sa) ( UN_SAPORT(sa) &((struct sockaddr_in *)sa)->sin_port) -#define SAADDR(sa) ( UN_SAADDR(sa) (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr) -#define SAADDRLEN(sa) ( UN_SAADDRLEN(sa) 4) -#define SASOCK(sa) ( UN_SASOCK(sa) PF_INET) -#define SASIZE(sa) ( UN_SASIZE(sa) sizeof(struct sockaddr_in)) -#define SAISNULL(sa) ( UN_SAISNULL(sa) ((struct sockaddr_in *)sa)->sin_addr.s_addr == 0) -#endif #ifdef WITH_UN #define PROXYSOCKADDRTYPE struct sockaddr_storage #else -#ifndef NOIPV6 #define PROXYSOCKADDRTYPE struct sockaddr_in6 -#else -#define PROXYSOCKADDRTYPE struct sockaddr_in -#endif #endif #define MAX_HASH_SIZE (64) @@ -777,9 +730,7 @@ struct srvparam { unsigned authcachetype, authcachetime; unsigned logdumpsrv, logdumpcli; PROXYSOCKADDRTYPE intsa, intNat, extNat; -#ifndef NOIPV6 PROXYSOCKADDRTYPE extsa6; -#endif PROXYSOCKADDRTYPE extsa; _3proxy_mutex_t counter_mutex; _3proxy_sem_t childslots; /* maxchild of them, one held by each child */ @@ -1017,9 +968,7 @@ struct extparam { ROTATION logtype, countertype; /* logtype: the rotation of the last log */ char * counterfile; PROXYSOCKADDRTYPE intsa; -#ifndef NOIPV6 PROXYSOCKADDRTYPE extsa6; -#endif PROXYSOCKADDRTYPE extsa; struct passwords *pwl; struct auth * authenticate; @@ -1120,13 +1069,8 @@ extern const struct hashtable pwl_template; struct authcache { unsigned char username[64]; -#ifndef NOIPV6 uint8_t sincr_addr[16]; uint8_t sinsl_addr[16]; -#else - uint8_t sincr_addr[4]; - uint8_t sinsl_addr[4]; -#endif uint16_t sincr_family; uint16_t sinsl_family; }; diff --git a/src/transparent.c b/src/transparent.c index c5bebdf..65d265a 100644 --- a/src/transparent.c +++ b/src/transparent.c @@ -62,14 +62,12 @@ static int transparent_pf(struct clientparam *param) memset(&nl, 0, sizeof(nl)); nl.proto = IPPROTO_TCP; nl.direction = PF_OUT; -#ifndef NOIPV6 if(*SAFAMILY(¶m->sincr) == AF_INET6){ nl.af = AF_INET6; memcpy(&nl.saddr.v6, SAADDR(¶m->sincr), 16); memcpy(&nl.daddr.v6, SAADDR(¶m->sincl), 16); } else -#endif { nl.af = AF_INET; memcpy(&nl.saddr.v4, SAADDR(¶m->sincr), 4); @@ -82,10 +80,8 @@ static int transparent_pf(struct clientparam *param) memset(¶m->req, 0, sizeof(param->req)); *SAFAMILY(¶m->req) = nl.af; -#ifndef NOIPV6 if(nl.af == AF_INET6) memcpy(SAADDR(¶m->req), &nl.rdaddr.v6, 16); else -#endif memcpy(SAADDR(¶m->req), &nl.rdaddr.v4, 4); *SAPORT(¶m->req) = nl.rdport; return 0; @@ -100,10 +96,8 @@ static int transparent_netfilter(struct clientparam *param) #ifdef SO_ORIGINAL_DST if(getsockopt(param->clisock, -#ifndef NOIPV6 #ifdef SOL_IPV6 *SAFAMILY(¶m->sincr) == AF_INET6?SOL_IPV6: -#endif #endif SOL_IP, SO_ORIGINAL_DST, (struct sockaddr *) ¶m->req, &len) || !memcmp((char *)SAADDR(¶m->req), "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", SAADDRLEN(¶m->req))){ diff --git a/src/udppm.c b/src/udppm.c index 8e2a43d..7d15e4b 100644 --- a/src/udppm.c +++ b/src/udppm.c @@ -44,11 +44,7 @@ static int udppmfirst(struct udploop *u, struct udpsession *ss, unsigned char *b int res; if(parsehostname((char *)param->srv->target, param, ntohs(param->srv->targetport))) return (param->res = 100); -#ifndef NOIPV6 param->sinsl = *SAFAMILY(¶m->req) == AF_INET6? param->srv->extsa6 : param->srv->extsa; -#else - param->sinsl = param->srv->extsa; -#endif *SAPORT(¶m->sinsl) = 0; param->sinsr = param->req; param->operation = UDPASSOC; diff --git a/src/udpsockmap.c b/src/udpsockmap.c index ae4dd11..6e1a405 100644 --- a/src/udpsockmap.c +++ b/src/udpsockmap.c @@ -141,11 +141,7 @@ static void udpreset(struct clientparam *param) param->redirected = 0; param->udp_nhops = 0; memset(param->udp_relay, 0, sizeof(param->udp_relay)); -#ifndef NOIPV6 param->sinsl = *SAFAMILY(¶m->req) == AF_INET6? param->srv->extsa6 : param->srv->extsa; -#else - param->sinsl = param->srv->extsa; -#endif param->sinsr = param->req; } @@ -259,13 +255,11 @@ int udpsockmap(struct clientparam *param, int timeo) if (socks5_setaddr(param->srv->family, 1, base + 4, &dst)) continue; i = 8; break; -#ifndef NOIPV6 case 4: if (len < 22) return 484; if (socks5_setaddr(param->srv->family, 4, base + 4, &dst)) continue; i = 20; break; -#endif case 3: { int sz = base[4]; if (len < 7 + sz) return 485;