Clean up uses of sockaddr_storage

This commit is contained in:
frekky 2016-03-15 20:34:07 +08:00
parent 5681caad55
commit fa4bc66d44
2 changed files with 12 additions and 14 deletions

View File

@ -71,8 +71,7 @@ static const char *password;
static struct socket *nameserv_addrs; static struct socket *nameserv_addrs;
static int nameserv_addrs_len; static int nameserv_addrs_len;
static int current_nameserver; static int current_nameserver;
static struct sockaddr_storage raw_serv; static struct socket raw_serv;
static int raw_serv_len;
static const char *topdomain; static const char *topdomain;
static uint16_t rand_seed; static uint16_t rand_seed;
@ -328,7 +327,7 @@ client_set_hostname_maxlen(size_t i)
const char * const char *
client_get_raw_addr() client_get_raw_addr()
{ {
return format_addr(&raw_serv, raw_serv_len); return format_addr(&raw_serv.addr, raw_serv.length);
} }
void void
@ -614,7 +613,7 @@ send_raw(int fd, uint8_t *buf, size_t buflen, int user, int cmd)
len += RAW_HDR_LEN; len += RAW_HDR_LEN;
packet[RAW_HDR_CMD] = (cmd & 0xF0) | (user & 0x0F); packet[RAW_HDR_CMD] = (cmd & 0xF0) | (user & 0x0F);
sendto(fd, packet, len, 0, (struct sockaddr*)&raw_serv, sizeof(raw_serv)); sendto(fd, packet, len, 0, (struct sockaddr*)&raw_serv.addr, raw_serv.length);
} }
static void static void
@ -892,14 +891,13 @@ read_dns_withq(int dns_fd, int tun_fd, uint8_t *buf, size_t buflen, struct query
Returns >0 on correct replies; value is #valid bytes in *buf. Returns >0 on correct replies; value is #valid bytes in *buf.
*/ */
{ {
struct sockaddr_storage from; struct socket from;
uint8_t data[64*1024]; uint8_t data[64*1024];
socklen_t addrlen;
int r; int r;
addrlen = sizeof(from); from.length = sizeof(from.addr);
if ((r = recvfrom(dns_fd, data, sizeof(data), 0, if ((r = recvfrom(dns_fd, data, sizeof(data), 0,
(struct sockaddr*)&from, &addrlen)) < 0) { (struct sockaddr*)&from.addr, &from.length)) < 0) {
warn("recvfrom"); warn("recvfrom");
return -1; return -1;
} }
@ -1801,21 +1799,21 @@ handshake_raw_udp(int dns_fd, int seed)
if (len == 5 && in[0] == 'I') { if (len == 5 && in[0] == 'I') {
/* Received IPv4 address */ /* Received IPv4 address */
struct sockaddr_in *raw4_serv = (struct sockaddr_in *) &raw_serv; struct sockaddr_in *raw4_serv = (struct sockaddr_in *) &raw_serv.addr;
raw4_serv->sin_family = AF_INET; raw4_serv->sin_family = AF_INET;
memcpy(&raw4_serv->sin_addr, &in[1], sizeof(struct in_addr)); memcpy(&raw4_serv->sin_addr, &in[1], sizeof(struct in_addr));
raw4_serv->sin_port = htons(53); raw4_serv->sin_port = htons(53);
raw_serv_len = sizeof(struct sockaddr_in); raw_serv.length = sizeof(struct sockaddr_in);
got_addr = 1; got_addr = 1;
break; break;
} }
if (len == 17 && in[0] == 'I') { if (len == 17 && in[0] == 'I') {
/* Received IPv6 address */ /* Received IPv6 address */
struct sockaddr_in6 *raw6_serv = (struct sockaddr_in6 *) &raw_serv; struct sockaddr_in6 *raw6_serv = (struct sockaddr_in6 *) &raw_serv.addr;
raw6_serv->sin6_family = AF_INET6; raw6_serv->sin6_family = AF_INET6;
memcpy(&raw6_serv->sin6_addr, &in[1], sizeof(struct in6_addr)); memcpy(&raw6_serv->sin6_addr, &in[1], sizeof(struct in6_addr));
raw6_serv->sin6_port = htons(53); raw6_serv->sin6_port = htons(53);
raw_serv_len = sizeof(struct sockaddr_in6); raw_serv.length = sizeof(struct sockaddr_in6);
got_addr = 1; got_addr = 1;
break; break;
} }
@ -1831,7 +1829,7 @@ handshake_raw_udp(int dns_fd, int seed)
fprintf(stderr, "Failed to get raw server IP, will use DNS mode.\n"); fprintf(stderr, "Failed to get raw server IP, will use DNS mode.\n");
return 0; return 0;
} }
fprintf(stderr, "Server is at %s, trying raw login: ", format_addr(&raw_serv, raw_serv_len)); fprintf(stderr, "Server is at %s, trying raw login: ", format_addr(&raw_serv.addr, raw_serv.length));
fflush(stderr); fflush(stderr);
/* do login against port 53 on remote server /* do login against port 53 on remote server

View File

@ -122,7 +122,7 @@ struct query {
}; };
struct socket { struct socket {
size_t length; socklen_t length;
struct sockaddr_storage addr; struct sockaddr_storage addr;
}; };