Remove nested struct/union in cache records and all_addr.

This commit is contained in:
Simon Kelley
2019-01-02 22:48:59 +00:00
parent ab194ed7ca
commit cc921df9ce
23 changed files with 336 additions and 335 deletions

View File

@@ -143,7 +143,7 @@ int extract_name(struct dns_header *header, size_t plen, unsigned char **pp,
/* Max size of input string (for IPv6) is 75 chars.) */
#define MAXARPANAME 75
int in_arpa_name_2_addr(char *namein, struct all_addr *addrp)
int in_arpa_name_2_addr(char *namein, union all_addr *addrp)
{
int j;
char name[MAXARPANAME+1], *cp1;
@@ -153,7 +153,7 @@ int in_arpa_name_2_addr(char *namein, struct all_addr *addrp)
if (strlen(namein) > MAXARPANAME)
return 0;
memset(addrp, 0, sizeof(struct all_addr));
memset(addrp, 0, sizeof(union all_addr));
/* turn name into a series of asciiz strings */
/* j counts no. of labels */
@@ -234,7 +234,7 @@ int in_arpa_name_2_addr(char *namein, struct all_addr *addrp)
if (*(cp1+1) || !isxdigit((unsigned char)*cp1))
return 0;
for (j = sizeof(struct all_addr)-1; j>0; j--)
for (j = sizeof(struct in6_addr)-1; j>0; j--)
addr[j] = (addr[j] >> 4) | (addr[j-1] << 4);
addr[0] = (addr[0] >> 4) | (strtol(cp1, NULL, 16) << 4);
}
@@ -585,7 +585,7 @@ int extract_addresses(struct dns_header *header, size_t qlen, char *name, time_t
unsigned char *p, *p1, *endrr, *namep;
int i, j, qtype, qclass, aqtype, aqclass, ardlen, res, searched_soa = 0;
unsigned long ttl = 0;
struct all_addr addr;
union all_addr addr;
#ifdef HAVE_IPSET
char **ipsets_cur;
#else
@@ -808,14 +808,14 @@ int extract_addresses(struct dns_header *header, size_t qlen, char *name, time_t
if (check_rebind)
{
if ((flags & F_IPV4) &&
private_net(addr.addr.addr4, !option_bool(OPT_LOCAL_REBIND)))
private_net(addr.addr4, !option_bool(OPT_LOCAL_REBIND)))
return 1;
if ((flags & F_IPV6) &&
IN6_IS_ADDR_V4MAPPED(&addr.addr.addr6))
IN6_IS_ADDR_V4MAPPED(&addr.addr6))
{
struct in_addr v4;
v4.s_addr = ((const uint32_t *) (&addr.addr.addr6))[3];
v4.s_addr = ((const uint32_t *) (&addr.addr6))[3];
if (private_net(v4, !option_bool(OPT_LOCAL_REBIND)))
return 1;
}
@@ -928,7 +928,7 @@ unsigned int extract_request(struct dns_header *header, size_t qlen, char *name,
}
size_t setup_reply(struct dns_header *header, size_t qlen,
struct all_addr *addrp, unsigned int flags, unsigned long ttl)
union all_addr *addrp, unsigned int flags, unsigned long ttl)
{
unsigned char *p;
@@ -949,8 +949,8 @@ size_t setup_reply(struct dns_header *header, size_t qlen,
SET_RCODE(header, NXDOMAIN);
else if (flags == F_SERVFAIL)
{
struct all_addr a;
a.addr.log.rcode = SERVFAIL;
union all_addr a;
a.log.rcode = SERVFAIL;
log_query(F_CONFIG | F_RCODE, "error", &a, NULL);
SET_RCODE(header, SERVFAIL);
}
@@ -974,8 +974,8 @@ size_t setup_reply(struct dns_header *header, size_t qlen,
}
else /* nowhere to forward to */
{
struct all_addr a;
a.addr.log.rcode = REFUSED;
union all_addr a;
a.log.rcode = REFUSED;
log_query(F_CONFIG | F_RCODE, "error", &a, NULL);
SET_RCODE(header, REFUSED);
}
@@ -1277,7 +1277,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
char *name = daemon->namebuff;
unsigned char *p, *ansp;
unsigned int qtype, qclass;
struct all_addr addr;
union all_addr addr;
int nameoffset;
unsigned short flag;
int q, ans, anscount = 0, addncount = 0;
@@ -1374,7 +1374,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
notimp = 1, auth = 0;
if (!dryrun)
{
addr.addr.log.rcode = NOTIMP;
addr.log.rcode = NOTIMP;
log_query(F_CONFIG | F_RCODE, name, &addr, NULL);
}
ans = 1, sec_data = 0;
@@ -1418,7 +1418,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
struct addrlist *addrlist;
for (addrlist = intr->addr; addrlist; addrlist = addrlist->next)
if (!(addrlist->flags & ADDRLIST_IPV6) && addr.addr.addr4.s_addr == addrlist->addr.addr.addr4.s_addr)
if (!(addrlist->flags & ADDRLIST_IPV6) && addr.addr4.s_addr == addrlist->addr.addr4.s_addr)
break;
if (addrlist)
@@ -1433,7 +1433,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
struct addrlist *addrlist;
for (addrlist = intr->addr; addrlist; addrlist = addrlist->next)
if ((addrlist->flags & ADDRLIST_IPV6) && IN6_ARE_ADDR_EQUAL(&addr.addr.addr6, &addrlist->addr.addr.addr6))
if ((addrlist->flags & ADDRLIST_IPV6) && IN6_ARE_ADDR_EQUAL(&addr.addr6, &addrlist->addr.addr6))
break;
if (addrlist)
@@ -1533,8 +1533,8 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
}
}
else if (option_bool(OPT_BOGUSPRIV) && (
(is_arpa == F_IPV6 && private_net6(&addr.addr.addr6)) ||
(is_arpa == F_IPV4 && private_net(addr.addr.addr4, 1))))
(is_arpa == F_IPV6 && private_net6(&addr.addr6)) ||
(is_arpa == F_IPV4 && private_net(addr.addr4, 1))))
{
struct server *serv;
unsigned int namelen = strlen(name);
@@ -1600,7 +1600,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
if (hostname_isequal(name, intr->name))
for (addrlist = intr->addr; addrlist; addrlist = addrlist->next)
if (!(addrlist->flags & ADDRLIST_IPV6) &&
is_same_net(*((struct in_addr *)&addrlist->addr), local_addr, local_netmask))
is_same_net(addrlist->addr.addr4, local_addr, local_netmask))
{
localise = 1;
break;
@@ -1613,7 +1613,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
if (((addrlist->flags & ADDRLIST_IPV6) ? T_AAAA : T_A) == type)
{
if (localise &&
!is_same_net(*((struct in_addr *)&addrlist->addr), local_addr, local_netmask))
!is_same_net(addrlist->addr.addr4, local_addr, local_netmask))
continue;
if (addrlist->flags & ADDRLIST_REVONLY)
@@ -1651,7 +1651,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
struct crec *save = crecp;
do {
if ((crecp->flags & F_HOSTS) &&
is_same_net(*((struct in_addr *)&crecp->addr), local_addr, local_netmask))
is_same_net(crecp->addr.addr4, local_addr, local_netmask))
{
localise = 1;
break;
@@ -1710,7 +1710,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
filter here. */
if (localise &&
(crecp->flags & F_HOSTS) &&
!is_same_net(*((struct in_addr *)&crecp->addr), local_addr, local_netmask))
!is_same_net(crecp->addr.addr4, local_addr, local_netmask))
continue;
if (!(crecp->flags & (F_HOSTS | F_DHCP)))
@@ -1719,7 +1719,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
ans = 1;
if (!dryrun)
{
log_query(crecp->flags & ~F_REVERSE, name, &crecp->addr.addr,
log_query(crecp->flags & ~F_REVERSE, name, &crecp->addr,
record_source(crecp->uid));
if (add_resource_record(header, limit, &trunc, nameoffset, &ansp,