IPv6: Fix net_ipv6_pref2mask()
Signed-off-by: Masayuki Ishikawa <masayuki.ishikawa@gmail.com>
This commit is contained in:
parent
f10e10e465
commit
980b17d951
@ -82,7 +82,7 @@ void net_ipv6_pref2mask(uint8_t preflen, net_ipv6addr_t mask)
|
|||||||
* 1..6 7..2 3..8 9..4 5..0 1..6 7..2 3..8
|
* 1..6 7..2 3..8 9..4 5..0 1..6 7..2 3..8
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (i = 0; i < 7; i++)
|
for (i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
/* bit = {0, 16, 32, 48, 64, 80, 96, 112} */
|
/* bit = {0, 16, 32, 48, 64, 80, 96, 112} */
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ void net_ipv6_pref2mask(uint8_t preflen, net_ipv6addr_t mask)
|
|||||||
{
|
{
|
||||||
/* Eg. preflen = 38, bit = {0, 16, 32} */
|
/* Eg. preflen = 38, bit = {0, 16, 32} */
|
||||||
|
|
||||||
if (preflen > (bit + 16))
|
if (preflen >= (bit + 16))
|
||||||
{
|
{
|
||||||
/* Eg. preflen = 38, bit = {0, 16} */
|
/* Eg. preflen = 38, bit = {0, 16} */
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ void net_ipv6_pref2mask(uint8_t preflen, net_ipv6addr_t mask)
|
|||||||
{
|
{
|
||||||
/* Eg. preflen = 38, bit = {32}
|
/* Eg. preflen = 38, bit = {32}
|
||||||
* bit - preflen = 6
|
* bit - preflen = 6
|
||||||
* make = 0xffff << (16-6)
|
* mask = 0xffff << (16-6)
|
||||||
* = 0xfc00
|
* = 0xfc00
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ void net_ipv6_pref2mask(uint8_t preflen, net_ipv6addr_t mask)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Eg. preflen=38, bit= {48, 64, 80, 112} */
|
/* Eg. preflen=38, bit= {48, 64, 80, 96, 112} */
|
||||||
|
|
||||||
mask[i] = 0x0000;
|
mask[i] = 0x0000;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user