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