Author: dim
Date: Tue Nov 25 13:12:45 2014
New Revision: 275038
URL: https://svnweb.freebsd.org/changeset/base/275038

Log:
  MFC r274898:
  
  Fix the following -Werror warnings from clang 3.5.0, while building
  usr.sbin/rtadvd:
  
  usr.sbin/rtadvd/rtadvd.c:1291:7: error: taking the absolute value of unsigned 
type 'unsigned int' has no effect [-Werror,-Wabsolute-value]
                      abs(preferred_time - pfx->pfx_pltimeexpire) > 
rai->rai_clockskew) {
                      ^
  usr.sbin/rtadvd/rtadvd.c:1291:7: note: remove the call to 'abs' since 
unsigned values cannot be negative
                      abs(preferred_time - pfx->pfx_pltimeexpire) > 
rai->rai_clockskew) {
                      ^~~
  usr.sbin/rtadvd/rtadvd.c:1324:7: error: taking the absolute value of unsigned 
type 'unsigned int' has no effect [-Werror,-Wabsolute-value]
                      abs(valid_time - pfx->pfx_vltimeexpire) > 
rai->rai_clockskew) {
                      ^
  usr.sbin/rtadvd/rtadvd.c:1324:7: note: remove the call to 'abs' since 
unsigned values cannot be negative
                      abs(valid_time - pfx->pfx_vltimeexpire) > 
rai->rai_clockskew) {
                      ^~~
  2 errors generated.
  
  These warnings occur because both preferred_time and pfx_pltimeexpire
  are uint32_t's, so the subtraction expression is also unsigned, and
  calling abs() is a no-op.
  
  However, the intention was to look at the absolute difference between
  the two unsigned quantities.  Introduce a small static function to
  clarify what we're doing, and call that instead.
  
  Reviewed by:  hrs
  Differential Revision: https://reviews.freebsd.org/D1197

Modified:
  stable/8/usr.sbin/rtadvd/rtadvd.c
Directory Properties:
  stable/8/usr.sbin/rtadvd/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/usr.sbin/rtadvd/rtadvd.c
  stable/9/usr.sbin/rtadvd/rtadvd.c
Directory Properties:
  stable/10/   (props changed)
  stable/9/usr.sbin/rtadvd/   (props changed)

Modified: stable/8/usr.sbin/rtadvd/rtadvd.c
==============================================================================
--- stable/8/usr.sbin/rtadvd/rtadvd.c   Tue Nov 25 13:06:47 2014        
(r275037)
+++ stable/8/usr.sbin/rtadvd/rtadvd.c   Tue Nov 25 13:12:45 2014        
(r275038)
@@ -1225,6 +1225,12 @@ ra_input(int len, struct nd_router_adver
        return;
 }
 
+static uint32_t
+udiff(uint32_t u, uint32_t v)
+{
+       return (u >= v ? u - v : v - u);
+}
+
 /* return a non-zero value if the received prefix is inconsitent with ours */
 static int
 prefix_check(struct nd_opt_prefix_info *pinfo,
@@ -1283,7 +1289,7 @@ prefix_check(struct nd_opt_prefix_info *
                preferred_time += now.tv_sec;
 
                if (!pfx->pfx_timer && rai->rai_clockskew &&
-                   abs(preferred_time - pfx->pfx_pltimeexpire) > 
rai->rai_clockskew) {
+                   udiff(preferred_time, pfx->pfx_pltimeexpire) > 
rai->rai_clockskew) {
                        syslog(LOG_INFO,
                            "<%s> preferred lifetime for %s/%d"
                            " (decr. in real time) inconsistent on %s:"
@@ -1316,7 +1322,7 @@ prefix_check(struct nd_opt_prefix_info *
                valid_time += now.tv_sec;
 
                if (!pfx->pfx_timer && rai->rai_clockskew &&
-                   abs(valid_time - pfx->pfx_vltimeexpire) > 
rai->rai_clockskew) {
+                   udiff(valid_time, pfx->pfx_vltimeexpire) > 
rai->rai_clockskew) {
                        syslog(LOG_INFO,
                            "<%s> valid lifetime for %s/%d"
                            " (decr. in real time) inconsistent on %s:"
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to