mirror of
https://github.com/3proxy/3proxy.git
synced 2025-02-23 10:35:40 +08:00
Fixes for NOIPV6
Fixes to compile without IPv6 support
This commit is contained in:
parent
278955deef
commit
b5bcb44e27
14
src/common.c
14
src/common.c
@ -618,12 +618,22 @@ int doconnect(struct clientparam * param){
|
||||
if(!*SAPORT(¶m->sinsr))*SAPORT(¶m->sinsr) = *SAPORT(¶m->req);
|
||||
if ((param->remsock=so._socket(*SAFAMILY(¶m->sinsr), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {return (11);}
|
||||
so._setsockopt(param->remsock, SOL_SOCKET, SO_LINGER, (unsigned char *)&lg, sizeof(lg));
|
||||
if(*SAFAMILY(¶m->sinsr) == AF_INET) memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
|
||||
#ifndef NOIPV6
|
||||
if(*SAFAMILY(¶m->sinsr) == AF_INET)
|
||||
#endif
|
||||
memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
|
||||
#ifndef NOIPV6
|
||||
else memcpy(¶m->sinsl, ¶m->srv->extsa6, sizeof(param->srv->extsa6));
|
||||
#endif
|
||||
if (param->srv->targetport && !*SAPORT(¶m->sinsl) && ntohs(*SAPORT(¶m->sincr)) > 1023) *SAPORT(¶m->sinsl) = *SAPORT(¶m->sincr);
|
||||
if(so._bind(param->remsock, (struct sockaddr*)¶m->sinsl, sizeof(param->sinsl))==-1) {
|
||||
if(*SAFAMILY(¶m->sinsr) == AF_INET) memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
|
||||
#ifndef NOIPV6
|
||||
if(*SAFAMILY(¶m->sinsr) == AF_INET)
|
||||
#endif
|
||||
memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
|
||||
#ifndef NOIPV6
|
||||
else memcpy(¶m->sinsl, ¶m->srv->extsa6, sizeof(param->srv->extsa6));
|
||||
#endif
|
||||
if(so._bind(param->remsock, (struct sockaddr*)¶m->sinsl, sizeof(param->sinsl))==-1) {
|
||||
return 12;
|
||||
}
|
||||
|
@ -568,9 +568,11 @@ 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_acl(struct node * node){
|
||||
return ((struct srvparam *)node->value) -> acl;
|
||||
@ -747,18 +749,20 @@ static struct property prop_server[] = {
|
||||
{prop_server + 4, "starttime", ef_server_starttime, TYPE_DATETIME, "service started seconds"},
|
||||
{prop_server + 5, "intsa", ef_server_intsa, TYPE_SA, "ip address of internal interface"},
|
||||
{prop_server + 6, "extsa", ef_server_extsa, TYPE_SA, "ip address of external interface"},
|
||||
{prop_server + 7, "auth", ef_server_auth, TYPE_STRING, "service authentication type"},
|
||||
{prop_server + 8, "acl", ef_server_acl, TYPE_ACE, "access control list"},
|
||||
{prop_server + 9, "singlepacket", ef_server_singlepacket, TYPE_INTEGER, "is single packet redirection"},
|
||||
{prop_server + 10, "usentlm", ef_server_usentlm, TYPE_INTEGER, "allow NTLM authentication"},
|
||||
{prop_server + 11, "log", ef_server_log, TYPE_STRING, "type of logging"},
|
||||
{prop_server + 12, "logtarget", ef_server_logtarget, TYPE_STRING, "log target options"},
|
||||
{prop_server + 13, "logformat", ef_server_logformat, TYPE_STRING, "logging format string"},
|
||||
{prop_server + 14, "nonprintable", ef_server_nonprintable, TYPE_STRING, "non printable characters"},
|
||||
{prop_server + 15, "replacement", ef_server_replacement, TYPE_CHAR, "replacement character"},
|
||||
{prop_server + 16, "childcount", ef_server_childcount, TYPE_INTEGER, "number of servers connected"},
|
||||
{prop_server + 17, "child", ef_server_child, TYPE_CLIENT, "connected clients"},
|
||||
#ifndef NOIPV6
|
||||
{prop_server + 7, "extsa6", ef_server_extsa6, TYPE_SA, "ipv6 address of external interface"},
|
||||
{prop_server + 8, "auth", ef_server_auth, TYPE_STRING, "service authentication type"},
|
||||
{prop_server + 9, "acl", ef_server_acl, TYPE_ACE, "access control list"},
|
||||
{prop_server + 10, "singlepacket", ef_server_singlepacket, TYPE_INTEGER, "is single packet redirection"},
|
||||
{prop_server + 11, "usentlm", ef_server_usentlm, TYPE_INTEGER, "allow NTLM authentication"},
|
||||
{prop_server + 12, "log", ef_server_log, TYPE_STRING, "type of logging"},
|
||||
{prop_server + 13, "logtarget", ef_server_logtarget, TYPE_STRING, "log target options"},
|
||||
{prop_server + 14, "logformat", ef_server_logformat, TYPE_STRING, "logging format string"},
|
||||
{prop_server + 15, "nonprintable", ef_server_nonprintable, TYPE_STRING, "non printable characters"},
|
||||
{prop_server + 16, "replacement", ef_server_replacement, TYPE_CHAR, "replacement character"},
|
||||
{prop_server + 17, "childcount", ef_server_childcount, TYPE_INTEGER, "number of servers connected"},
|
||||
{prop_server + 18, "child", ef_server_child, TYPE_CLIENT, "connected clients"},
|
||||
#endif
|
||||
{NULL, "next", ef_server_next, TYPE_SERVER, "next"}
|
||||
};
|
||||
|
||||
|
@ -579,7 +579,11 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){
|
||||
}
|
||||
if(srv->logtarget) srv->logtarget = (unsigned char *)mystrdup((char *)srv->logtarget);
|
||||
memcpy(¶m->sincr, &srv->intsa, sizeof(param->sincr));
|
||||
#ifndef NOIPV6
|
||||
memcpy(¶m->sinsr, (srv->family == 6 || srv->family == 64)? (void *)&srv->extsa6: (void *)&srv->extsa, sizeof(param->sinsl));
|
||||
#else
|
||||
memcpy(¶m->sinsr, &srv->extsa, sizeof(param->sinsl));
|
||||
#endif
|
||||
}
|
||||
|
||||
void srvfree(struct srvparam * srv){
|
||||
|
@ -154,7 +154,11 @@ void * sockschild(struct clientparam* param) {
|
||||
case 2:
|
||||
case 3:
|
||||
|
||||
#ifndef NOIPV6
|
||||
memcpy(¶m->sinsl, *SAFAMILY(¶m->req)==AF_INET6? (struct sockaddr *)¶m->srv->extsa6:(struct sockaddr *)¶m->srv->extsa, SASIZE(¶m->req));
|
||||
#else
|
||||
memcpy(¶m->sinsl, ¶m->srv->extsa, SASIZE(¶m->req));
|
||||
#endif
|
||||
if(!*SAPORT(¶m->sinsl))*SAPORT(¶m->sinsl) = port;
|
||||
if ((param->remsock=so._socket(*SAFAMILY(¶m->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
|
||||
param->operation = command == 2?BIND:UDPASSOC;
|
||||
|
@ -71,7 +71,11 @@ void * udppmchild(struct clientparam* param) {
|
||||
param->clisock = param->srv->srvsock;
|
||||
#endif
|
||||
|
||||
#ifndef NOIPV6
|
||||
memcpy(¶m->sinsl, *SAFAMILY(¶m->req) == AF_INET? (struct sockaddr *)¶m->srv->extsa : (struct sockaddr *)¶m->srv->extsa6, SASIZE(¶m->req));
|
||||
#else
|
||||
memcpy(¶m->sinsl, ¶m->srv->extsa, SASIZE(¶m->req));
|
||||
#endif
|
||||
*SAPORT(¶m->sinsl) = 0;
|
||||
if ((param->remsock=so._socket(*SAFAMILY(¶m->sinsl), SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
|
||||
if(so._bind(param->remsock,(struct sockaddr *)¶m->sinsl,sizeof(param->sinsl))) {RETURN (12);}
|
||||
|
@ -1,2 +1,2 @@
|
||||
#define VERSION "3proxy-0.8b-devel"
|
||||
#define BUILDDATE "141109205515"
|
||||
#define BUILDDATE "141109215219"
|
||||
|
Loading…
Reference in New Issue
Block a user