svn commit: r305558 - in stable: 10/sys/netinet 11/sys/netinet 9/sys/netinet

Dimitry Andric dim at FreeBSD.org
Wed Sep 7 19:25:10 UTC 2016


Author: dim
Date: Wed Sep  7 19:25:08 2016
New Revision: 305558
URL: https://svnweb.freebsd.org/changeset/base/305558

Log:
  MFC r305389:
  
  With clang 3.9.0, compiling sys/netinet/igmp.c results in the following
  warning:
  
  sys/netinet/igmp.c:546:21: error: implicit conversion from 'int' to 'char' changes value from 148 to -108 [-Werror,-Wconstant-conversion]
          p->ipopt_list[0] = IPOPT_RA;    /* Router Alert Option */
                           ~ ^~~~~~~~
  sys/netinet/ip.h:153:19: note: expanded from macro 'IPOPT_RA'
  #define IPOPT_RA                148             /* router alert */
                                  ^~~
  
  This is because ipopt_list is an array of char, so IPOPT_RA is wrapped
  to a negative value.  It would be nice to change ipopt_list to an array
  of u_char, but it changes the signature of the public struct ipoption,
  so add an explicit cast to suppress the warning.
  
  Reviewed by:	imp
  Differential Revision: https://reviews.freebsd.org/D7777

Modified:
  stable/9/sys/netinet/igmp.c
Directory Properties:
  stable/9/   (props changed)
  stable/9/sys/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/sys/netinet/igmp.c
  stable/11/sys/netinet/igmp.c
Directory Properties:
  stable/10/   (props changed)
  stable/11/   (props changed)

Modified: stable/9/sys/netinet/igmp.c
==============================================================================
--- stable/9/sys/netinet/igmp.c	Wed Sep  7 19:21:52 2016	(r305557)
+++ stable/9/sys/netinet/igmp.c	Wed Sep  7 19:25:08 2016	(r305558)
@@ -526,10 +526,10 @@ igmp_ra_alloc(void)
 	MGET(m, M_DONTWAIT, MT_DATA);
 	p = mtod(m, struct ipoption *);
 	p->ipopt_dst.s_addr = INADDR_ANY;
-	p->ipopt_list[0] = IPOPT_RA;	/* Router Alert Option */
-	p->ipopt_list[1] = 0x04;	/* 4 bytes long */
-	p->ipopt_list[2] = IPOPT_EOL;	/* End of IP option list */
-	p->ipopt_list[3] = 0x00;	/* pad byte */
+	p->ipopt_list[0] = (char)IPOPT_RA;	/* Router Alert Option */
+	p->ipopt_list[1] = 0x04;		/* 4 bytes long */
+	p->ipopt_list[2] = IPOPT_EOL;		/* End of IP option list */
+	p->ipopt_list[3] = 0x00;		/* pad byte */
 	m->m_len = sizeof(p->ipopt_dst) + p->ipopt_list[1];
 
 	return (m);


More information about the svn-src-all mailing list