@@ -28,7 +28,8 @@ Network::Network(const std::string &network)
2828
2929 std::memcpy (this ->data .data (), &tmpaddr, sizeof (tmpaddr));
3030
31- uint32_t _netmask = (uint64_t )0xFFFFFFFFu << (32 - maskbits);
31+ const uint64_t bits {0xFFFFFFFFu };
32+ uint32_t _netmask {static_cast <uint32_t >( (bits << (32 - maskbits)) & 0xFFFFFFFFu )};
3233 this ->in_mask = htonl (_netmask);
3334
3435 this ->family = AF_INET;
@@ -69,18 +70,18 @@ Network::Network(const std::string &network)
6970 }
7071
7172 int m = maskbits;
72- int i = 0 ;
73+ size_t i = 0 ;
7374 const uint64_t x{0xFFFFFFFF00000000 };
7475
7576 while (m > 0 )
7677 {
7778 int shift_remainder = std::min<int >(m, 32 );
78- uint32_t b = x >> shift_remainder;
79+ const uint32_t b { static_cast < uint32_t >( ( x >> shift_remainder) & 0xFFFFFFFFu )} ;
7980 in6_mask.at (i++) = htonl (b);
8081 m -= 32 ;
8182 }
8283
83- for (int i = 0 ; i < 4 ; i++)
84+ for (size_t i = 0 ; i < 4 ; i++)
8485 {
8586 network_addr_relevant_bits.__in6_u .__u6_addr32 [i] = tmpaddr.sin6_addr .__in6_u .__u6_addr32 [i] & in6_mask.at (i);
8687 }
@@ -116,7 +117,7 @@ bool Network::match(const sockaddr *addr) const
116117 std::memcpy (&tmp_arg, addr, sizeof (tmp_arg));
117118
118119 struct in6_addr arg_addr_relevant_bits;
119- for (int i = 0 ; i < 4 ; i++)
120+ for (size_t i = 0 ; i < 4 ; i++)
120121 {
121122 arg_addr_relevant_bits.__in6_u .__u6_addr32 [i] = tmp_arg.sin6_addr .__in6_u .__u6_addr32 [i] & in6_mask.at (i);
122123 }
0 commit comments