From 7992fbf31ec24f675741d939de4e3f6d901fdfb0 Mon Sep 17 00:00:00 2001 From: Vladimir Dubrovin <3proxy@3proxy.ru> Date: Tue, 7 Apr 2026 11:13:04 +0300 Subject: [PATCH] Use uint32_t/uint16_t instead of unsigned long / unsigned short where required --- src/auth.c | 20 +++--- src/authradius.c | 2 +- src/common.c | 16 ++--- src/conf.c | 8 +-- src/datatypes.c | 2 +- src/dnspr.c | 6 +- src/ftp.c | 2 +- src/ftppr.c | 2 +- src/plugins/TrafficPlugin/Changelog.txt | 14 ++-- src/plugins/TrafficPlugin/ReadMe.txt | 80 +++++++++++------------ src/plugins/TrafficPlugin/TrafficPlugin.c | 36 +++++----- src/proxy.c | 4 +- src/proxy.h | 16 ++--- src/proxymain.c | 2 +- src/socks.c | 6 +- src/structures.h | 18 ++--- src/udppm.c | 11 ---- 17 files changed, 117 insertions(+), 128 deletions(-) diff --git a/src/auth.c b/src/auth.c index e266b69..c133694 100644 --- a/src/auth.c +++ b/src/auth.c @@ -305,7 +305,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){ if(!ha) return 0; } else if(!*SAPORT(&cur->addr) && !SAISNULL(&cur->addr)) { - unsigned short port = *SAPORT(¶m->sinsr); + uint16_t port = *SAPORT(¶m->sinsr); param->sinsr = cur->addr; *SAPORT(¶m->sinsr) = port; } @@ -943,7 +943,7 @@ int dnsauth(struct clientparam * param){ sprintf(s, "ip6.arpa"); } else { - u = ntohl(*(unsigned long *)SAADDR(¶m->sincr)); + u = ntohl(*(uint32_t *)SAADDR(¶m->sincr)); sprintf(buf, "%u.%u.%u.%u.in-addr.arpa", ((u&0x000000FF)), @@ -1155,7 +1155,7 @@ void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* val pthread_mutex_unlock(&hash_mutex); } -unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsigned char* value, unsigned *ttl){ +uint32_t hashresolv(struct hashtable *ht, const unsigned char* name, unsigned char* value, uint32_t *ttl){ unsigned char hash[sizeof(unsigned)*4]; struct hashentry ** hep; struct hashentry *he; @@ -1176,7 +1176,7 @@ unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsign ht->hashempty = he; } else if(!memcmp(hash, he->hash, sizeof(unsigned)*4)){ - if(ttl) *ttl = (unsigned)(he->expires - conf.time); + if(ttl) *ttl = (uint32_t)(he->expires - conf.time); memcpy(value, he->value, ht->recsize); pthread_mutex_unlock(&hash_mutex); return 1; @@ -1191,10 +1191,10 @@ struct nserver nservers[MAXNSERVERS] = {{{0},0}, {{0},0}, {{0},0}, {{0},0}, {{0} struct nserver authnserver; -unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, unsigned *retttl, struct clientparam* param, int makeauth){ +uint32_t udpresolve(int af, unsigned char * name, unsigned char * value, uint32_t *retttl, struct clientparam* param, int makeauth){ int i,n; - unsigned long retval; + uint32_t retval; if((af == AF_INET) && (retval = hashresolv(&dns_table, name, value, retttl))) { return retval; @@ -1208,7 +1208,7 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un unsigned char b[4098], *buf, *s1, *s2; int j, k, len, flen; SOCKET sock; - unsigned ttl; + uint32_t ttl; #ifndef NOIPV6 struct sockaddr_in6 addr; struct sockaddr_in6 *sinsr, *sinsl; @@ -1343,7 +1343,7 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un k+= (12 + flen); continue; /* we need A IPv4 */ } - ttl = ntohl(*(unsigned long *)(buf + k + 6)); + ttl = ntohl(*(uint32_t *)(buf + k + 6)); memcpy(value, buf + k + 12, af == AF_INET6? 16:4); if(ttl < 0 || ttl > (3600*12)) ttl = 3600*12; if(!ttl) ttl = 1; @@ -1373,11 +1373,11 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un return 0; } -unsigned long myresolver(int af, unsigned char * name, unsigned char * value){ +uint32_t myresolver(int af, unsigned char * name, unsigned char * value){ return udpresolve(af, name, value, NULL, NULL, 0); } -unsigned long fakeresolver (int af, unsigned char *name, unsigned char * value){ +uint32_t fakeresolver (int af, unsigned char *name, unsigned char * value){ memset(value, 0, af == AF_INET6? 16 : 4); if(af == AF_INET6){ memset(value, 0, 16); diff --git a/src/authradius.c b/src/authradius.c index 7a1b365..f0ee54c 100644 --- a/src/authradius.c +++ b/src/authradius.c @@ -610,7 +610,7 @@ int radsend(struct clientparam * param, int auth, int stop){ if(!vendor && attr[0] == PW_VENDOR_SPECIFIC) { if (attr[1] < 6 || count < 6) RETURN(4); vendorlen = attr[1]-6; - vendor = htonl(*((int*)(attr +2))); + vendor = htonl(*((uint32_t *)(attr +2))); count -= 6; attr += 6; continue; diff --git a/src/common.c b/src/common.c index a8e8a26..7347931 100644 --- a/src/common.c +++ b/src/common.c @@ -417,7 +417,7 @@ int ceparseargs(const char *str){ int parsehost(int family, unsigned char *host, struct sockaddr *sa){ char *sp=NULL,*se=NULL; - unsigned short port=0; + uint16_t port=0; int ret = 0; if(!host) return 2; @@ -436,7 +436,7 @@ int parsehost(int family, unsigned char *host, struct sockaddr *sa){ return ret; } -int parsehostname(char *hostname, struct clientparam *param, unsigned short port){ +int parsehostname(char *hostname, struct clientparam *param, uint16_t port){ char *sp=NULL,*se=NULL; int ret = 0; @@ -498,7 +498,7 @@ int parseusername(char *username, struct clientparam *param, int extpasswd){ return 0; } -int parseconnusername(char *username, struct clientparam *param, int extpasswd, unsigned short port){ +int parseconnusername(char *username, struct clientparam *param, int extpasswd, uint16_t port){ char *sb, *se; if(!username || !*username) return 1; if ((sb=strchr(username, conf.delimchar)) == NULL){ @@ -625,7 +625,7 @@ int doconnect(struct clientparam * param){ return 0; } -int scanaddr(const unsigned char *s, unsigned long * ip, unsigned long * mask) { +int scanaddr(const unsigned char *s, uint32_t * ip, uint32_t * mask) { unsigned d1, d2, d3, d4, m; int res; if ((res = sscanf((char *)s, "%u.%u.%u.%u/%u", &d1, &d2, &d3, &d4, &m)) < 4) return 0; @@ -658,8 +658,8 @@ struct hostent * my_gethostbyname(char *name, char *buf, struct hostent *hp){ #endif #ifdef NOIPV6 -unsigned long getip(unsigned char *name){ - unsigned long retval; +uint32_t getip(unsigned char *name){ + uint32_t retval; int i; int ndots = 0; struct hostent *hp=NULL; @@ -701,7 +701,7 @@ unsigned long getip(unsigned char *name){ system(conf.demanddialprog); hp=gethostbyname((char *)name); } - retval = hp?*(unsigned long *)hp->h_addr:0; + retval = hp?*(uint32_t *)hp->h_addr:0; #if !defined(_WIN32) && !defined(GETHOSTBYNAME_R) pthread_mutex_unlock(&gethostbyname_mutex); #endif @@ -744,7 +744,7 @@ int afdetect(unsigned char *name){ } -unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa){ +uint32_t getip46(int family, unsigned char *name, struct sockaddr *sa){ #ifndef NOIPV6 int detect; struct addrinfo *ai, hint; diff --git a/src/conf.c b/src/conf.c index 8067f9c..ae981be 100644 --- a/src/conf.c +++ b/src/conf.c @@ -811,7 +811,7 @@ static int h_parent(int argc, unsigned char **argv){ *cidr = '/'; chains->cidr = atoi(cidr + 1); } - *SAPORT(&chains->addr) = htons((unsigned short)atoi((char *)argv[4])); + *SAPORT(&chains->addr) = htons((uint16_t)atoi((char *)argv[4])); if(argc > 5) chains->extuser = (unsigned char *)mystrdup((char *)argv[5]); if(argc > 6) chains->extpass = (unsigned char *)mystrdup((char *)argv[6]); if(!acl->chains) { @@ -1221,10 +1221,10 @@ static int h_ace(int argc, unsigned char **argv){ freeacl(acl); return(21); } - memset(acl->chains, 0, sizeof(struct chain)); + memset(acl->chains, 0, sizeof(struct chain)); acl->chains->type = R_HTTP; if(!getip46(46, argv[1], (struct sockaddr *)&acl->chains->addr)) return 5; - *SAPORT(&acl->chains->addr) = htons((unsigned short)atoi((char *)argv[2])); + *SAPORT(&acl->chains->addr) = htons((uint16_t)atoi((char *)argv[2])); acl->chains->weight = 1000; case ALLOW: case DENY: @@ -1394,7 +1394,7 @@ static int h_delimchar(int argc, unsigned char **argv){ #ifndef NORADIUS static int h_radius(int argc, unsigned char **argv){ - unsigned short port; + uint16_t port; /* int oldrad; diff --git a/src/datatypes.c b/src/datatypes.c index b5bc733..ceb402d 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -44,7 +44,7 @@ static void pr_traffic(struct node *node, CBFUNC cbf, void*cb){ static void pr_port(struct node *node, CBFUNC cbf, void*cb){ char buf[8]; - if(node->value)(*cbf)(cb, buf, sprintf(buf, "%hu", ntohs(*(unsigned short*)node->value))); + if(node->value)(*cbf)(cb, buf, sprintf(buf, "%hu", (unsigned short)ntohs(*(uint16_t*)node->value))); } static void pr_datetime(struct node *node, CBFUNC cbf, void*cb){ diff --git a/src/dnspr.c b/src/dnspr.c index 5541550..cd84d44 100644 --- a/src/dnspr.c +++ b/src/dnspr.c @@ -17,7 +17,7 @@ void * dnsprchild(struct clientparam* param) { - unsigned long ip = 0; + uint32_t ip = 0; unsigned char *bbuf; unsigned char *buf, *s1, *s2; char * host = NULL; @@ -26,7 +26,7 @@ void * dnsprchild(struct clientparam* param) { int res, i; int len; unsigned type=0; - unsigned ttl; + uint32_t ttl; unsigned char addr[16]; #ifdef _WIN32 unsigned long ul = 1; @@ -109,7 +109,7 @@ void * dnsprchild(struct clientparam* param) { unsigned a, b, c, d; sscanf(host, "%u.%u.%u.%u", &a, &b, &c, &d); ip = htonl((d<<24) ^ (c<<16) ^ (b<<8) ^ a); - if(*SAFAMILY(¶m->sincl) == AF_INET && ip == *(unsigned long*)SAADDR(¶m->sincl)){ + if(*SAFAMILY(¶m->sincl) == AF_INET && ip == *(uint32_t *)SAADDR(¶m->sincl)){ buf[2] = 0x85; buf[3] = 0x80; buf[6] = 0; diff --git a/src/ftp.c b/src/ftp.c index 4d9ba04..660128e 100644 --- a/src/ftp.c +++ b/src/ftp.c @@ -195,7 +195,7 @@ SOCKET ftpdata(struct clientparam *param){ rem = param->remsock; param->remsock = INVALID_SOCKET; param->req = param->sinsr; - *SAPORT(¶m->req) = *SAPORT(¶m->sinsr) = htons((unsigned short)((b5<<8)^b6)); + *SAPORT(¶m->req) = *SAPORT(¶m->sinsr) = htons((uint16_t)((b5<<8)^b6)); *SAPORT(¶m->sinsl) = 0; i = param->operation; param->operation = FTP_DATA; diff --git a/src/ftppr.c b/src/ftppr.c index 6538fdd..96a514a 100644 --- a/src/ftppr.c +++ b/src/ftppr.c @@ -152,7 +152,7 @@ void * ftpprchild(struct clientparam* param) { unsigned short b5, b6; if(sscanf((char *)buf+5, "%lu,%lu,%lu,%lu,%hu,%hu", &b1, &b2, &b3, &b4, &b5, &b6)!=6) {RETURN(828);} - *SAPORT(¶m->sincr) = htons((unsigned short)((b5<<8)^b6)); + *SAPORT(¶m->sincr) = htons((uint16_t)((b5<<8)^b6)); if(connectwithpoll(param, clidatasock, (struct sockaddr *)¶m->sincr, SASIZE(¶m->sincr),conf.timeouts[CONNECT_TO])) { param->srv->so._closesocket(param->sostate, clidatasock); clidatasock = INVALID_SOCKET; diff --git a/src/plugins/TrafficPlugin/Changelog.txt b/src/plugins/TrafficPlugin/Changelog.txt index 696b2de..e5c1977 100644 --- a/src/plugins/TrafficPlugin/Changelog.txt +++ b/src/plugins/TrafficPlugin/Changelog.txt @@ -1,13 +1,13 @@ ======================================================================== 3proxy traffic plugin Changelog ======================================================================== -v0.1.2 (2 2007 ) -- 3proxy. -- debug. +v0.1.2 (2 января 2007 года) +- Плугин обновлён в соответствии с обновлением 3proxy. +- Добавлена опция debug. v0.1.1 -- udp proxy, tcppm, pop3p -- . +- Теперь udp нельзя задавать proxy, tcppm, pop3p +- Исправлена ошибка с выбором типа соединения. -v0.1.0 beta (10 2006) - . \ No newline at end of file +v0.1.0 beta (10 июля 2006) +Первый релиз. \ No newline at end of file diff --git a/src/plugins/TrafficPlugin/ReadMe.txt b/src/plugins/TrafficPlugin/ReadMe.txt index c4f4fb1..43f6531 100644 --- a/src/plugins/TrafficPlugin/ReadMe.txt +++ b/src/plugins/TrafficPlugin/ReadMe.txt @@ -1,64 +1,64 @@ ======================================================================== 3proxy traffic plugin ======================================================================== - 3proxy , . - ( 10%) , - , -, 4-5 . , - , . +Как известно 3proxy считает траффик не сетевой, а прикладной. +Обычно прикладной траффик немного меньше (примерно на 10%) чем сетевой, +однако в некоторых случаях, например когда пользователи сети играют в +игры, сетевой траффик может превысить прикладной в 4-5 раз. Это довольно неприятно, +так как получается, что они за это не платят. - , +. - 50-60 15-20 ( ) - 800-900 ( IE). , - . +Происходит это потому, что в каждом посланом пакете есть заголовок+данные. Заголовок +весит порядка 50-60 байт а колличество данных может меняться от 15-20 байт (что характерно для игр) +до 800-900 байт (у IE). Также колличество данных в пакете зависит от загрузки сети, +удалённости сервера и прочих причин. - . - , - . +Данный плагин может исправить такую ситуацию. Он может умножать счётчик траффика +при окончании соединения на некоторый коэффициент либо добавлять к данным размеры заголовков пакетов, +которые прошли по сети. - : +Как использовать плагин: - : +загрузка плагина: plugin "TrafficPlugin.dll" start - : - : -trafcorrect m <> < > <> -: <> proxy, socks4, socks45, socks5, tcppm, udppm, pop3p - , . - *, . - < > - , . * - - <> - . . - 0 100 +Далее недоходимо добавить правила: +ДЛЯ РЕЖИМА ДОМНОЖЕНИЯ ТРАФФИКА НА ЧИСЛО: +trafcorrect m <сервис> <исходящий порт> <коэффициент> +где: <сервис> может быть proxy, socks4, socks45, socks5, tcppm, udppm, pop3p + если сервис указан неверно то считается, что это может быть любой сервис. + можно использовать *, тогда правило будет считаться для любого сервиса. + <исходящий порт> - порт, к которому подключается прокси сервер. * - любой + <коэффициент> - число на каоторое домнажается траффик. Обязательный параметр. + Должен быть от больше 0 и меньше 100 - ר : -trafcorrect p <> < > [ ] - - , . - [ ] - . - Ethernal. . , - 66 . +ДЛЯ РЕЖИМА С УЧЁТОМ РАЗМЕРА ЗАГОЛОВКОВ ПАКЕТОВ: +trafcorrect p <сервис> <исходящий порт> [размер пустого пакета] + - протокол, по которому осуществляется соединение. + [размер пакета] - средний размер пустого пакета. Можно определить захватив +данные при помощи такой утилиты как Ethernal. Параметр необязателен. Если отсутствует, +то размер пакета будет считаться равным 66 байт. - . - , . - . +Режимы можно смешивать. +Следует учитывать, что плугин создаёт список всех правил изменения траффика. +Когда происходит окончание соединения выполняется первое подходящее правило. -: +Пример: plugin "TrafficPlugin.dll" start trafcorrect m socks5 6112 4.5 trafcorrect m socks5 * 1.1 - : +следующее неверно: plugin "TrafficPlugin.dll" start trafcorrect m socks5 * 1.1 trafcorrect m socks5 6112 4.5 - . 1 . +Вторая строчка выполнена никогда не будет. Так как 1 имеет более широкое назначение. - : -1. ( stdout). -2. . : +РЕЖИМ ОТЛАДКИ ПРАВИЛ: +1. Запускает прокси в оконном режиме (чтобы видеть stdout). +2. Загрузка плагина должна выглядеть сл. образом: plugin "TrafficPlugin.dll" start debug -3. . - 1. +3. В окне прокси сервера будет написана информация о прохождении правил коррекции траффика. +Правила нумеруются с 1. ///////////////////////////////////////////////////////////////////////////// Copyright: diff --git a/src/plugins/TrafficPlugin/TrafficPlugin.c b/src/plugins/TrafficPlugin/TrafficPlugin.c index de876ab..3d61888 100644 --- a/src/plugins/TrafficPlugin/TrafficPlugin.c +++ b/src/plugins/TrafficPlugin/TrafficPlugin.c @@ -1,16 +1,16 @@ /* 3proxy Traffic correct plugin v0.1 beta - Maslov Michael aka Flexx(rus) - by 3APA3A + Написал Maslov Michael aka Flexx(rus) + Формула расчёта траффика по размеру пакета by 3APA3A email: flexx_rus@mail.ru ICQ: 299132764 http://3proxy.ru/ - ( ). . - , . - 3proxy. - Copyright . + Как работает не знаю (многое зависит от ваших настроек). Никаких гарантий. + С плугином можете делать всё, что захочется. + Дожен распростроняться только с исходными кодами или вместе с 3proxy. + Удалять данный Copyright запрещено. */ #include "../../structures.h" @@ -33,8 +33,8 @@ struct commands * commandhandlers; struct pluginlink * pl; typedef enum { - MULTIPLAY, /* */ - IPCORRECT, /* */ + MULTIPLAY, /* метод коррекции умножением на коффициент */ + IPCORRECT, /* метод коррекции с учётом размера пакета */ } TRAFCORRECT_TYPE; typedef enum { @@ -84,7 +84,7 @@ int h_trafcorrect(int argc, unsigned char ** argv) { if(DBGLEVEL == 1)fprintf(stdout, "See documentation of traffic correct plugin.\n"); return 1; } - /* */ + /* режим умножения траффика на коэффициент */ if (!strcmp((char *)argv[1], "m")) { struct trafcorrect * newitem; if (argc < 5) { @@ -110,7 +110,7 @@ int h_trafcorrect(int argc, unsigned char ** argv) { newitem->port = atoi((char *)argv[3]); newitem->coeff = atof((char *)argv[4]); - /* */ + /* проверка на корректность ввода */ if ((newitem->port>65535) || (newitem->coeff<=0) || (newitem->coeff>100)) { free(newitem); if(DBGLEVEL == 1)fprintf(stdout, "Port must be 0port = atoi((char *)argv[4]); - /* - */ + /* последний необязательный параметр - размер пакета */ if (argc >= 6) { newitem->psize = atoi((char *)argv[5]); } @@ -169,7 +169,7 @@ int h_trafcorrect(int argc, unsigned char ** argv) { return 1; } -static unsigned short myhtons(unsigned short port) { +static uint16_t myhtons(uint16_t port) { return (port << 8) | (port >> 8); } @@ -207,8 +207,8 @@ void mylogfunc(struct clientparam * param, const unsigned char * pz) { (param->operation == ICMPASSOC)) )||(starttrafcorrect->con_type == TCP))) /* TCP support */ { - /* . - */ + /* фильтр подошёл. можно изменять значение траффика + домножаем на число */ if (starttrafcorrect->type == MULTIPLAY) { #ifndef NOPSTDINT param->statssrv64 = (unsigned)((double)param->statssrv64 *starttrafcorrect->coeff); @@ -218,7 +218,7 @@ void mylogfunc(struct clientparam * param, const unsigned char * pz) { param->statscli = (unsigned)((double)param->statscli * starttrafcorrect->coeff); #endif } - /* */ + /* с учётом пакетов */ if (starttrafcorrect->type == IPCORRECT) { if (starttrafcorrect->con_type == TCP) { #ifndef NOPSTDINT @@ -294,7 +294,7 @@ PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink, int argc, char** return 0; } already_loaded = 1; - /* "trafcorrect" */ + /* добавляем команду "trafcorrect" */ starthandler = commandhandlers; for ( ; starthandler->next; starthandler = starthandler->next); trafcorrect_handler.next = NULL; @@ -304,7 +304,7 @@ PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink, int argc, char** trafcorrect_handler.handler = h_trafcorrect; starthandler->next = &trafcorrect_handler; - /* conf->logfunc, */ + /* подменяем conf->logfunc, с целью контролировать траффик */ origlogfunc = conf->logfunc; conf->logfunc = mylogfunc; return 0; diff --git a/src/proxy.c b/src/proxy.c index a8695db..5937586 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -337,10 +337,10 @@ for(;;){ if(su) { su = (unsigned char *)mystrdup((char *)sb); decodeurl(su, 0); - if(parseconnusername((char *)su, (struct clientparam *)param, 1, (unsigned short)((ftp)?21:80))) RETURN (100); + if(parseconnusername((char *)su, (struct clientparam *)param, 1, (uint16_t)((ftp)?21:80))) RETURN (100); myfree(su); } - else if(parsehostname((char *)sb, (struct clientparam *)param, (unsigned short)((ftp)? 21:80))) RETURN(100); + else if(parsehostname((char *)sb, (struct clientparam *)param, (uint16_t)((ftp)? 21:80))) RETURN(100); if(!isconnect){ if(se==sg)*se-- = ' '; *se = '/'; diff --git a/src/proxy.h b/src/proxy.h index 38fc353..2c65a40 100644 --- a/src/proxy.h +++ b/src/proxy.h @@ -195,15 +195,15 @@ void trafcountfunc(struct clientparam *param); unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nbytesout); int handleredirect(struct clientparam * param, struct ace * acentry); -int scanaddr(const unsigned char *s, unsigned long * ip, unsigned long * mask); +int scanaddr(const unsigned char *s, uint32_t * ip, uint32_t * mask); int myinet_ntop(int af, void *src, char *dst, socklen_t size); extern struct nserver nservers[MAXNSERVERS]; extern struct nserver authnserver; -unsigned long getip(unsigned char *name); -unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa); +uint32_t getip(unsigned char *name); +uint32_t getip46(int family, unsigned char *name, struct sockaddr *sa); int afdetect(unsigned char *name); -unsigned long myresolver(int, unsigned char *, unsigned char *); -unsigned long fakeresolver (int, unsigned char *, unsigned char*); +uint32_t myresolver(int, unsigned char *, unsigned char *); +uint32_t fakeresolver (int, unsigned char *, unsigned char*); int inithashtable(struct hashtable *hashtable, unsigned nhashsize); void freeparam(struct clientparam * param); void clearstat(struct clientparam * param); @@ -248,13 +248,13 @@ struct hashtable; void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* value, time_t expires); int parsehost(int family, unsigned char *host, struct sockaddr *sa); -int parsehostname(char *hostname, struct clientparam *param, unsigned short port); +int parsehostname(char *hostname, struct clientparam *param, uint16_t port); int parseusername(char *username, struct clientparam *param, int extpasswd); -int parseconnusername(char *username, struct clientparam *param, int extpasswd, unsigned short port); +int parseconnusername(char *username, struct clientparam *param, int extpasswd, uint16_t port); int ACLmatches(struct ace* acentry, struct clientparam * param); int checkACL(struct clientparam * param); extern int havelog; -unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, unsigned *retttl, struct clientparam* param, int makeauth); +uint32_t udpresolve(int af, unsigned char * name, unsigned char * value, uint32_t *retttl, struct clientparam* param, int makeauth); struct ace * copyacl (struct ace *ac); struct auth * copyauth (struct auth *); diff --git a/src/proxymain.c b/src/proxymain.c index 55a382d..6696f7b 100644 --- a/src/proxymain.c +++ b/src/proxymain.c @@ -573,7 +573,7 @@ int MODULEMAINFUNC (int argc, char** argv){ else { #endif #ifndef NOPORTMAP - if (error || argc != i+3 || *argv[i]=='-'|| (*SAPORT(&srv.intsa) = htons((unsigned short)atoi(argv[i])))==0 || (srv.targetport = htons((unsigned short)atoi(argv[i+2])))==0) { + if (error || argc != i+3 || *argv[i]=='-'|| (*SAPORT(&srv.intsa) = htons((uint16_t)atoi(argv[i])))==0 || (srv.targetport = htons((uint16_t)atoi(argv[i+2])))==0) { #ifndef STDMAIN haveerror = 1; pushthreadinit(); diff --git a/src/socks.c b/src/socks.c index f836a97..431fc64 100644 --- a/src/socks.c +++ b/src/socks.c @@ -37,7 +37,7 @@ void * sockschild(struct clientparam* param) { SOCKET s; unsigned size; SASIZETYPE sasize; - unsigned short port = 0; + uint16_t port = 0; unsigned char * buf=NULL; unsigned char c; unsigned char command=0; @@ -102,7 +102,7 @@ void * sockschild(struct clientparam* param) { buf[0] = (unsigned char) res; if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);} buf[1] = (unsigned char) res; - port = *(unsigned short*)buf; + port = *(uint16_t*)buf; c = 1; } @@ -162,7 +162,7 @@ void * sockschild(struct clientparam* param) { buf[0] = (unsigned char) res; if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);} buf[1] = (unsigned char) res; - port = *(unsigned short*)buf; + port = *(uint16_t*)buf; } else { diff --git a/src/structures.h b/src/structures.h index 01d59f4..11eb9ab 100644 --- a/src/structures.h +++ b/src/structures.h @@ -198,7 +198,7 @@ struct srvparam; typedef void (*LOGFUNC)(struct clientparam * param, const unsigned char *); typedef int (*AUTHFUNC)(struct clientparam * param); typedef void * (*REDIRECTFUNC)(struct clientparam * param); -typedef unsigned long (*RESOLVFUNC)(int af, unsigned char *name, unsigned char *value); +typedef uint32_t (*RESOLVFUNC)(int af, unsigned char *name, unsigned char *value); typedef unsigned (*BANDLIMFUNC)(struct clientparam * param, unsigned nbytesin, unsigned nbytesout); typedef void (*TRAFCOUNTFUNC)(struct clientparam * param); typedef void * (*EXTENDFUNC) (struct node *node); @@ -241,8 +241,8 @@ struct iplist { struct portlist { struct portlist * next; - unsigned short startport; - unsigned short endport; + uint16_t startport; + uint16_t endport; }; struct userlist { @@ -536,7 +536,7 @@ struct srvparam { unsigned char * logformat; unsigned char * logtarget; unsigned char * nonprintable; - unsigned short targetport; + uint16_t targetport; unsigned char replace; time_t time_start; }; @@ -732,7 +732,7 @@ struct symbol { struct proxydef { PROXYFUNC pf; - unsigned short port; + uint16_t port; int isudp; int service; char * helpmessage; @@ -780,8 +780,8 @@ struct pluginlink { int (*myinet_ntop)(int af, void *src, char *dst, socklen_t size); int (*dobuf)(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec); int (*dobuf2)(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec, struct tm* tm, char * format); - int (*scanaddr)(const unsigned char *s, unsigned long * ip, unsigned long * mask); - unsigned long (*getip46)(int family, unsigned char *name, struct sockaddr *sa); + int (*scanaddr)(const unsigned char *s, uint32_t * ip, uint32_t * mask); + uint32_t (*getip46)(int family, unsigned char *name, struct sockaddr *sa); int (*sockmap)(struct clientparam * param, int timeo, int usesplice); int (*ACLMatches)(struct ace* acentry, struct clientparam * param); int (*alwaysauth)(struct clientparam * param); @@ -807,9 +807,9 @@ struct pluginlink { struct proxydef * childdef; int (*start_proxy_thread)(struct child * chp); void (*freeparam)(struct clientparam * param); - int (*parsehostname)(char *hostname, struct clientparam *param, unsigned short port); + int (*parsehostname)(char *hostname, struct clientparam *param, uint16_t port); int (*parseusername)(char *username, struct clientparam *param, int extpasswd); - int (*parseconnusername)(char *username, struct clientparam *param, int extpasswd, unsigned short port); + int (*parseconnusername)(char *username, struct clientparam *param, int extpasswd, uint16_t port); struct sockfuncs *so; unsigned char * (*dologname) (unsigned char *buf, unsigned char *name, const unsigned char *ext, ROTATION lt, time_t t); }; diff --git a/src/udppm.c b/src/udppm.c index b28582d..781cc16 100644 --- a/src/udppm.c +++ b/src/udppm.c @@ -17,16 +17,6 @@ #define RETURN(xxx) { param->res = xxx; goto CLEANRET; } -struct udpmap { - struct udpmap *next; - time_t updated; - SOCKET s; - int single; - unsigned long cliip; - unsigned short cliport; -}; - - void * udppmchild(struct clientparam* param) { unsigned char *buf = NULL; int res, i; @@ -34,7 +24,6 @@ void * udppmchild(struct clientparam* param) { SASIZETYPE size; unsigned long ul = 1; #endif - struct udpmap *udpmappings = NULL; struct pollfd fds[256];