48 static SCRadixUserData *SCRadixAllocSCRadixUserData(uint8_t netmask,
void *user)
57 user_data->
user = user;
90 if (
new == NULL || list == NULL) {
97 while (temp != NULL) {
98 if (new->netmask > temp->
netmask)
128 static SCRadixPrefix *SCRadixCreatePrefix(uint8_t *key_stream,
129 uint16_t key_bitlen,
void *user,
134 if (key_bitlen == 0 || (key_bitlen % 8 != 0)) {
135 SCLogError(
"Invalid argument bitlen - %d", key_bitlen);
139 if (key_stream == NULL) {
150 memcpy(prefix->
stream, key_stream, key_bitlen / 8);
151 prefix->
bitlen = key_bitlen;
153 prefix->
user_data = SCRadixAllocSCRadixUserData(netmask, user);
161 if (prefix != NULL) {
162 if (prefix->
stream != NULL) {
180 static void SCRadixAddNetmaskUserDataToPrefix(
SCRadixPrefix *prefix,
184 if (prefix == NULL || user == NULL) {
188 SCRadixAppendToSCRadixUserDataList(SCRadixAllocSCRadixUserData(netmask, user),
202 static void SCRadixRemoveNetmaskUserDataFromPrefix(
SCRadixPrefix *prefix,
207 if (prefix == NULL) {
212 while (temp != NULL) {
213 if (temp->
netmask == netmask) {
219 SCRadixDeAllocSCRadixUserData(temp);
239 static int SCRadixPrefixContainNetmask(
SCRadixPrefix *prefix, uint8_t netmask)
243 if (prefix == NULL) {
249 while (user_data != NULL) {
250 if (user_data->
netmask == netmask)
252 user_data = user_data->
next;
271 if (prefix == NULL) {
277 while (user_data != NULL) {
279 user_data = user_data->
next;
298 static int SCRadixPrefixContainNetmaskAndSetUserData(
299 SCRadixPrefix *prefix, uint16_t netmask,
bool exact_match,
void **user_data_result)
303 if (prefix == NULL) {
312 if (user_data->
netmask == netmask) {
313 if (user_data_result)
314 *user_data_result = user_data->
user;
322 while (user_data != NULL) {
323 if (user_data->
netmask == netmask) {
324 if (user_data_result)
325 *user_data_result = user_data->
user;
328 user_data = user_data->
next;
332 if (user_data_result != NULL)
333 *user_data_result = NULL;
348 if (prefix != NULL) {
349 if (prefix->
stream != NULL)
353 if (tree->
Free != NULL) {
354 while (user_data_temp1 != NULL) {
355 user_data_temp2 = user_data_temp1;
356 user_data_temp1 = user_data_temp1->
next;
358 SCRadixDeAllocSCRadixUserData(user_data_temp2);
360 }
else if (user_data_temp1 != NULL) {
380 SCLogError(
"Fatal error encountered in SCRadixCreateNode. Mem not allocated...");
396 SCRadixReleasePrefix(node->
prefix, tree);
422 FatalError(
"Fatal error encountered in SCRadixCreateRadixTree. Exiting...");
441 SCRadixReleaseRadixSubtree(node->
left, tree);
442 SCRadixReleaseRadixSubtree(node->
right, tree);
443 SCRadixReleaseNode(node, tree);
459 SCRadixReleaseRadixSubtree(tree->
head, tree);
481 static SCRadixNode *SCRadixAddKeyInternal(uint8_t *key_stream, uint8_t key_bitlen,
482 SCRadixTree *tree,
void *user, uint8_t netmask,
bool exclusive)
491 uint8_t *stream = NULL;
494 uint16_t check_bit = 0;
495 uint16_t differ_bit = 0;
510 if (tree->
head == NULL) {
512 if ( (prefix = SCRadixCreatePrefix(key_stream, key_bitlen, user,
518 node = SCRadixCreateNode();
520 SCRadixReleasePrefix(prefix, tree);
527 if (netmask == 255 || (netmask == 32 && key_bitlen == 32) ||
528 (netmask == 128 && key_bitlen == 128)) {
543 sizeof(uint8_t)))) == NULL) {
546 SCLogError(
"Fatal error encountered in SCRadixAddKey. Mem not allocated");
563 while (node->
bit < bitlen || node->
prefix == NULL) {
568 if (bitlen <= node->bit) {
569 if (node->
right == NULL)
574 (0x80 >> (node->
bit % 8))) ) {
575 if (node->
right == NULL)
579 if (node->
left == NULL)
594 check_bit = (node->
bit < bitlen)? node->
bit: bitlen;
595 for (i = 0; (i * 8) < check_bit; i++) {
597 if ((temp = (stream[i] ^ bottom_node->
prefix->
stream[i])) == 0) {
598 differ_bit = (i + 1) * 8;
608 else if (temp >= 128)
623 differ_bit = i * 8 + j;
626 if (check_bit < differ_bit)
627 differ_bit = check_bit;
631 while (parent && differ_bit <= parent->bit) {
637 if (differ_bit == bitlen && node->
bit == bitlen) {
638 if (node->
prefix != NULL) {
640 if (SCRadixPrefixContainNetmask(node->
prefix, netmask)) {
644 SCLogDebug(
"not inserting since it already exists");
648 SCLogDebug(
"Duplicate entry for this ip address/netblock");
654 SCRadixAddNetmaskUserDataToPrefix(node->
prefix, netmask, user);
660 if (netmask == 255 || (netmask == 32 && bitlen == 32) || (netmask == 128 && bitlen == 128))
667 while (parent != NULL && netmask < (parent->
bit + 1)) {
676 sizeof(uint8_t)))) == NULL) {
679 SCLogError(
"Fatal error encountered in SCRadixAddKey. Mem not allocated...");
693 if (netmask < node->netmasks[i - 1]) {
703 node->
prefix = SCRadixCreatePrefix(key_stream, key_bitlen,
711 if ( (prefix = SCRadixCreatePrefix(key_stream, key_bitlen, user,
717 new_node = SCRadixCreateNode();
718 new_node->
prefix = prefix;
725 if (differ_bit == bitlen) {
727 (0x80 >> (differ_bit % 8))) ) {
728 new_node->
right = node;
730 new_node->
left = node;
735 tree->
head = new_node;
747 inter_node = SCRadixCreateNode();
748 inter_node->
prefix = NULL;
749 inter_node->
bit = differ_bit;
754 if (node->
netmasks[i] < differ_bit + 1)
758 if (i < node->netmask_cnt) {
760 sizeof(uint8_t))) == NULL) {
761 SCLogError(
"Fatal error encountered in SCRadixAddKey. Mem not allocated...");
762 SCRadixReleaseNode(inter_node, tree);
763 SCRadixReleaseNode(new_node, tree);
777 (0x80 >> (differ_bit % 8))) ) {
778 inter_node->
left = node;
779 inter_node->
right = new_node;
781 inter_node->
left = new_node;
782 inter_node->
right = node;
784 new_node->
parent = inter_node;
787 tree->
head = inter_node;
793 node->
parent = inter_node;
797 if (netmask != 255 && (netmask != 32 || (netmask == 32 && bitlen != 32)) && netmask != 128) {
799 parent = new_node->
parent;
800 while (parent != NULL && netmask < (parent->
bit + 1)) {
807 sizeof(uint8_t)))) == NULL) {
810 FatalError(
"Fatal error encountered in SCRadixAddKey. Exiting...");
822 if (netmask < node->netmasks[i - 1]) {
836 uint8_t *key_stream, uint8_t key_bitlen,
SCRadixTree *tree,
void *user, uint8_t netmask)
838 return SCRadixAddKeyInternal(key_stream, key_bitlen, tree, user, netmask,
true);
842 uint8_t *key_stream, uint8_t key_bitlen,
SCRadixTree *tree,
void *user, uint8_t netmask)
844 return SCRadixAddKeyInternal(key_stream, key_bitlen, tree, user, netmask,
false);
861 SCRadixNode *node = SCRadixAddKey(key_stream, 32, tree, user, 32);
880 SCRadixNode *node = SCRadixAddKey(key_stream, 128, tree, user, 128);
885 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
886 static void SCRadixValidateIPv4Key(uint8_t *key,
const uint8_t netmask)
890 uint32_t mask =
CIDRGet(netmask);
892 uint32_t masked =
address & mask;
893 char ostr[16], nstr[16];
895 PrintInet(AF_INET, (
void *)&masked, nstr,
sizeof(nstr));
896 SCLogNotice(
"input %s/%u != expected %s/%u", ostr, netmask, nstr, netmask);
901 static void SCRadixValidateIPv6Key(uint8_t *key,
const uint8_t netmask)
907 memset(&mask, 0,
sizeof(mask));
908 struct in6_addr mask6;
910 memcpy(&mask, &mask6.s6_addr,
sizeof(mask));
913 masked[0] =
address[0] & mask[0];
914 masked[1] =
address[1] & mask[1];
915 masked[2] =
address[2] & mask[2];
916 masked[3] =
address[3] & mask[3];
918 if (memcmp(masked,
address,
sizeof(masked)) != 0) {
919 char ostr[64], nstr[64];
921 PrintInet(AF_INET6, (
void *)&masked, nstr,
sizeof(nstr));
922 SCLogNotice(
"input %s/%u != expected %s/%u", ostr, netmask, nstr, netmask);
941 void *user, uint8_t netmask)
943 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
944 SCRadixValidateIPv4Key(key_stream, netmask);
946 SCRadixNode *node = SCRadixAddKey(key_stream, 32, tree, user, netmask);
964 void *user, uint8_t netmask)
966 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
967 SCRadixValidateIPv6Key(key_stream, netmask);
969 SCRadixNode *node = SCRadixAddKey(key_stream, 128, tree, user, netmask);
992 uint8_t netmask = 32;
994 char *mask_str = NULL;
999 *(ip_str + (
sizeof(ip_str) - 1)) =
'\0';
1002 if (NULL != (mask_str = strchr(ip_str,
'/'))) {
1004 *(mask_str++) =
'\0';
1007 if (strchr(mask_str,
'.') != NULL) {
1018 netmask = (uint8_t)cidr;
1022 if (inet_pton(AF_INET, ip_str, &addr) <= 0) {
1027 if (netmask != 32) {
1028 uint32_t mask =
CIDRGet(netmask);
1029 uint32_t masked = ip & mask;
1032 PrintInet(AF_INET, (
void *)&masked, nstr,
sizeof(nstr));
1036 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1037 SCRadixValidateIPv4Key((uint8_t *)&ip, netmask);
1041 SCLogDebug(
"trying to add %s, but only if it doesn't exist", ip_str);
1043 if (SCRadixAddKeyExclusive((uint8_t *)&ip, 32, tree, user, netmask) == NULL) {
1066 uint8_t netmask = 128;
1068 char *mask_str = NULL;
1069 struct in6_addr addr;
1073 *(ip_str +
sizeof(ip_str) - 1) =
'\0';
1076 if (NULL != (mask_str = strchr(ip_str,
'/'))) {
1078 *(mask_str++) =
'\0';
1081 if (strchr(mask_str,
'.') != NULL) {
1092 netmask = (uint8_t)cidr;
1096 if (inet_pton(AF_INET6, ip_str, &addr) <= 0) {
1101 if (netmask != 128) {
1102 struct in6_addr mask6, check;
1104 memcpy(&check, &addr,
sizeof(check));
1106 for (
int i = 0; i < 16; i++) {
1107 addr.s6_addr[i] &= mask6.s6_addr[i];
1108 diff |= (addr.s6_addr[i] != check.s6_addr[i]);
1112 PrintInet(AF_INET6, (
void *)&addr.s6_addr, nstr,
sizeof(nstr));
1115 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1116 SCRadixValidateIPv6Key((uint8_t *)&addr.s6_addr, netmask);
1120 SCLogDebug(
"trying to add %s, but only if it doesn't exist",
str);
1122 if (SCRadixAddKeyExclusive(addr.s6_addr, 128, tree, user, netmask) == NULL) {
1135 if (
src == NULL || dest == NULL) {
1141 if (
src->netmasks == NULL)
1146 sizeof(uint8_t))) == NULL) {
1153 for (i = dest->
netmask_cnt, j = 0; j < src->netmask_cnt; i++, j++)
1168 static void SCRadixRemoveNetblockEntry(
SCRadixNode *node, uint8_t netmask)
1175 SCLogError(
"Invalid argument. Node is NULL");
1179 SCRadixRemoveNetmaskUserDataFromPrefix(node->
prefix, netmask);
1181 if (netmask == 32 || netmask == 128)
1185 while (parent != NULL && netmask < (parent->
bit + 1)) {
1195 SCLogDebug(
"Something's wrong with the tree. We are unable to find the "
1230 static void SCRadixRemoveKey(uint8_t *key_stream, uint16_t key_bitlen,
1245 if ( (prefix = SCRadixCreatePrefix(key_stream, key_bitlen, NULL, 255)) == NULL)
1250 (0x80 >> (node->
bit % 8))) ) {
1257 SCRadixReleasePrefix(prefix, tree);
1263 SCRadixReleasePrefix(prefix, tree);
1269 mask = UINT_MAX << (8 - prefix->
bitlen % 8);
1271 if (prefix->
bitlen % 8 == 0 ||
1273 if (!SCRadixPrefixContainNetmask(node->
prefix, netmask)) {
1274 SCLogDebug(
"The ip key exists in the Radix Tree, but this(%d) "
1275 "netblock entry doesn't exist", netmask);
1276 SCRadixReleasePrefix(prefix, tree);
1280 SCLogDebug(
"You are trying to remove a key that doesn't exist in "
1282 SCRadixReleasePrefix(prefix, tree);
1286 SCLogDebug(
"You are trying to remove a key that doesn't exist in the "
1288 SCRadixReleasePrefix(prefix, tree);
1296 if (SCRadixPrefixNetmaskCount(node->
prefix) > 1) {
1297 SCRadixRemoveNetblockEntry(node, netmask);
1298 SCRadixReleasePrefix(prefix, tree);
1304 if (tree->
head == node) {
1305 SCRadixReleaseNode(node, tree);
1307 SCRadixReleasePrefix(prefix, tree);
1313 if (parent->
parent != NULL) {
1316 temp_dest = parent->
right;
1320 temp_dest = parent->
left;
1326 temp_dest = parent->
right;
1330 temp_dest = parent->
left;
1337 if (parent->
left == node) {
1349 SCRadixTransferNetmasksBWNodes(temp_dest, parent);
1351 SCRadixReleaseNode(parent, tree);
1352 SCRadixReleaseNode(node, tree);
1353 SCRadixReleasePrefix(prefix, tree);
1369 SCRadixRemoveKey(key_stream, key_bitlen, tree, 255);
1384 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1385 SCRadixValidateIPv4Key(key_stream, netmask);
1387 SCRadixRemoveKey(key_stream, 32, tree, netmask);
1403 SCRadixRemoveKey(key_stream, 32, tree, 32);
1418 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1419 SCRadixValidateIPv6Key(key_stream, netmask);
1421 SCRadixRemoveKey(key_stream, 128, tree, netmask);
1437 SCRadixRemoveKey(key_stream, 128, tree, 128);
1448 static inline SCRadixNode *SCRadixFindKeyIPNetblock(
1449 uint8_t *key_stream, uint8_t key_bitlen,
SCRadixNode *node,
void **user_data_result)
1457 while (node != NULL && node->
netmasks == NULL)
1464 netmask_node = node;
1467 bytes = key_bitlen / 8;
1468 for (i = 0; i < bytes; i++) {
1470 if ( ((i + 1) * 8) > netmask_node->
netmasks[j]) {
1471 if ( ((i + 1) * 8 - netmask_node->
netmasks[j]) < 8)
1472 mask = UINT_MAX << ((i + 1) * 8 - netmask_node->
netmasks[j]);
1476 key_stream[i] &= mask;
1479 while (node->
bit < key_bitlen) {
1481 (0x80 >> (node->
bit % 8))) ) {
1491 if (node->
bit != key_bitlen || node->
prefix == NULL)
1495 mask = UINT_MAX << (8 - key_bitlen % 8);
1497 if (key_bitlen % 8 == 0 ||
1498 (node->
prefix->
stream[bytes] & mask) == (key_stream[bytes] & mask)) {
1499 if (SCRadixPrefixContainNetmaskAndSetUserData(
1500 node->
prefix, netmask_node->
netmasks[j],
false, user_data_result))
1506 return SCRadixFindKeyIPNetblock(key_stream, key_bitlen, netmask_node->
parent, user_data_result);
1519 static SCRadixNode *SCRadixFindKey(uint8_t *key_stream, uint8_t key_bitlen, uint8_t netmask,
1520 SCRadixTree *tree,
bool exact_match,
void **user_data_result)
1522 if (tree == NULL || tree->
head == NULL)
1528 uint8_t tmp_stream[255];
1530 memset(tmp_stream, 0, 255);
1531 memcpy(tmp_stream, key_stream, key_bitlen / 8);
1533 while (node->
bit < key_bitlen) {
1535 (0x80 >> (node->
bit % 8))) ) {
1546 if (node->
bit != key_bitlen || node->
prefix == NULL) {
1550 bytes = key_bitlen / 8;
1552 mask = UINT_MAX << (8 - key_bitlen % 8);
1554 if (key_bitlen % 8 == 0 ||
1555 (node->
prefix->
stream[bytes] & mask) == (tmp_stream[bytes] & mask)) {
1556 if (SCRadixPrefixContainNetmaskAndSetUserData(
1557 node->
prefix, netmask,
true, user_data_result)) {
1568 SCRadixNode *ret = SCRadixFindKeyIPNetblock(tmp_stream, key_bitlen, node, user_data_result);
1581 return SCRadixFindKey(key_stream, 32, 32, tree,
true, user_data_result);
1593 return SCRadixFindKey(key_stream, 32, 32, tree,
false, user_data_result);
1604 uint8_t netmask,
void **user_data_result)
1606 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1607 SCRadixValidateIPv4Key(key_stream, netmask);
1609 SCRadixNode *node = SCRadixFindKey(key_stream, 32, netmask, tree,
true, user_data_result);
1621 uint8_t netmask,
void **user_data_result)
1623 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1624 SCRadixValidateIPv6Key(key_stream, netmask);
1626 SCRadixNode *node = SCRadixFindKey(key_stream, 128, netmask, tree,
true, user_data_result);
1639 return SCRadixFindKey(key_stream, 128, 128, tree,
true, user_data_result);
1651 return SCRadixFindKey(key_stream, 128, 128, tree,
false, user_data_result);
1667 for (i = 0; i < level; i++)
1670 printf(
"%d [", node->
bit);
1676 printf(
"%s%d", (0 == i ?
"" :
", "), node->
netmasks[i]);
1680 if (node->
prefix != NULL) {
1682 printf(
"%s%d", (0 == i ?
"" :
"."), node->
prefix->
stream[i]);
1687 for (
int x = 0; x <= level; x++)
1690 if (PrintData != NULL) {
1691 PrintData(ud->
user);
1697 }
while (ud != NULL);
1699 printf(
"inter_node)\n");
1712 static void SCRadixPrintRadixSubtree(
SCRadixNode *node,
int level,
void (*PrintData)(
void*))
1716 SCRadixPrintRadixSubtree(node->
left, level + 1, PrintData);
1717 SCRadixPrintRadixSubtree(node->
right, level + 1, PrintData);
1743 printf(
"Printing the Radix Tree: \n");
1754 static int SCRadixTestIPV4Insertion03(
void)
1757 struct sockaddr_in servaddr;
1763 memset(&servaddr, 0,
sizeof(servaddr));
1764 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1768 memset(&servaddr, 0,
sizeof(servaddr));
1769 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1773 memset(&servaddr, 0,
sizeof(servaddr));
1774 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1778 memset(&servaddr, 0,
sizeof(servaddr));
1779 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1787 memset(&servaddr, 0,
sizeof(servaddr));
1788 if (inet_pton(AF_INET,
"192.168.1.6", &servaddr.sin_addr) <= 0)
1793 memset(&servaddr, 0,
sizeof(servaddr));
1794 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1799 memset(&servaddr, 0,
sizeof(servaddr));
1800 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1804 memset(&servaddr, 0,
sizeof(servaddr));
1805 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1809 memset(&servaddr, 0,
sizeof(servaddr));
1810 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1815 memset(&servaddr, 0,
sizeof(servaddr));
1816 if (inet_pton(AF_INET,
"192.168.1.3", &servaddr.sin_addr) <= 0)
1820 memset(&servaddr, 0,
sizeof(servaddr));
1821 if (inet_pton(AF_INET,
"127.234.2.62", &servaddr.sin_addr) <= 0)
1825 memset(&servaddr, 0,
sizeof(servaddr));
1826 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1830 memset(&servaddr, 0,
sizeof(servaddr));
1831 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1835 memset(&servaddr, 0,
sizeof(servaddr));
1836 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1840 memset(&servaddr, 0,
sizeof(servaddr));
1841 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1845 memset(&servaddr, 0,
sizeof(servaddr));
1846 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1850 memset(&servaddr, 0,
sizeof(servaddr));
1851 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1855 memset(&servaddr, 0,
sizeof(servaddr));
1856 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1865 static int SCRadixTestIPV4Removal04(
void)
1868 struct sockaddr_in servaddr;
1874 memset(&servaddr, 0,
sizeof(servaddr));
1875 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1879 memset(&servaddr, 0,
sizeof(servaddr));
1880 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1884 memset(&servaddr, 0,
sizeof(servaddr));
1885 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1889 memset(&servaddr, 0,
sizeof(servaddr));
1890 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1894 memset(&servaddr, 0,
sizeof(servaddr));
1895 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1899 memset(&servaddr, 0,
sizeof(servaddr));
1900 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1904 memset(&servaddr, 0,
sizeof(servaddr));
1905 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1910 memset(&servaddr, 0,
sizeof(servaddr));
1911 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1915 memset(&servaddr, 0,
sizeof(servaddr));
1916 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1920 memset(&servaddr, 0,
sizeof(servaddr));
1921 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1925 memset(&servaddr, 0,
sizeof(servaddr));
1926 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1930 memset(&servaddr, 0,
sizeof(servaddr));
1931 if (inet_pton(AF_INET,
"192.167.1.1", &servaddr.sin_addr) <= 0)
1935 memset(&servaddr, 0,
sizeof(servaddr));
1936 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1940 memset(&servaddr, 0,
sizeof(servaddr));
1941 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1945 memset(&servaddr, 0,
sizeof(servaddr));
1946 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1950 memset(&servaddr, 0,
sizeof(servaddr));
1951 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1955 memset(&servaddr, 0,
sizeof(servaddr));
1956 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1960 memset(&servaddr, 0,
sizeof(servaddr));
1961 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1965 memset(&servaddr, 0,
sizeof(servaddr));
1966 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1970 result &= (tree->
head == NULL);
1977 static int SCRadixTestIPV6Insertion07(
void)
1980 struct sockaddr_in6 servaddr;
1986 memset(&servaddr, 0,
sizeof(servaddr));
1987 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
1988 &servaddr.sin6_addr) <= 0)
1992 memset(&servaddr, 0,
sizeof(servaddr));
1993 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
1994 &servaddr.sin6_addr) <= 0)
1998 memset(&servaddr, 0,
sizeof(servaddr));
1999 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2000 &servaddr.sin6_addr) <= 0)
2004 memset(&servaddr, 0,
sizeof(servaddr));
2005 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2006 &servaddr.sin6_addr) <= 0)
2013 memset(&servaddr, 0,
sizeof(servaddr));
2014 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2015 &servaddr.sin6_addr) <= 0)
2019 memset(&servaddr, 0,
sizeof(servaddr));
2020 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2021 &servaddr.sin6_addr) <= 0)
2025 memset(&servaddr, 0,
sizeof(servaddr));
2026 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
2027 &servaddr.sin6_addr) <= 0)
2032 memset(&servaddr, 0,
sizeof(servaddr));
2033 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2034 &servaddr.sin6_addr) <= 0)
2038 memset(&servaddr, 0,
sizeof(servaddr));
2039 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2040 &servaddr.sin6_addr) <= 0)
2044 memset(&servaddr, 0,
sizeof(servaddr));
2045 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2046 &servaddr.sin6_addr) <= 0)
2050 memset(&servaddr, 0,
sizeof(servaddr));
2051 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2052 &servaddr.sin6_addr) <= 0)
2056 memset(&servaddr, 0,
sizeof(servaddr));
2057 if (inet_pton(AF_INET6,
"DBCA:ABC2:ABCD:DBCA:1245:2342:1111:2212",
2058 &servaddr.sin6_addr) <= 0)
2062 memset(&servaddr, 0,
sizeof(servaddr));
2063 if (inet_pton(AF_INET6,
"2003:0BF5:5346:1251:7422:1112:9124:2315",
2064 &servaddr.sin6_addr) <= 0)
2068 memset(&servaddr, 0,
sizeof(servaddr));
2069 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2070 &servaddr.sin6_addr) <= 0)
2074 memset(&servaddr, 0,
sizeof(servaddr));
2075 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2076 &servaddr.sin6_addr) <= 0)
2080 memset(&servaddr, 0,
sizeof(servaddr));
2081 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
2082 &servaddr.sin6_addr) <= 0)
2091 static int SCRadixTestIPV6Removal08(
void)
2094 struct sockaddr_in6 servaddr;
2100 memset(&servaddr, 0,
sizeof(servaddr));
2101 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2102 &servaddr.sin6_addr) <= 0)
2106 memset(&servaddr, 0,
sizeof(servaddr));
2107 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2108 &servaddr.sin6_addr) <= 0)
2112 memset(&servaddr, 0,
sizeof(servaddr));
2113 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2114 &servaddr.sin6_addr) <= 0)
2118 memset(&servaddr, 0,
sizeof(servaddr));
2119 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2120 &servaddr.sin6_addr) <= 0)
2127 memset(&servaddr, 0,
sizeof(servaddr));
2128 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2129 &servaddr.sin6_addr) <= 0)
2133 memset(&servaddr, 0,
sizeof(servaddr));
2134 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2135 &servaddr.sin6_addr) <= 0)
2139 memset(&servaddr, 0,
sizeof(servaddr));
2140 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
2141 &servaddr.sin6_addr) <= 0)
2146 memset(&servaddr, 0,
sizeof(servaddr));
2147 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2148 &servaddr.sin6_addr) <= 0)
2152 memset(&servaddr, 0,
sizeof(servaddr));
2153 if (inet_pton(AF_INET6,
"8888:0BF1:5346:BDEA:6422:8713:9124:2315",
2154 &servaddr.sin6_addr) <= 0)
2158 memset(&servaddr, 0,
sizeof(servaddr));
2159 if (inet_pton(AF_INET6,
"2006:0BF1:5346:BDEA:7422:8713:9124:2315",
2160 &servaddr.sin6_addr) <= 0)
2164 memset(&servaddr, 0,
sizeof(servaddr));
2165 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2166 &servaddr.sin6_addr) <= 0)
2170 memset(&servaddr, 0,
sizeof(servaddr));
2171 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2172 &servaddr.sin6_addr) <= 0)
2177 memset(&servaddr, 0,
sizeof(servaddr));
2178 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2179 &servaddr.sin6_addr) <= 0)
2183 memset(&servaddr, 0,
sizeof(servaddr));
2184 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2185 &servaddr.sin6_addr) <= 0)
2189 memset(&servaddr, 0,
sizeof(servaddr));
2190 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2191 &servaddr.sin6_addr) <= 0)
2195 memset(&servaddr, 0,
sizeof(servaddr));
2196 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2197 &servaddr.sin6_addr) <= 0)
2201 memset(&servaddr, 0,
sizeof(servaddr));
2202 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
2203 &servaddr.sin6_addr) <= 0)
2207 memset(&servaddr, 0,
sizeof(servaddr));
2208 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:DDDD:2315",
2209 &servaddr.sin6_addr) <= 0)
2214 memset(&servaddr, 0,
sizeof(servaddr));
2215 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2216 &servaddr.sin6_addr) <= 0)
2220 memset(&servaddr, 0,
sizeof(servaddr));
2221 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2222 &servaddr.sin6_addr) <= 0)
2227 memset(&servaddr, 0,
sizeof(servaddr));
2228 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2229 &servaddr.sin6_addr) <= 0)
2233 memset(&servaddr, 0,
sizeof(servaddr));
2234 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2235 &servaddr.sin6_addr) <= 0)
2239 memset(&servaddr, 0,
sizeof(servaddr));
2240 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2241 &servaddr.sin6_addr) <= 0)
2245 memset(&servaddr, 0,
sizeof(servaddr));
2246 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2247 &servaddr.sin6_addr) <= 0)
2251 memset(&servaddr, 0,
sizeof(servaddr));
2252 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2253 &servaddr.sin6_addr) <= 0)
2257 memset(&servaddr, 0,
sizeof(servaddr));
2258 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2259 &servaddr.sin6_addr) <= 0)
2264 memset(&servaddr, 0,
sizeof(servaddr));
2265 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2266 &servaddr.sin6_addr) <= 0)
2270 memset(&servaddr, 0,
sizeof(servaddr));
2271 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2272 &servaddr.sin6_addr) <= 0)
2276 memset(&servaddr, 0,
sizeof(servaddr));
2277 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2278 &servaddr.sin6_addr) <= 0)
2282 memset(&servaddr, 0,
sizeof(servaddr));
2283 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2284 &servaddr.sin6_addr) <= 0)
2289 memset(&servaddr, 0,
sizeof(servaddr));
2290 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2291 &servaddr.sin6_addr) <= 0)
2295 memset(&servaddr, 0,
sizeof(servaddr));
2296 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2297 &servaddr.sin6_addr) <= 0)
2301 memset(&servaddr, 0,
sizeof(servaddr));
2302 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2303 &servaddr.sin6_addr) <= 0)
2307 memset(&servaddr, 0,
sizeof(servaddr));
2308 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2309 &servaddr.sin6_addr) <= 0)
2313 memset(&servaddr, 0,
sizeof(servaddr));
2314 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2315 &servaddr.sin6_addr) <= 0)
2319 memset(&servaddr, 0,
sizeof(servaddr));
2320 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2321 &servaddr.sin6_addr) <= 0)
2340 static int SCRadixTestIPV4Bug5066(
void)
2342 struct sockaddr_in servaddr;
2348 memset(&servaddr, 0,
sizeof(servaddr));
2349 FAIL_IF(inet_pton(AF_INET,
"100.117.241.0", &servaddr.sin_addr) <= 0);
2360 FAIL_IF(inet_pton(AF_INET,
"100.117.241.0", &servaddr.sin_addr) <= 0);
2368 SCLogDebug(
"find 100.117.241.64/26 (should fail)");
2369 FAIL_IF(inet_pton(AF_INET,
"100.117.241.64", &servaddr.sin_addr) <= 0);
2376 SCLogDebug(
"find 100.117.241.64/26 (should succeed)");
2387 static void SCRadixTestIPV4Bug5066v2PrintData(
void *d)
2393 static int SCRadixTestIPV4Bug5066v2(
void)
2395 struct sockaddr_in servaddr;
2401 memset(&servaddr, 0,
sizeof(servaddr));
2402 FAIL_IF(inet_pton(AF_INET,
"1.2.3.0", &servaddr.sin_addr) <= 0);
2412 memset(&servaddr, 0,
sizeof(servaddr));
2413 FAIL_IF(inet_pton(AF_INET,
"1.2.3.0", &servaddr.sin_addr) <= 0);
2423 memset(&servaddr, 0,
sizeof(servaddr));
2424 FAIL_IF(inet_pton(AF_INET,
"1.2.3.0", &servaddr.sin_addr) <= 0);
2434 memset(&servaddr, 0,
sizeof(servaddr));
2435 FAIL_IF(inet_pton(AF_INET,
"1.2.3.64", &servaddr.sin_addr) <= 0);
2445 memset(&servaddr, 0,
sizeof(servaddr));
2446 FAIL_IF(inet_pton(AF_INET,
"1.2.3.64", &servaddr.sin_addr) <= 0);
2456 memset(&servaddr, 0,
sizeof(servaddr));
2457 FAIL_IF(inet_pton(AF_INET,
"1.2.3.96", &servaddr.sin_addr) <= 0);
2474 static int SCRadixTestIPV6Bug5066(
void)
2476 struct sockaddr_in6 servaddr;
2482 memset(&servaddr, 0,
sizeof(servaddr));
2483 FAIL_IF(inet_pton(AF_INET6,
"2000::1:0", &servaddr.sin6_addr) <= 0);
2494 FAIL_IF(inet_pton(AF_INET6,
"2000::1:0", &servaddr.sin6_addr) <= 0);
2502 SCLogDebug(
"find 2000::1:40/122 (should fail)");
2503 FAIL_IF(inet_pton(AF_INET6,
"2000::1:40", &servaddr.sin6_addr) <= 0);
2510 SCLogDebug(
"find 2000::1:40/122 (should succeed)");
2521 static int SCRadixTestIPV4NetblockInsertion09(
void)
2524 struct sockaddr_in servaddr;
2530 memset(&servaddr, 0,
sizeof(servaddr));
2531 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
2535 memset(&servaddr, 0,
sizeof(servaddr));
2536 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
2540 memset(&servaddr, 0,
sizeof(servaddr));
2541 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
2545 memset(&servaddr, 0,
sizeof(servaddr));
2546 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2550 memset(&servaddr, 0,
sizeof(servaddr));
2551 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
2555 memset(&servaddr, 0,
sizeof(servaddr));
2556 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
2560 memset(&servaddr, 0,
sizeof(servaddr));
2561 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
2565 memset(&servaddr, 0,
sizeof(servaddr));
2566 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2570 memset(&servaddr, 0,
sizeof(servaddr));
2571 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2575 memset(&servaddr, 0,
sizeof(servaddr));
2576 if (inet_pton(AF_INET,
"192.171.192.0", &servaddr.sin_addr) <= 0)
2580 if (inet_pton(AF_INET,
"192.175.0.0", &servaddr.sin_addr) <= 0)
2585 memset(&servaddr, 0,
sizeof(servaddr));
2586 if (inet_pton(AF_INET,
"192.168.1.6", &servaddr.sin_addr) <= 0)
2590 memset(&servaddr, 0,
sizeof(servaddr));
2591 if (inet_pton(AF_INET,
"192.170.1.6", &servaddr.sin_addr) <= 0)
2595 memset(&servaddr, 0,
sizeof(servaddr));
2596 if (inet_pton(AF_INET,
"192.171.128.145", &servaddr.sin_addr) <= 0)
2600 memset(&servaddr, 0,
sizeof(servaddr));
2601 if (inet_pton(AF_INET,
"192.171.64.6", &servaddr.sin_addr) <= 0)
2605 memset(&servaddr, 0,
sizeof(servaddr));
2606 if (inet_pton(AF_INET,
"192.171.191.6", &servaddr.sin_addr) <= 0)
2610 memset(&servaddr, 0,
sizeof(servaddr));
2611 if (inet_pton(AF_INET,
"192.171.224.6", &servaddr.sin_addr) <= 0)
2615 memset(&servaddr, 0,
sizeof(servaddr));
2616 if (inet_pton(AF_INET,
"192.174.224.6", &servaddr.sin_addr) <= 0)
2620 memset(&servaddr, 0,
sizeof(servaddr));
2621 if (inet_pton(AF_INET,
"192.175.224.6", &servaddr.sin_addr) <= 0)
2630 static int SCRadixTestIPV4NetblockInsertion10(
void)
2634 struct sockaddr_in servaddr;
2639 memset(&servaddr, 0,
sizeof(servaddr));
2640 if (inet_pton(AF_INET,
"253.192.0.0", &servaddr.sin_addr) <= 0)
2644 memset(&servaddr, 0,
sizeof(servaddr));
2645 if (inet_pton(AF_INET,
"253.192.235.0", &servaddr.sin_addr) <= 0)
2649 memset(&servaddr, 0,
sizeof(servaddr));
2650 if (inet_pton(AF_INET,
"192.167.0.0", &servaddr.sin_addr) <= 0)
2654 memset(&servaddr, 0,
sizeof(servaddr));
2655 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2659 memset(&servaddr, 0,
sizeof(servaddr));
2660 if (inet_pton(AF_INET,
"220.168.0.0", &servaddr.sin_addr) <= 0)
2664 memset(&servaddr, 0,
sizeof(servaddr));
2665 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2669 memset(&servaddr, 0,
sizeof(servaddr));
2670 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2674 memset(&servaddr, 0,
sizeof(servaddr));
2675 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2679 memset(&servaddr, 0,
sizeof(servaddr));
2680 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2684 memset(&servaddr, 0,
sizeof(servaddr));
2685 if (inet_pton(AF_INET,
"192.171.0.0", &servaddr.sin_addr) <= 0)
2689 if (inet_pton(AF_INET,
"192.175.0.0", &servaddr.sin_addr) <= 0)
2696 memset(&servaddr, 0,
sizeof(servaddr));
2697 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2702 SCLogDebug(
"search \"exact\" match for 192.171.128.45");
2703 memset(&servaddr, 0,
sizeof(servaddr));
2704 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2709 SCLogDebug(
"search \"best\" match for 192.171.128.45");
2710 memset(&servaddr, 0,
sizeof(servaddr));
2711 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2716 memset(&servaddr, 0,
sizeof(servaddr));
2717 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
2723 memset(&servaddr, 0,
sizeof(servaddr));
2724 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2728 memset(&servaddr, 0,
sizeof(servaddr));
2729 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
2734 memset(&servaddr, 0,
sizeof(servaddr));
2735 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
2744 static int SCRadixTestIPV4NetblockInsertion11(
void)
2748 struct sockaddr_in servaddr;
2754 memset(&servaddr, 0,
sizeof(servaddr));
2755 if (inet_pton(AF_INET,
"253.192.0.0", &servaddr.sin_addr) <= 0)
2759 memset(&servaddr, 0,
sizeof(servaddr));
2760 if (inet_pton(AF_INET,
"253.192.235.0", &servaddr.sin_addr) <= 0)
2764 memset(&servaddr, 0,
sizeof(servaddr));
2765 if (inet_pton(AF_INET,
"192.167.0.0", &servaddr.sin_addr) <= 0)
2769 memset(&servaddr, 0,
sizeof(servaddr));
2770 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2774 memset(&servaddr, 0,
sizeof(servaddr));
2775 if (inet_pton(AF_INET,
"220.168.0.0", &servaddr.sin_addr) <= 0)
2779 memset(&servaddr, 0,
sizeof(servaddr));
2780 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2784 memset(&servaddr, 0,
sizeof(servaddr));
2785 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2789 memset(&servaddr, 0,
sizeof(servaddr));
2790 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2794 memset(&servaddr, 0,
sizeof(servaddr));
2795 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2799 memset(&servaddr, 0,
sizeof(servaddr));
2800 if (inet_pton(AF_INET,
"192.171.0.0", &servaddr.sin_addr) <= 0)
2804 if (inet_pton(AF_INET,
"192.175.0.0", &servaddr.sin_addr) <= 0)
2808 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2813 memset(&servaddr, 0,
sizeof(servaddr));
2814 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2818 memset(&servaddr, 0,
sizeof(servaddr));
2819 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2823 memset(&servaddr, 0,
sizeof(servaddr));
2824 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
2828 memset(&servaddr, 0,
sizeof(servaddr));
2829 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
2833 memset(&servaddr, 0,
sizeof(servaddr));
2834 if (inet_pton(AF_INET,
"1.1.1.1", &servaddr.sin_addr) <= 0)
2838 memset(&servaddr, 0,
sizeof(servaddr));
2839 if (inet_pton(AF_INET,
"192.255.254.25", &servaddr.sin_addr) <= 0)
2843 memset(&servaddr, 0,
sizeof(servaddr));
2844 if (inet_pton(AF_INET,
"169.255.254.25", &servaddr.sin_addr) <= 0)
2848 memset(&servaddr, 0,
sizeof(servaddr));
2849 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2853 memset(&servaddr, 0,
sizeof(servaddr));
2854 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2859 memset(&servaddr, 0,
sizeof(servaddr));
2860 if (inet_pton(AF_INET,
"245.63.62.121", &servaddr.sin_addr) <= 0)
2865 memset(&servaddr, 0,
sizeof(servaddr));
2866 if (inet_pton(AF_INET,
"253.224.1.6", &servaddr.sin_addr) <= 0)
2872 memset(&servaddr, 0,
sizeof(servaddr));
2873 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2877 memset(&servaddr, 0,
sizeof(servaddr));
2878 if (inet_pton(AF_INET,
"253.224.1.6", &servaddr.sin_addr) <= 0)
2882 memset(&servaddr, 0,
sizeof(servaddr));
2883 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
2887 memset(&servaddr, 0,
sizeof(servaddr));
2888 if (inet_pton(AF_INET,
"1.1.1.1", &servaddr.sin_addr) <= 0)
2892 memset(&servaddr, 0,
sizeof(servaddr));
2893 if (inet_pton(AF_INET,
"192.255.254.25", &servaddr.sin_addr) <= 0)
2897 memset(&servaddr, 0,
sizeof(servaddr));
2898 if (inet_pton(AF_INET,
"169.255.254.25", &servaddr.sin_addr) <= 0)
2902 memset(&servaddr, 0,
sizeof(servaddr));
2903 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2912 static int SCRadixTestIPV4NetblockInsertion12(
void)
2916 struct sockaddr_in servaddr;
2922 memset(&servaddr, 0,
sizeof(servaddr));
2923 if (inet_pton(AF_INET,
"253.192.0.0", &servaddr.sin_addr) <= 0)
2927 memset(&servaddr, 0,
sizeof(servaddr));
2928 if (inet_pton(AF_INET,
"253.192.235.0", &servaddr.sin_addr) <= 0)
2932 memset(&servaddr, 0,
sizeof(servaddr));
2933 if (inet_pton(AF_INET,
"192.167.0.0", &servaddr.sin_addr) <= 0)
2937 memset(&servaddr, 0,
sizeof(servaddr));
2938 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2942 memset(&servaddr, 0,
sizeof(servaddr));
2943 if (inet_pton(AF_INET,
"220.168.0.0", &servaddr.sin_addr) <= 0)
2947 memset(&servaddr, 0,
sizeof(servaddr));
2948 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2952 memset(&servaddr, 0,
sizeof(servaddr));
2953 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2957 memset(&servaddr, 0,
sizeof(servaddr));
2958 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2962 memset(&servaddr, 0,
sizeof(servaddr));
2963 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2967 memset(&servaddr, 0,
sizeof(servaddr));
2968 if (inet_pton(AF_INET,
"192.171.0.0", &servaddr.sin_addr) <= 0)
2972 if (inet_pton(AF_INET,
"225.175.21.228", &servaddr.sin_addr) <= 0)
2977 memset(&servaddr, 0,
sizeof(servaddr));
2978 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2982 memset(&servaddr, 0,
sizeof(servaddr));
2983 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2987 memset(&servaddr, 0,
sizeof(servaddr));
2988 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2992 memset(&servaddr, 0,
sizeof(servaddr));
2993 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2997 memset(&servaddr, 0,
sizeof(servaddr));
2998 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
3002 memset(&servaddr, 0,
sizeof(servaddr));
3003 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
3007 memset(&servaddr, 0,
sizeof(servaddr));
3008 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
3012 memset(&servaddr, 0,
sizeof(servaddr));
3013 if (inet_pton(AF_INET,
"225.175.21.228", &servaddr.sin_addr) <= 0)
3017 memset(&servaddr, 0,
sizeof(servaddr));
3018 if (inet_pton(AF_INET,
"225.175.21.224", &servaddr.sin_addr) <= 0)
3022 memset(&servaddr, 0,
sizeof(servaddr));
3023 if (inet_pton(AF_INET,
"225.175.21.229", &servaddr.sin_addr) <= 0)
3027 memset(&servaddr, 0,
sizeof(servaddr));
3028 if (inet_pton(AF_INET,
"225.175.21.230", &servaddr.sin_addr) <= 0)
3037 static int SCRadixTestIPV6NetblockInsertion13(
void)
3040 struct sockaddr_in6 servaddr;
3046 memset(&servaddr, 0,
sizeof(servaddr));
3047 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
3048 &servaddr.sin6_addr) <= 0)
3052 memset(&servaddr, 0,
sizeof(servaddr));
3053 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
3054 &servaddr.sin6_addr) <= 0)
3058 memset(&servaddr, 0,
sizeof(servaddr));
3059 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3060 &servaddr.sin6_addr) <= 0)
3064 memset(&servaddr, 0,
sizeof(servaddr));
3065 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
3066 &servaddr.sin6_addr) <= 0)
3070 memset(&servaddr, 0,
sizeof(servaddr));
3071 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
3072 &servaddr.sin6_addr) <= 0)
3076 memset(&servaddr, 0,
sizeof(servaddr));
3077 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DB00:0000:0000:0000:0000",
3078 &servaddr.sin6_addr) <= 0)
3082 memset(&servaddr, 0,
sizeof(servaddr));
3083 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3084 &servaddr.sin6_addr) <= 0)
3089 memset(&servaddr, 0,
sizeof(servaddr));
3090 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
3091 &servaddr.sin6_addr) <= 0)
3095 memset(&servaddr, 0,
sizeof(servaddr));
3096 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
3097 &servaddr.sin6_addr) <= 0)
3101 memset(&servaddr, 0,
sizeof(servaddr));
3102 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3103 &servaddr.sin6_addr) <= 0)
3107 memset(&servaddr, 0,
sizeof(servaddr));
3108 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3109 &servaddr.sin6_addr) <= 0)
3113 memset(&servaddr, 0,
sizeof(servaddr));
3114 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
3115 &servaddr.sin6_addr) <= 0)
3119 memset(&servaddr, 0,
sizeof(servaddr));
3120 if (inet_pton(AF_INET6,
"DBCA:ABC2:ABCD:DBCA:1245:2342:1111:2212",
3121 &servaddr.sin6_addr) <= 0)
3125 memset(&servaddr, 0,
sizeof(servaddr));
3126 if (inet_pton(AF_INET6,
"2003:0BF5:5346:1251:7422:1112:9124:2315",
3127 &servaddr.sin6_addr) <= 0)
3131 memset(&servaddr, 0,
sizeof(servaddr));
3132 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
3133 &servaddr.sin6_addr) <= 0)
3137 memset(&servaddr, 0,
sizeof(servaddr));
3138 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
3139 &servaddr.sin6_addr) <= 0)
3143 memset(&servaddr, 0,
sizeof(servaddr));
3144 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1146:6241",
3145 &servaddr.sin6_addr) <= 0)
3149 memset(&servaddr, 0,
sizeof(servaddr));
3150 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1356:1241",
3151 &servaddr.sin6_addr) <= 0)
3155 memset(&servaddr, 0,
sizeof(servaddr));
3156 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DAAA:1245:2342:1146:6241",
3157 &servaddr.sin6_addr) <= 0)
3167 static int SCRadixTestIPV6NetblockInsertion14(
void)
3171 struct sockaddr_in6 servaddr;
3177 memset(&servaddr, 0,
sizeof(servaddr));
3178 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
3179 &servaddr.sin6_addr) <= 0)
3183 memset(&servaddr, 0,
sizeof(servaddr));
3184 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
3185 &servaddr.sin6_addr) <= 0)
3189 memset(&servaddr, 0,
sizeof(servaddr));
3190 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3191 &servaddr.sin6_addr) <= 0)
3195 memset(&servaddr, 0,
sizeof(servaddr));
3196 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
3197 &servaddr.sin6_addr) <= 0)
3201 memset(&servaddr, 0,
sizeof(servaddr));
3202 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
3203 &servaddr.sin6_addr) <= 0)
3207 memset(&servaddr, 0,
sizeof(servaddr));
3208 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DB00:0000:0000:0000:0000",
3209 &servaddr.sin6_addr) <= 0)
3213 memset(&servaddr, 0,
sizeof(servaddr));
3214 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3215 &servaddr.sin6_addr) <= 0)
3219 memset(&servaddr, 0,
sizeof(servaddr));
3220 if (inet_pton(AF_INET6,
"::", &servaddr.sin6_addr) <= 0)
3226 memset(&servaddr, 0,
sizeof(servaddr));
3227 if (inet_pton(AF_INET6,
"2004:0BF1:5346:BDEA:7422:8713:9124:2315",
3228 &servaddr.sin6_addr) <= 0)
3232 memset(&servaddr, 0,
sizeof(servaddr));
3233 if (inet_pton(AF_INET6,
"2004:0BF1:5346:BDEA:7422:8713:9124:2315",
3234 &servaddr.sin6_addr) <= 0)
3238 memset(&servaddr, 0,
sizeof(servaddr));
3239 if (inet_pton(AF_INET6,
"2004:0BF1:5346:B116:2362:8713:9124:2315",
3240 &servaddr.sin6_addr) <= 0)
3244 memset(&servaddr, 0,
sizeof(servaddr));
3245 if (inet_pton(AF_INET6,
"2004:0B23:3252:BDEA:7422:8713:9124:2341",
3246 &servaddr.sin6_addr) <= 0)
3250 memset(&servaddr, 0,
sizeof(servaddr));
3251 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3252 &servaddr.sin6_addr) <= 0)
3257 memset(&servaddr, 0,
sizeof(servaddr));
3258 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3259 &servaddr.sin6_addr) <= 0)
3273 static int SCRadixTestIPV4NetBlocksAndBestSearch15(
void)
3279 struct sockaddr_in servaddr;
3280 memset(&servaddr, 0,
sizeof(servaddr));
3281 FAIL_IF(inet_pton(AF_INET,
"192.168.0.1", &servaddr.sin_addr) <= 0);
3283 for (uint32_t i = 0; i <= 32; i++) {
3284 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3289 snprintf(
str,
sizeof(
str),
"192.168.0.1/%u", i);
3292 void *user_data = NULL;
3296 FAIL_IF(*((uint32_t *)user_data) != i);
3307 static int SCRadixTestIPV4NetBlocksAndBestSearch16(
void)
3313 struct sockaddr_in servaddr;
3314 memset(&servaddr, 0,
sizeof(servaddr));
3315 FAIL_IF(inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0);
3317 for (uint32_t i = 0; i <= 32; i++) {
3318 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3323 snprintf(
str,
sizeof(
str),
"192.168.1.1/%u", i);
3326 void *user_data = NULL;
3330 FAIL_IF(*((uint32_t *)user_data) != i);
3341 static int SCRadixTestIPV4NetBlocksAndBestSearch17(
void)
3346 struct sockaddr_in servaddr;
3347 memset(&servaddr, 0,
sizeof(servaddr));
3348 FAIL_IF(inet_pton(AF_INET,
"10.0.0.1", &servaddr.sin_addr) <= 0);
3350 for (uint32_t i = 0; i <= 32; i++) {
3351 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3356 snprintf(
str,
sizeof(
str),
"10.0.0.1/%u", i);
3359 void *user_data = NULL;
3363 FAIL_IF(*((uint32_t *)user_data) != i);
3374 static int SCRadixTestIPV4NetBlocksAndBestSearch18(
void)
3379 struct sockaddr_in servaddr;
3380 memset(&servaddr, 0,
sizeof(servaddr));
3381 FAIL_IF(inet_pton(AF_INET,
"172.26.0.1", &servaddr.sin_addr) <= 0);
3383 for (uint32_t i = 0; i <= 32; i++) {
3384 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3389 snprintf(
str,
sizeof(
str),
"172.26.0.1/%u", i);
3392 void *user_data = NULL;
3396 FAIL_IF(*((uint32_t *)user_data) != i);
3407 static int SCRadixTestIPV4NetBlocksAndBestSearch19(
void)
3412 struct sockaddr_in servaddr;
3413 memset(&servaddr, 0,
sizeof(servaddr));
3414 FAIL_IF(inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0);
3416 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3422 memset(&servaddr, 0,
sizeof(servaddr));
3423 FAIL_IF(inet_pton(AF_INET,
"192.168.1.15", &servaddr.sin_addr) <= 0);
3424 void *user_data = NULL;
3428 FAIL_IF(*((uint32_t *)user_data) != 100);
3431 memset(&servaddr, 0,
sizeof(servaddr));
3432 FAIL_IF(inet_pton(AF_INET,
"177.0.0.0", &servaddr.sin_addr) <= 0);
3439 memset(&servaddr, 0,
sizeof(servaddr));
3440 FAIL_IF(inet_pton(AF_INET,
"177.168.1.15", &servaddr.sin_addr) <= 0);
3445 FAIL_IF(*((uint32_t *)user_data) != 200);
3448 memset(&servaddr, 0,
sizeof(servaddr));
3449 FAIL_IF(inet_pton(AF_INET,
"178.168.1.15", &servaddr.sin_addr) <= 0);
3454 FAIL_IF(*((uint32_t *)user_data) != 100);
3457 memset(&servaddr, 0,
sizeof(servaddr));
3458 FAIL_IF(inet_pton(AF_INET,
"177.160.0.0", &servaddr.sin_addr) <= 0);
3465 memset(&servaddr, 0,
sizeof(servaddr));
3466 FAIL_IF(inet_pton(AF_INET,
"177.168.1.15", &servaddr.sin_addr) <= 0);
3471 FAIL_IF(*((uint32_t *)user_data) != 300);
3474 memset(&servaddr, 0,
sizeof(servaddr));
3475 FAIL_IF(inet_pton(AF_INET,
"177.167.1.15", &servaddr.sin_addr) <= 0);
3480 FAIL_IF(*((uint32_t *)user_data) != 300);
3483 memset(&servaddr, 0,
sizeof(servaddr));
3484 FAIL_IF(inet_pton(AF_INET,
"177.178.1.15", &servaddr.sin_addr) <= 0);
3489 FAIL_IF(*((uint32_t *)user_data) != 200);
3492 memset(&servaddr, 0,
sizeof(servaddr));
3493 FAIL_IF(inet_pton(AF_INET,
"197.178.1.15", &servaddr.sin_addr) <= 0);
3498 FAIL_IF(*((uint32_t *)user_data) != 100);
3508 static int SCRadixTestIPV6NetBlocksAndBestSearch20(
void)
3513 struct sockaddr_in6 servaddr;
3514 memset(&servaddr, 0,
sizeof(servaddr));
3515 FAIL_IF(inet_pton(AF_INET6,
"ABAB:CDCD:ABAB:CDCD:1234:4321:1234:4321", &servaddr.sin6_addr) <=
3518 for (uint32_t i = 0; i <= 128; i++) {
3519 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3524 snprintf(
str,
sizeof(
str),
"ABAB:CDCD:ABAB:CDCD:1234:4321:1234:4321/%u", i);
3527 void *user_data = NULL;
3531 FAIL_IF(*((uint32_t *)user_data) != i);
3542 static int SCRadixTestIPV6NetBlocksAndBestSearch21(
void)
3547 struct sockaddr_in6 servaddr;
3548 memset(&servaddr, 0,
sizeof(servaddr));
3549 FAIL_IF(inet_pton(AF_INET6,
"ff00::1", &servaddr.sin6_addr) <= 0);
3551 for (uint32_t i = 0; i <= 128; i++) {
3552 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3557 snprintf(
str,
sizeof(
str),
"ff00::1/%u", i);
3560 void *user_data = NULL;
3564 FAIL_IF(*((uint32_t *)user_data) != i);
3575 static int SCRadixTestIPV6NetBlocksAndBestSearch22(
void)
3580 struct sockaddr_in6 servaddr;
3581 memset(&servaddr, 0,
sizeof(servaddr));
3582 FAIL_IF(inet_pton(AF_INET6,
"ff00::192:168:1:1", &servaddr.sin6_addr) <= 0);
3584 for (uint32_t i = 0; i <= 128; i++) {
3585 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3590 snprintf(
str,
sizeof(
str),
"ff00::192:168:1:1/%u", i);
3593 void *user_data = NULL;
3597 FAIL_IF(*((uint32_t *)user_data) != i);
3608 static int SCRadixTestIPV6NetBlocksAndBestSearch23(
void)
3613 struct sockaddr_in6 servaddr;
3614 memset(&servaddr, 0,
sizeof(servaddr));
3615 FAIL_IF(inet_pton(AF_INET6,
"FF00:ABCD:BCDA::ABCD", &servaddr.sin6_addr) <= 0);
3617 for (uint32_t i = 0; i <= 128; i++) {
3618 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3623 snprintf(
str,
sizeof(
str),
"FF00:ABCD:BCDA::ABCD/%u", i);
3626 void *user_data = NULL;
3630 FAIL_IF(*((uint32_t *)user_data) != i);
3641 static int SCRadixTestIPV6NetBlocksAndBestSearch24(
void)
3643 struct sockaddr_in6 servaddr;
3644 void *user_data = NULL;
3649 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3654 memset(&servaddr, 0,
sizeof(servaddr));
3655 FAIL_IF(inet_pton(AF_INET6,
"ABCD::1", &servaddr.sin6_addr) <= 0);
3659 FAIL_IF(*((uint32_t *)user_data) != 100);
3667 memset(&servaddr, 0,
sizeof(servaddr));
3668 FAIL_IF(inet_pton(AF_INET6,
"ABCD::1", &servaddr.sin6_addr) <= 0);
3672 FAIL_IF(*((uint32_t *)user_data) != 200);
3675 memset(&servaddr, 0,
sizeof(servaddr));
3676 FAIL_IF(inet_pton(AF_INET6,
"DCBA::1", &servaddr.sin6_addr) <= 0);
3681 FAIL_IF(*((uint32_t *)user_data) != 100);
3689 memset(&servaddr, 0,
sizeof(servaddr));
3690 FAIL_IF(inet_pton(AF_INET6,
"ABCD:ABCD::1", &servaddr.sin6_addr) <= 0);
3694 FAIL_IF(*((uint32_t *)user_data) != 300);
3697 memset(&servaddr, 0,
sizeof(servaddr));
3698 FAIL_IF(inet_pton(AF_INET6,
"ABCD:AAAA::1", &servaddr.sin6_addr) <= 0);
3702 FAIL_IF(*((uint32_t *)user_data) != 300);
3705 memset(&servaddr, 0,
sizeof(servaddr));
3706 FAIL_IF(inet_pton(AF_INET6,
"ABAB::1", &servaddr.sin6_addr) <= 0);
3710 FAIL_IF(*((uint32_t *)user_data) != 200);
3713 memset(&servaddr, 0,
sizeof(servaddr));
3714 FAIL_IF(inet_pton(AF_INET6,
"CABD::1", &servaddr.sin6_addr) <= 0);
3718 FAIL_IF(*((uint32_t *)user_data) != 100);
3729 static int SCRadixTestIPV4NetblockInsertion25(
void)
3732 struct sockaddr_in servaddr;
3737 memset(&servaddr, 0,
sizeof(servaddr));
3738 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
3743 memset(&servaddr, 0,
sizeof(servaddr));
3744 if (inet_pton(AF_INET,
"192.168.128.53", &servaddr.sin_addr) <= 0)
3759 static int SCRadixTestIPV4NetblockInsertion26(
void)
3761 struct sockaddr_in servaddr;
3766 memset(&servaddr, 0,
sizeof(servaddr));
3767 FAIL_IF(inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0);
3777 memset(&servaddr, 0,
sizeof(servaddr));
3778 FAIL_IF(inet_pton(AF_INET,
"176.0.0.0", &servaddr.sin_addr) <= 0);
3786 memset(&servaddr, 0,
sizeof(servaddr));
3787 FAIL_IF(inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0);
3806 UtRegisterTest(
"SCRadixTestIPV4Insertion03", SCRadixTestIPV4Insertion03);
3807 UtRegisterTest(
"SCRadixTestIPV4Removal04", SCRadixTestIPV4Removal04);
3808 UtRegisterTest(
"SCRadixTestIPV6Insertion07", SCRadixTestIPV6Insertion07);
3809 UtRegisterTest(
"SCRadixTestIPV6Removal08", SCRadixTestIPV6Removal08);
3811 SCRadixTestIPV4NetblockInsertion09);
3812 UtRegisterTest(
"SCRadixTestIPV4Bug5066", SCRadixTestIPV4Bug5066);
3813 UtRegisterTest(
"SCRadixTestIPV4Bug5066v2", SCRadixTestIPV4Bug5066v2);
3814 UtRegisterTest(
"SCRadixTestIPV6Bug5066", SCRadixTestIPV6Bug5066);
3816 SCRadixTestIPV4NetblockInsertion10);
3818 SCRadixTestIPV4NetblockInsertion11);
3820 SCRadixTestIPV4NetblockInsertion12);
3822 SCRadixTestIPV6NetblockInsertion13);
3824 SCRadixTestIPV6NetblockInsertion14);
3826 SCRadixTestIPV4NetBlocksAndBestSearch15);
3828 SCRadixTestIPV4NetBlocksAndBestSearch16);
3830 SCRadixTestIPV4NetBlocksAndBestSearch17);
3832 SCRadixTestIPV4NetBlocksAndBestSearch18);
3834 SCRadixTestIPV4NetBlocksAndBestSearch19);
3836 SCRadixTestIPV6NetBlocksAndBestSearch20);
3838 SCRadixTestIPV6NetBlocksAndBestSearch21);
3840 SCRadixTestIPV6NetBlocksAndBestSearch22);
3842 SCRadixTestIPV6NetBlocksAndBestSearch23);
3844 SCRadixTestIPV6NetBlocksAndBestSearch24);
3846 SCRadixTestIPV4NetblockInsertion25);
3848 SCRadixTestIPV4NetblockInsertion26);