version 1.2.2.1, 2011/10/31 09:46:18
|
version 1.2.2.2, 2011/10/31 15:49:37
|
Line 73 Usage()
|
Line 73 Usage()
|
int |
int |
main(int argc, char **argv) |
main(int argc, char **argv) |
{ |
{ |
struct sockaddr sa = { 0 }, *ba = NULL; | io_sockaddr_t sa, ba; |
struct sockaddr_in *sin4; | |
struct sockaddr_in6 *sin6; | |
struct hostent *host; |
struct hostent *host; |
char ch; |
char ch; |
int h, len; |
int h, len; |
u_short id = ANSH_ID; |
u_short id = ANSH_ID; |
|
|
|
memset(&sa, 0, sizeof sa); |
|
memset(&ba, 0, sizeof ba); |
|
|
srandomdev(); |
srandomdev(); |
do { |
do { |
Crypted = (u_int) random() % UINT_MAX; |
Crypted = (u_int) random() % UINT_MAX; |
Line 99 main(int argc, char **argv)
|
Line 100 main(int argc, char **argv)
|
} |
} |
switch (host->h_addrtype) { |
switch (host->h_addrtype) { |
case AF_INET: |
case AF_INET: |
ba = malloc(sizeof(struct sockaddr_in)); | ba.sin.sin_len = sizeof(struct sockaddr_in); |
if (!ba) { | ba.sin.sin_family = AF_INET; |
printf("Error:: malloc() #%d - %s ...\n", | memcpy(&ba.sin.sin_addr.s_addr, host->h_addr, host->h_length); |
errno, strerror(errno)); | |
return 1; | |
} else { | |
memset(ba, 0, sizeof(struct sockaddr_in)); | |
sin4 = (struct sockaddr_in*) ba; | |
} | |
sin4->sin_len = sizeof(struct sockaddr_in); | |
sin4->sin_family = AF_INET; | |
memcpy(&sin4->sin_addr.s_addr, host->h_addr, host->h_length); | |
break; |
break; |
case AF_INET6: |
case AF_INET6: |
ba = malloc(sizeof(struct sockaddr_in6)); | ba.sin6.sin6_len = sizeof(struct sockaddr_in6); |
if (!ba) { | ba.sin6.sin6_family = AF_INET6; |
printf("Error:: malloc() #%d - %s ...\n", | memcpy(&ba.sin6.sin6_addr.s6_addr, host->h_addr, host->h_length); |
errno, strerror(errno)); | |
return 1; | |
} else { | |
memset(ba, 0, sizeof(struct sockaddr_in6)); | |
sin6 = (struct sockaddr_in6*) ba; | |
} | |
sin6->sin6_len = sizeof(struct sockaddr_in6); | |
sin6->sin6_family = AF_INET6; | |
memcpy(&sin6->sin6_addr.s6_addr, host->h_addr, host->h_length); | |
break; |
break; |
default: |
default: |
printf("Error:: Unknown address type %d !!!\n", host->h_addrtype); |
printf("Error:: Unknown address type %d !!!\n", host->h_addrtype); |
Line 155 main(int argc, char **argv)
|
Line 138 main(int argc, char **argv)
|
argv += optind; |
argv += optind; |
if (!argc) { |
if (!argc) { |
printf("Error:: not specified address for connect ...\n"); |
printf("Error:: not specified address for connect ...\n"); |
if (ba) |
|
free(ba); |
|
return 1; |
return 1; |
} |
} |
|
|
Line 164 main(int argc, char **argv)
|
Line 145 main(int argc, char **argv)
|
if (!host) { |
if (!host) { |
printf("Error:: in bind address '%s' #%d - %s\n", |
printf("Error:: in bind address '%s' #%d - %s\n", |
argv[0], h_errno, hstrerror(h_errno)); |
argv[0], h_errno, hstrerror(h_errno)); |
if (ba) |
|
free(ba); |
|
return 1; |
return 1; |
} |
} |
switch (host->h_addrtype) { |
switch (host->h_addrtype) { |
case AF_INET: |
case AF_INET: |
sin4 = (struct sockaddr_in*) &sa; | sa.sin.sin_len = sizeof(struct sockaddr_in); |
sin4->sin_len = sizeof(struct sockaddr_in); | sa.sin.sin_family = AF_INET; |
sin4->sin_family = AF_INET; | memcpy(&sa.sin.sin_addr.s_addr, host->h_addr, host->h_length); |
memcpy(&sin4->sin_addr.s_addr, host->h_addr, host->h_length); | |
break; |
break; |
case AF_INET6: |
case AF_INET6: |
sin6 = (struct sockaddr_in6*) &sa; | sa.sin6.sin6_len = sizeof(struct sockaddr_in6); |
sin6->sin6_len = sizeof(struct sockaddr_in6); | sa.sin6.sin6_family = AF_INET6; |
sin6->sin6_family = AF_INET6; | memcpy(&sa.sin6.sin6_addr.s6_addr, host->h_addr, host->h_length); |
memcpy(&sin6->sin6_addr.s6_addr, host->h_addr, host->h_length); | |
break; |
break; |
default: |
default: |
printf("Error:: Unknown address type %d !!!\n", host->h_addrtype); |
printf("Error:: Unknown address type %d !!!\n", host->h_addrtype); |
if (ba) |
|
free(ba); |
|
return 1; |
return 1; |
} |
} |
|
|
h = PrepareL3(ba, &len); | h = PrepareL3(&ba, &len); |
if (h == -1) { |
if (h == -1) { |
printf("Error:: Descriptor not opened ... \n"); |
printf("Error:: Descriptor not opened ... \n"); |
if (ba) |
|
free(ba); |
|
return 1; |
return 1; |
} |
} |
|
|
Line 200 main(int argc, char **argv)
|
Line 173 main(int argc, char **argv)
|
|
|
VERB(1) printf("\r\nFinish client.\r\n"); |
VERB(1) printf("\r\nFinish client.\r\n"); |
close(h); |
close(h); |
if (ba) |
|
free(ba); |
|
return 0; |
return 0; |
} |
} |