sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len)
{
int count;
- char ip_str[INET_ADDRSTRLEN+1];
+ char ip_str[INET6_ADDRSTRLEN+1];
char *next_ip_str;
uint32_t *ip_wire_dst;
size_t i;
while (count) {
if (!(next_ip_str = strchr(val, ','))) {
- if (inet_pton(AF_INET, val, rd + *rd_len) != 1)
- *rd_len += LDNS_IP6ADDRLEN;
+ if (inet_pton(AF_INET6, val, rd + *rd_len) != 1)
break;
+ *rd_len += LDNS_IP6ADDRLEN;
assert(count == 1);
else {
memcpy(ip_str, val, next_ip_str - val);
ip_str[next_ip_str - val] = 0;
- if (inet_pton(AF_INET, ip_str, rd + *rd_len) != 1) {
- *rd_len += LDNS_IP6ADDRLEN;
-
+ if (inet_pton(AF_INET6, ip_str, rd + *rd_len) != 1) {
val = ip_str; /* to use in error reporting below */
break;
}
+ *rd_len += LDNS_IP6ADDRLEN;
val = next_ip_str + 1;
}
return 0; /* wireformat error, incorrect size or inet family */
w += sldns_str_print(s, slen, "=%s", ip_str);
- data += LDNS_IP6ADDRLEN / sizeof(uint16_t);
+ data += LDNS_IP6ADDRLEN;
while ((data_len -= LDNS_IP6ADDRLEN) > 0) {
if (inet_ntop(AF_INET6, data, ip_str, sizeof(ip_str)) == NULL)
return 0; /* wireformat error, incorrect size or inet family */
w += sldns_str_print(s, slen, ",%s", ip_str);
- data += LDNS_IP6ADDRLEN / sizeof(uint16_t);
+ data += LDNS_IP6ADDRLEN;
}
}