Remove all casting from the sockaddr code.

This commit is contained in:
Ed Schouten 2011-06-28 12:20:21 +02:00
parent d97d1b72d7
commit 631c5990f7
1 changed files with 15 additions and 12 deletions

View File

@ -356,7 +356,11 @@ calcresponse(uint32_t key1, uint32_t key2, const char *key3, char *out)
int
main(int argc, char *argv[])
{
struct sockaddr_storage sa;
union {
struct sockaddr sa;
struct sockaddr_in sa_in;
struct sockaddr_in6 sa_in6;
} sa;
char line[512], key3[8], response[16], *host = NULL, *origin = NULL;
unsigned long minport, maxport, port;
uint32_t key1 = 0, key2 = 0;
@ -411,31 +415,30 @@ main(int argc, char *argv[])
/* Use our own address. Fall back to 127.0.0.1 on failure. */
salen = sizeof sa;
if (getsockname(STDIN_FILENO, (struct sockaddr *)&sa, &salen) == -1) {
struct sockaddr_in *sin = (struct sockaddr_in *)&sa;
salen = sizeof *sin;
memset(sin, 0, salen);
sin->sin_family = AF_INET;
sin->sin_addr.s_addr = inet_addr("127.0.0.1");
if (getsockname(STDIN_FILENO, &sa.sa, &salen) == -1) {
salen = sizeof sa.sa_in;
memset(&sa.sa_in, 0, salen);
sa.sa_in.sin_family = AF_INET;
sa.sa_in.sin_addr.s_addr = inet_addr("127.0.0.1");
}
switch (sa.ss_family) {
switch (sa.sa.sa_family) {
case AF_INET:
((struct sockaddr_in *)&sa)->sin_port = htons(port);
sa.sa_in.sin_port = htons(port);
break;
case AF_INET6:
((struct sockaddr_in6 *)&sa)->sin6_port = htons(port);
sa.sa_in6.sin6_port = htons(port);
break;
default:
/* Unknown protocol. */
fprintf(stderr, "unsupported network protocol\n");
return (1);
}
s = socket(sa.ss_family, SOCK_STREAM, 0);
s = socket(sa.sa.sa_family, SOCK_STREAM, 0);
if (s == -1) {
perror("socket");
return (1);
}
if (connect(s, (struct sockaddr *)&sa, salen) == -1) {
if (connect(s, &sa.sa, salen) == -1) {
perror("connect");
return (1);
}