Skip to content

Commit 033f5ae

Browse files
committed
Remove duplicate address family from listener
Since address already contain family, remove separate family from listener. Use now family from address itself.
1 parent 9ded4d3 commit 033f5ae

File tree

4 files changed

+30
-29
lines changed

4 files changed

+30
-29
lines changed

src/dnsmasq.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ struct irec {
564564
};
565565

566566
struct listener {
567-
int fd, tcpfd, tftpfd, family, used;
567+
int fd, tcpfd, tftpfd, used;
568568
union mysockaddr addr;
569569
struct irec *iface; /* only sometimes valid for non-wildcard */
570570
struct listener *next;

src/forward.c

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1271,8 +1271,9 @@ void receive_query(struct listener *listen, time_t now)
12711271
CMSG_SPACE(sizeof(struct sockaddr_dl))];
12721272
#endif
12731273
} control_u;
1274+
int family = listen->addr.sa.sa_family;
12741275
/* Can always get recvd interface for IPv6 */
1275-
int check_dst = !option_bool(OPT_NOWILD) || listen->family == AF_INET6;
1276+
int check_dst = !option_bool(OPT_NOWILD) || family == AF_INET6;
12761277

12771278
/* packet buffer overwritten */
12781279
daemon->srv_save = NULL;
@@ -1284,7 +1285,7 @@ void receive_query(struct listener *listen, time_t now)
12841285
{
12851286
auth_dns = listen->iface->dns_auth;
12861287

1287-
if (listen->family == AF_INET)
1288+
if (family == AF_INET)
12881289
{
12891290
dst_addr_4 = dst_addr.addr4 = listen->iface->addr.in.sin_addr;
12901291
netmask = listen->iface->netmask;
@@ -1314,9 +1315,9 @@ void receive_query(struct listener *listen, time_t now)
13141315
information disclosure. */
13151316
memset(daemon->packet + n, 0, daemon->edns_pktsz - n);
13161317

1317-
source_addr.sa.sa_family = listen->family;
1318+
source_addr.sa.sa_family = family;
13181319

1319-
if (listen->family == AF_INET)
1320+
if (family == AF_INET)
13201321
{
13211322
/* Source-port == 0 is an error, we can't send back to that.
13221323
http://www.ietf.org/mail-archive/web/dnsop/current/msg11441.html */
@@ -1336,7 +1337,7 @@ void receive_query(struct listener *listen, time_t now)
13361337
{
13371338
struct addrlist *addr;
13381339

1339-
if (listen->family == AF_INET6)
1340+
if (family == AF_INET6)
13401341
{
13411342
for (addr = daemon->interface_addrs; addr; addr = addr->next)
13421343
if ((addr->flags & ADDRLIST_IPV6) &&
@@ -1374,7 +1375,7 @@ void receive_query(struct listener *listen, time_t now)
13741375
return;
13751376

13761377
#if defined(HAVE_LINUX_NETWORK)
1377-
if (listen->family == AF_INET)
1378+
if (family == AF_INET)
13781379
for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
13791380
if (cmptr->cmsg_level == IPPROTO_IP && cmptr->cmsg_type == IP_PKTINFO)
13801381
{
@@ -1387,7 +1388,7 @@ void receive_query(struct listener *listen, time_t now)
13871388
if_index = p.p->ipi_ifindex;
13881389
}
13891390
#elif defined(IP_RECVDSTADDR) && defined(IP_RECVIF)
1390-
if (listen->family == AF_INET)
1391+
if (family == AF_INET)
13911392
{
13921393
for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
13931394
{
@@ -1412,7 +1413,7 @@ void receive_query(struct listener *listen, time_t now)
14121413
}
14131414
#endif
14141415

1415-
if (listen->family == AF_INET6)
1416+
if (family == AF_INET6)
14161417
{
14171418
for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
14181419
if (cmptr->cmsg_level == IPPROTO_IPV6 && cmptr->cmsg_type == daemon->v6pktinfo)
@@ -1433,16 +1434,16 @@ void receive_query(struct listener *listen, time_t now)
14331434
if (!indextoname(listen->fd, if_index, ifr.ifr_name))
14341435
return;
14351436

1436-
if (!iface_check(listen->family, &dst_addr, ifr.ifr_name, &auth_dns))
1437+
if (!iface_check(family, &dst_addr, ifr.ifr_name, &auth_dns))
14371438
{
14381439
if (!option_bool(OPT_CLEVERBIND))
14391440
enumerate_interfaces(0);
1440-
if (!loopback_exception(listen->fd, listen->family, &dst_addr, ifr.ifr_name) &&
1441-
!label_exception(if_index, listen->family, &dst_addr))
1441+
if (!loopback_exception(listen->fd, family, &dst_addr, ifr.ifr_name) &&
1442+
!label_exception(if_index, family, &dst_addr))
14421443
return;
14431444
}
14441445

1445-
if (listen->family == AF_INET && option_bool(OPT_LOCALISE))
1446+
if (family == AF_INET && option_bool(OPT_LOCALISE))
14461447
{
14471448
struct irec *iface;
14481449

@@ -1487,7 +1488,7 @@ void receive_query(struct listener *listen, time_t now)
14871488
#endif
14881489
char *types = querystr(auth_dns ? "auth" : "query", type);
14891490

1490-
if (listen->family == AF_INET)
1491+
if (family == AF_INET)
14911492
log_query(F_QUERY | F_IPV4 | F_FORWARD, daemon->namebuff,
14921493
(union all_addr *)&source_addr.in.sin_addr, types);
14931494
else

src/network.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -962,7 +962,6 @@ static struct listener *create_listeners(union mysockaddr *addr, int do_tftp, in
962962
{
963963
l = safe_malloc(sizeof(struct listener));
964964
l->next = NULL;
965-
l->family = addr->sa.sa_family;
966965
l->fd = fd;
967966
l->tcpfd = tcpfd;
968967
l->tftpfd = tftpfd;

src/tftp.c

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,9 @@ void tftp_request(struct listener *listen, time_t now)
6060
char *prefix = daemon->tftp_prefix;
6161
struct tftp_prefix *pref;
6262
union all_addr addra;
63+
int family = listen->addr.sa.sa_family;
6364
/* Can always get recvd interface for IPv6 */
64-
int check_dest = !option_bool(OPT_NOWILD) || listen->family == AF_INET6;
65+
int check_dest = !option_bool(OPT_NOWILD) || family == AF_INET6;
6566
union {
6667
struct cmsghdr align; /* this ensures alignment */
6768
char control6[CMSG_SPACE(sizeof(struct in6_pktinfo))];
@@ -118,10 +119,10 @@ void tftp_request(struct listener *listen, time_t now)
118119
if (msg.msg_controllen < sizeof(struct cmsghdr))
119120
return;
120121

121-
addr.sa.sa_family = listen->family;
122+
addr.sa.sa_family = family;
122123

123124
#if defined(HAVE_LINUX_NETWORK)
124-
if (listen->family == AF_INET)
125+
if (family == AF_INET)
125126
for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
126127
if (cmptr->cmsg_level == IPPROTO_IP && cmptr->cmsg_type == IP_PKTINFO)
127128
{
@@ -135,7 +136,7 @@ void tftp_request(struct listener *listen, time_t now)
135136
}
136137

137138
#elif defined(HAVE_SOLARIS_NETWORK)
138-
if (listen->family == AF_INET)
139+
if (family == AF_INET)
139140
for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
140141
{
141142
union {
@@ -151,7 +152,7 @@ void tftp_request(struct listener *listen, time_t now)
151152
}
152153

153154
#elif defined(IP_RECVDSTADDR) && defined(IP_RECVIF)
154-
if (listen->family == AF_INET)
155+
if (family == AF_INET)
155156
for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
156157
{
157158
union {
@@ -168,7 +169,7 @@ void tftp_request(struct listener *listen, time_t now)
168169

169170
#endif
170171

171-
if (listen->family == AF_INET6)
172+
if (family == AF_INET6)
172173
{
173174
for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
174175
if (cmptr->cmsg_level == IPPROTO_IPV6 && cmptr->cmsg_type == daemon->v6pktinfo)
@@ -191,7 +192,7 @@ void tftp_request(struct listener *listen, time_t now)
191192

192193
addra.addr4 = addr.in.sin_addr;
193194

194-
if (listen->family == AF_INET6)
195+
if (family == AF_INET6)
195196
addra.addr6 = addr.in6.sin6_addr;
196197

197198
if (daemon->tftp_interfaces)
@@ -207,12 +208,12 @@ void tftp_request(struct listener *listen, time_t now)
207208
else
208209
{
209210
/* Do the same as DHCP */
210-
if (!iface_check(listen->family, &addra, name, NULL))
211+
if (!iface_check(family, &addra, name, NULL))
211212
{
212213
if (!option_bool(OPT_CLEVERBIND))
213214
enumerate_interfaces(0);
214-
if (!loopback_exception(listen->tftpfd, listen->family, &addra, name) &&
215-
!label_exception(if_index, listen->family, &addra))
215+
if (!loopback_exception(listen->tftpfd, family, &addra, name) &&
216+
!label_exception(if_index, family, &addra))
216217
return;
217218
}
218219

@@ -245,7 +246,7 @@ void tftp_request(struct listener *listen, time_t now)
245246
prefix = pref->prefix;
246247
}
247248

248-
if (listen->family == AF_INET)
249+
if (family == AF_INET)
249250
{
250251
addr.in.sin_port = htons(port);
251252
#ifdef HAVE_SOCKADDR_SA_LEN
@@ -265,7 +266,7 @@ void tftp_request(struct listener *listen, time_t now)
265266
if (!(transfer = whine_malloc(sizeof(struct tftp_transfer))))
266267
return;
267268

268-
if ((transfer->sockfd = socket(listen->family, SOCK_DGRAM, 0)) == -1)
269+
if ((transfer->sockfd = socket(family, SOCK_DGRAM, 0)) == -1)
269270
{
270271
free(transfer);
271272
return;
@@ -296,7 +297,7 @@ void tftp_request(struct listener *listen, time_t now)
296297
{
297298
if (++port <= daemon->end_tftp_port)
298299
{
299-
if (listen->family == AF_INET)
300+
if (family == AF_INET)
300301
addr.in.sin_port = htons(port);
301302
else
302303
addr.in6.sin6_port = htons(port);
@@ -334,7 +335,7 @@ void tftp_request(struct listener *listen, time_t now)
334335
if ((opt = next(&p, end)) && !option_bool(OPT_TFTP_NOBLOCK))
335336
{
336337
/* 32 bytes for IP, UDP and TFTP headers, 52 bytes for IPv6 */
337-
int overhead = (listen->family == AF_INET) ? 32 : 52;
338+
int overhead = (family == AF_INET) ? 32 : 52;
338339
transfer->blocksize = atoi(opt);
339340
if (transfer->blocksize < 1)
340341
transfer->blocksize = 1;

0 commit comments

Comments
 (0)