mirror of
https://github.com/espressif/openthread.git
synced 2026-10-11 18:27:43 +00:00
[mle] update RouteTlv to check number of allocated IDs (#8463)
This commit contains smaller enhancements in `RouteTlv`: - `RouteTlv::IsValid()` checks that number of allocated IDs in the Router ID Mask is less than max number of routers. - It also checks that the TLV contains correct number of Route Data entries matching the number of allocated router IDs. - A new method `SetRouteData()` is added to set all the data fields (link quality in/out and route cost) for a given router index. - These changes help ensure that messages containing invalid `RouteTlv` are rejected (avoid situation where we may have more allocated router IDs than max routers).
This commit is contained in:
@@ -131,6 +131,24 @@ void TestNumUtils(void)
|
||||
VerifyOrQuit(DivideAndRoundToClosest<uint8_t>(9, 10) == 1);
|
||||
VerifyOrQuit(DivideAndRoundToClosest<uint8_t>(10, 10) == 1);
|
||||
|
||||
VerifyOrQuit(CountBitsInMask<uint8_t>(0) == 0);
|
||||
VerifyOrQuit(CountBitsInMask<uint8_t>(1) == 1);
|
||||
VerifyOrQuit(CountBitsInMask<uint8_t>(2) == 1);
|
||||
VerifyOrQuit(CountBitsInMask<uint8_t>(3) == 2);
|
||||
VerifyOrQuit(CountBitsInMask<uint8_t>(4) == 1);
|
||||
VerifyOrQuit(CountBitsInMask<uint8_t>(7) == 3);
|
||||
VerifyOrQuit(CountBitsInMask<uint8_t>(11) == 3);
|
||||
VerifyOrQuit(CountBitsInMask<uint8_t>(15) == 4);
|
||||
VerifyOrQuit(CountBitsInMask<uint8_t>(0x11) == 2);
|
||||
VerifyOrQuit(CountBitsInMask<uint8_t>(0xef) == 7);
|
||||
VerifyOrQuit(CountBitsInMask<uint8_t>(0xff) == 8);
|
||||
|
||||
VerifyOrQuit(CountBitsInMask<uint16_t>(0) == 0);
|
||||
VerifyOrQuit(CountBitsInMask<uint16_t>(0xff00) == 8);
|
||||
VerifyOrQuit(CountBitsInMask<uint16_t>(0xff) == 8);
|
||||
VerifyOrQuit(CountBitsInMask<uint16_t>(0xaa55) == 8);
|
||||
VerifyOrQuit(CountBitsInMask<uint16_t>(0xffff) == 16);
|
||||
|
||||
printf("TestNumUtils() passed\n");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user