mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 22:45:39 +00:00
1081. [bug] Multicast queries were incorrectly identified
based on the source address, not the destination address. (from JINMEI Tatuya)
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: socket.c,v 1.210 2001/10/22 20:57:41 gson Exp $ */
|
||||
/* $Id: socket.c,v 1.211 2001/10/31 01:24:58 gson Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -489,10 +489,7 @@ process_cmsg(isc_socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) {
|
||||
UNUSED(msg);
|
||||
UNUSED(dev);
|
||||
|
||||
#ifndef ISC_NET_BSD44MSGHDR
|
||||
return;
|
||||
|
||||
#else /* defined ISC_NET_BSD44MSGHDR */
|
||||
#ifdef ISC_NET_BSD44MSGHDR
|
||||
|
||||
#ifdef MSG_TRUNC
|
||||
if ((msg->msg_flags & MSG_TRUNC) == MSG_TRUNC)
|
||||
@@ -504,12 +501,6 @@ process_cmsg(isc_socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) {
|
||||
dev->attributes |= ISC_SOCKEVENTATTR_CTRUNC;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Check for multicast.
|
||||
*/
|
||||
if (isc_sockaddr_ismulticast(&dev->address))
|
||||
dev->attributes |= ISC_SOCKEVENTATTR_MULTICAST;
|
||||
|
||||
#ifndef USE_CMSG
|
||||
return;
|
||||
#else
|
||||
@@ -542,6 +533,8 @@ process_cmsg(isc_socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) {
|
||||
ISC_MSG_IFRECEIVED,
|
||||
"interface received on ifindex %u",
|
||||
dev->pktinfo.ipi6_ifindex);
|
||||
if (IN6_IS_ADDR_MULTICAST(&pktinfop->ipi6_addr))
|
||||
dev->attributes |= ISC_SOCKEVENTATTR_MULTICAST;
|
||||
goto next;
|
||||
}
|
||||
#endif
|
||||
@@ -563,7 +556,6 @@ process_cmsg(isc_socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) {
|
||||
#endif /* USE_CMSG */
|
||||
|
||||
#endif /* ISC_NET_BSD44MSGHDR */
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user