svn commit: r222444 - head/contrib/ntp/ntpd
Bjoern A. Zeeb
bz at FreeBSD.org
Sun May 29 07:40:49 UTC 2011
Author: bz
Date: Sun May 29 07:40:48 2011
New Revision: 222444
URL: http://svn.freebsd.org/changeset/base/222444
Log:
The argument to setsockopt for IP_MULTICAST_LOOP depends on operating
system and is decided upon by configure and could be an u_int or a
u_char. For FreeBSD it is a u_char.
For IPv6 however RFC 3493, 5.2 defines the argument to
IPV6_MULTICAST_LOOP to be an unsigned integer so make sure we always
use that using a second variable for the IPV6 case.
This is to get rid of these error messages every 5 minutes on some
systems:
ntpd[1530]: setsockopt IPV6_MULTICAST_LOOP failure: Invalid argument
on socket 22, addr fe80::... for multicast address ff02::101
While here also fix the copy&paste error in the log message for
IPV6_MULTICAST_LOOP.
Reviewed by: roberto
Sponsored by: The FreeBSD Foundation
Sponsored by: iXsystems
MFC after: 10 days
Filed as: Bug 1936 on ntp.org
Modified:
head/contrib/ntp/ntpd/ntp_io.c
Modified: head/contrib/ntp/ntpd/ntp_io.c
==============================================================================
--- head/contrib/ntp/ntpd/ntp_io.c Sun May 29 05:45:56 2011 (r222443)
+++ head/contrib/ntp/ntpd/ntp_io.c Sun May 29 07:40:48 2011 (r222444)
@@ -1753,7 +1753,12 @@ void
enable_multicast_if(struct interface *iface, struct sockaddr_storage *maddr)
{
#ifdef MCAST
+#ifdef IP_MULTICAST_LOOP
/*u_char*/ TYPEOF_IP_MULTICAST_LOOP off = 0;
+#endif
+#ifdef IPV6_MULTICAST_LOOP
+ u_int off6 = 0; /* RFC 3493, 5.2. defines type unsigned int */
+#endif
switch (maddr->ss_family)
{
@@ -1797,9 +1802,9 @@ enable_multicast_if(struct interface *if
* Don't send back to itself, but allow it to fail to set it
*/
if (setsockopt(iface->fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP,
- (char *) &off, sizeof(off)) == -1) {
+ (char *) &off6, sizeof(off6)) == -1) {
netsyslog(LOG_ERR,
- "setsockopt IP_MULTICAST_LOOP failure: %m on socket %d, addr %s for multicast address %s",
+ "setsockopt IPV6_MULTICAST_LOOP failure: %m on socket %d, addr %s for multicast address %s",
iface->fd, stoa(&iface->sin), stoa(maddr));
}
#endif
More information about the svn-src-all
mailing list