mirror of
https://github.com/rofl0r/proxychains-ng.git
synced 2024-12-22 04:08:47 +00:00
test_getnameinfo: improve, check ipv6
This commit is contained in:
parent
0e0e35927c
commit
4c3be5e1e3
@ -11,73 +11,117 @@
|
|||||||
#define SOCKPORT(x) (satosin(x)->sin_port)
|
#define SOCKPORT(x) (satosin(x)->sin_port)
|
||||||
#define SOCKFAMILY(x) (satosin(x)->sin_family)
|
#define SOCKFAMILY(x) (satosin(x)->sin_family)
|
||||||
|
|
||||||
|
#define ASSERT(X) { if(!(X)) printf("ASSERTION FAILED: %s @%s:%d\n", # X, __FILE__, __LINE__); }
|
||||||
|
#define CLR() { hbuf[0] = 0; sbuf[0] = 0; }
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
struct sockaddr a = {0}, *sa = &a;
|
struct sockaddr_in a = {0}, *sa = &a;
|
||||||
char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
|
char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
|
||||||
SOCKPORT(a) = htons(80);
|
a.sin_port = htons(80);
|
||||||
memcpy( &( (struct sockaddr_in*) sa ) ->sin_addr , (char[]) {127,0,0,1}, 4);
|
memcpy( &a.sin_addr , (char[]) {127,0,0,1}, 4);
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if ((ret = getnameinfo(sa, 0, hbuf, sizeof(hbuf), sbuf,
|
if ((ret = getnameinfo((void*)sa, 0, hbuf, sizeof(hbuf), sbuf,
|
||||||
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
||||||
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
||||||
else
|
else
|
||||||
printf("%s\n", gai_strerror(ret));
|
printf("%s\n", gai_strerror(ret));
|
||||||
|
|
||||||
assert(ret == EAI_FAMILY);
|
ASSERT(ret == EAI_FAMILY);
|
||||||
|
CLR();
|
||||||
|
|
||||||
if ((ret = getnameinfo(sa, sizeof a, hbuf, sizeof(hbuf), sbuf,
|
if ((ret = getnameinfo((void*)sa, sizeof a, hbuf, sizeof(hbuf), sbuf,
|
||||||
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
||||||
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
||||||
else
|
else
|
||||||
printf("%s\n", gai_strerror(ret));
|
printf("%s\n", gai_strerror(ret));
|
||||||
|
|
||||||
assert(ret == EAI_FAMILY);
|
ASSERT(ret == EAI_FAMILY);
|
||||||
|
CLR();
|
||||||
|
|
||||||
SOCKFAMILY(a) = AF_INET;
|
SOCKFAMILY(a) = AF_INET;
|
||||||
|
|
||||||
if ((ret = getnameinfo(sa, sizeof a, hbuf, 1, sbuf,
|
if ((ret = getnameinfo((void*)sa, sizeof a, hbuf, 1, sbuf,
|
||||||
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
||||||
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
||||||
else
|
else
|
||||||
printf("%s\n", gai_strerror(ret));
|
printf("%s\n", gai_strerror(ret));
|
||||||
|
|
||||||
assert(ret == EAI_OVERFLOW);
|
ASSERT(ret == EAI_OVERFLOW);
|
||||||
|
CLR();
|
||||||
|
|
||||||
if ((ret = getnameinfo(sa, sizeof a, hbuf, 0, sbuf,
|
if ((ret = getnameinfo((void*)sa, sizeof a, hbuf, 0, sbuf,
|
||||||
1, NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
1, NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
||||||
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
||||||
else
|
else
|
||||||
printf("%s\n", gai_strerror(ret));
|
printf("%s\n", gai_strerror(ret));
|
||||||
|
|
||||||
assert(ret == EAI_OVERFLOW);
|
ASSERT(ret == EAI_OVERFLOW);
|
||||||
|
CLR();
|
||||||
|
|
||||||
if ((ret = getnameinfo(sa, sizeof a, hbuf, 0, sbuf,
|
if ((ret = getnameinfo((void*)sa, sizeof(a) - 1, hbuf, 0, sbuf,
|
||||||
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
||||||
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
||||||
else
|
else
|
||||||
printf("%s\n", gai_strerror(ret));
|
printf("%s\n", gai_strerror(ret));
|
||||||
|
|
||||||
assert(ret == 0);
|
ASSERT(ret == EAI_FAMILY);
|
||||||
|
CLR();
|
||||||
|
|
||||||
if ((ret = getnameinfo(sa, sizeof a, hbuf, sizeof hbuf, sbuf,
|
if ((ret = getnameinfo((void*)sa, sizeof a, hbuf, 0, sbuf,
|
||||||
|
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
||||||
|
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
||||||
|
else
|
||||||
|
printf("%s\n", gai_strerror(ret));
|
||||||
|
|
||||||
|
ASSERT(ret == 0 && !strcmp("80", sbuf));
|
||||||
|
CLR();
|
||||||
|
|
||||||
|
if ((ret = getnameinfo((void*)sa, sizeof a, hbuf, sizeof hbuf, sbuf,
|
||||||
0, NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
0, NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
||||||
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
||||||
else
|
else
|
||||||
printf("%s\n", gai_strerror(ret));
|
printf("%s\n", gai_strerror(ret));
|
||||||
|
|
||||||
assert(ret == 0);
|
ASSERT(ret == 0 && !strcmp("127.0.0.1",hbuf));
|
||||||
|
CLR();
|
||||||
|
|
||||||
|
|
||||||
if ((ret = getnameinfo(sa, sizeof a, hbuf, sizeof(hbuf), sbuf,
|
if ((ret = getnameinfo((void*)sa, sizeof a, hbuf, sizeof(hbuf), sbuf,
|
||||||
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
||||||
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
||||||
else
|
else
|
||||||
printf("%s\n", gai_strerror(ret));
|
printf("%s\n", gai_strerror(ret));
|
||||||
|
|
||||||
assert(ret == 0);
|
ASSERT(ret == 0 && !strcmp("127.0.0.1",hbuf) && !strcmp("80", sbuf));
|
||||||
|
CLR();
|
||||||
|
|
||||||
|
struct sockaddr_in6 b = {0}, *sb = &b;
|
||||||
|
b.sin6_port = htons(8080);
|
||||||
|
b.sin6_family = AF_INET6;
|
||||||
|
|
||||||
|
memcpy(&b.sin6_addr,"\0\0\0\0\0\0\0\0\0\0\xff\xff\xc0\xa8\1\2", 16);
|
||||||
|
|
||||||
|
if ((ret = getnameinfo((void*)sb, sizeof b, hbuf, sizeof(hbuf), sbuf,
|
||||||
|
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) == 0)
|
||||||
|
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
||||||
|
else
|
||||||
|
printf("%s\n", gai_strerror(ret));
|
||||||
|
|
||||||
|
ASSERT(ret == 0 && !strcmp("192.168.1.2",hbuf) && !strcmp("8080", sbuf));
|
||||||
|
CLR();
|
||||||
|
|
||||||
|
b.sin6_scope_id = 3;
|
||||||
|
memcpy(&b.sin6_addr,"\0\0\xaa\0\0\0\0\0\0\0\0\xff\xc0\xa8\1\2", 16);
|
||||||
|
|
||||||
|
if ((ret = getnameinfo((void*)sb, sizeof b, hbuf, sizeof(hbuf), sbuf,
|
||||||
|
sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV | NI_NUMERICSCOPE)) == 0)
|
||||||
|
printf("host=%s, serv=%s\n", hbuf, sbuf);
|
||||||
|
else
|
||||||
|
printf("%s\n", gai_strerror(ret));
|
||||||
|
|
||||||
|
ASSERT(ret == 0);
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user