From f3b9e5fa8ef1a9d2fa34834164baf3c5dbdecf20 Mon Sep 17 00:00:00 2001
From: Martine Lenders <mlenders@inf.fu-berlin.de>
Date: Sun, 20 Sep 2015 15:49:44 +0200
Subject: [PATCH] gnrc_sixlowpan_nd_router: cast before shifting

`avr-gcc` was complaining about shifting the value out of the width of
type. This is a fix for that.
---
 .../sixlowpan/nd/router/gnrc_sixlowpan_nd_router.c        | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/sys/net/gnrc/network_layer/sixlowpan/nd/router/gnrc_sixlowpan_nd_router.c b/sys/net/gnrc/network_layer/sixlowpan/nd/router/gnrc_sixlowpan_nd_router.c
index e19bd0c7bf..ca44f44fa0 100644
--- a/sys/net/gnrc/network_layer/sixlowpan/nd/router/gnrc_sixlowpan_nd_router.c
+++ b/sys/net/gnrc/network_layer/sixlowpan/nd/router/gnrc_sixlowpan_nd_router.c
@@ -149,8 +149,8 @@ bool gnrc_sixlowpan_nd_router_abr_older(sixlowpan_nd_opt_abr_t *abr_opt)
         return false;
     }
 
-    version = byteorder_ntohs(abr_opt->vlow);
-    version |= byteorder_ntohs(abr_opt->vhigh) << 16;
+    version = (uint32_t)byteorder_ntohs(abr_opt->vlow);
+    version |= ((uint32_t)byteorder_ntohs(abr_opt->vhigh)) << 16;
 
     return (version < abr->version);
 }
@@ -223,8 +223,8 @@ void gnrc_sixlowpan_nd_opt_abr_handle(kernel_pid_t iface, ndp_rtr_adv_t *rtr_adv
         sicmpv6_size -= (opt->len * 8);
     }
 
-    abr->version = byteorder_ntohs(abr_opt->vlow);
-    abr->version |= byteorder_ntohs(abr_opt->vhigh) << 16;
+    abr->version = (uint32_t)byteorder_ntohs(abr_opt->vlow);
+    abr->version |= ((uint32_t)byteorder_ntohs(abr_opt->vhigh)) << 16;
     abr->addr.u64[0] = abr_opt->braddr.u64[0];
     abr->addr.u64[1] = abr_opt->braddr.u64[1];
     memset(abr->ctxs, 0, sizeof(abr->ctxs));
-- 
GitLab