48 static SCRadixUserData *SCRadixAllocSCRadixUserData(uint8_t netmask,
void *user)
59 user_data->
user = user;
92 if (
new == NULL || list == NULL) {
99 while (temp != NULL) {
100 if (new->netmask > temp->
netmask)
130 static SCRadixPrefix *SCRadixCreatePrefix(uint8_t *key_stream,
131 uint16_t key_bitlen,
void *user,
136 if (key_bitlen == 0 || (key_bitlen % 8 != 0)) {
137 SCLogError(
"Invalid argument bitlen - %d", key_bitlen);
141 if (key_stream == NULL) {
154 memset(prefix->
stream, 0, key_bitlen / 8);
156 memcpy(prefix->
stream, key_stream, key_bitlen / 8);
157 prefix->
bitlen = key_bitlen;
159 prefix->
user_data = SCRadixAllocSCRadixUserData(netmask, user);
167 if (prefix != NULL) {
168 if (prefix->
stream != NULL) {
186 static void SCRadixAddNetmaskUserDataToPrefix(
SCRadixPrefix *prefix,
190 if (prefix == NULL || user == NULL) {
194 SCRadixAppendToSCRadixUserDataList(SCRadixAllocSCRadixUserData(netmask, user),
208 static void SCRadixRemoveNetmaskUserDataFromPrefix(
SCRadixPrefix *prefix,
213 if (prefix == NULL) {
218 while (temp != NULL) {
219 if (temp->
netmask == netmask) {
225 SCRadixDeAllocSCRadixUserData(temp);
245 static int SCRadixPrefixContainNetmask(
SCRadixPrefix *prefix, uint8_t netmask)
249 if (prefix == NULL) {
255 while (user_data != NULL) {
256 if (user_data->
netmask == netmask)
258 user_data = user_data->
next;
277 if (prefix == NULL) {
283 while (user_data != NULL) {
285 user_data = user_data->
next;
304 static int SCRadixPrefixContainNetmaskAndSetUserData(
SCRadixPrefix *prefix,
307 void **user_data_result)
311 if (prefix == NULL) {
320 if (user_data->
netmask == netmask) {
321 if (user_data_result)
322 *user_data_result = user_data->
user;
330 while (user_data != NULL) {
331 if (user_data->
netmask == netmask) {
332 if (user_data_result)
333 *user_data_result = user_data->
user;
336 user_data = user_data->
next;
340 if (user_data_result != NULL)
341 *user_data_result = NULL;
356 if (prefix != NULL) {
357 if (prefix->
stream != NULL)
361 if (tree->
Free != NULL) {
362 while (user_data_temp1 != NULL) {
363 user_data_temp2 = user_data_temp1;
364 user_data_temp1 = user_data_temp1->
next;
366 SCRadixDeAllocSCRadixUserData(user_data_temp2);
368 }
else if (user_data_temp1 != NULL) {
388 SCLogError(
"Fatal error encountered in SCRadixCreateNode. Mem not allocated...");
405 SCRadixReleasePrefix(node->
prefix, tree);
431 FatalError(
"Fatal error encountered in SCRadixCreateRadixTree. Exiting...");
451 SCRadixReleaseRadixSubtree(node->
left, tree);
452 SCRadixReleaseRadixSubtree(node->
right, tree);
453 SCRadixReleaseNode(node, tree);
469 SCRadixReleaseRadixSubtree(tree->
head, tree);
491 uint8_t *key_stream, uint8_t key_bitlen,
SCRadixTree *tree,
void *user, uint8_t netmask)
500 uint8_t *stream = NULL;
503 uint16_t check_bit = 0;
504 uint16_t differ_bit = 0;
518 if (tree->
head == NULL) {
520 if ( (prefix = SCRadixCreatePrefix(key_stream, key_bitlen, user,
525 node = SCRadixCreateNode();
527 SCRadixReleasePrefix(prefix, tree);
533 if (netmask == 255 || (netmask == 32 && key_bitlen == 32) || (netmask == 128 && key_bitlen == 128))
546 sizeof(uint8_t)))) == NULL) {
549 SCLogError(
"Fatal error encountered in SCRadixAddKey. Mem not allocated");
565 while (node->
bit < bitlen || node->
prefix == NULL) {
570 if (bitlen <= node->bit) {
571 if (node->
right == NULL)
576 (0x80 >> (node->
bit % 8))) ) {
577 if (node->
right == NULL)
581 if (node->
left == NULL)
596 check_bit = (node->
bit < bitlen)? node->
bit: bitlen;
597 for (i = 0; (i * 8) < check_bit; i++) {
599 if ((temp = (stream[i] ^ bottom_node->
prefix->
stream[i])) == 0) {
600 differ_bit = (i + 1) * 8;
610 else if (temp >= 128)
625 differ_bit = i * 8 + j;
628 if (check_bit < differ_bit)
629 differ_bit = check_bit;
633 while (parent && differ_bit <= parent->bit) {
639 if (differ_bit == bitlen && node->
bit == bitlen) {
640 if (node->
prefix != NULL) {
642 if (SCRadixPrefixContainNetmask(node->
prefix, netmask)) {
645 SCLogDebug(
"Duplicate entry for this ip address/netblock");
651 SCRadixAddNetmaskUserDataToPrefix(node->
prefix, netmask, user);
657 if (netmask == 255 || (netmask == 32 && bitlen == 32) || (netmask == 128 && bitlen == 128))
664 while (parent != NULL && netmask < (parent->
bit + 1)) {
673 sizeof(uint8_t)))) == NULL) {
676 SCLogError(
"Fatal error encountered in SCRadixAddKey. Mem not allocated...");
689 if (netmask < node->netmasks[i - 1]) {
699 node->
prefix = SCRadixCreatePrefix(key_stream, key_bitlen,
707 if ( (prefix = SCRadixCreatePrefix(key_stream, key_bitlen, user,
712 new_node = SCRadixCreateNode();
713 new_node->
prefix = prefix;
720 if (differ_bit == bitlen) {
722 (0x80 >> (differ_bit % 8))) ) {
723 new_node->
right = node;
725 new_node->
left = node;
730 tree->
head = new_node;
742 inter_node = SCRadixCreateNode();
743 inter_node->
prefix = NULL;
744 inter_node->
bit = differ_bit;
749 if (node->
netmasks[i] < differ_bit + 1)
753 if (i < node->netmask_cnt) {
755 sizeof(uint8_t))) == NULL) {
756 SCLogError(
"Fatal error encountered in SCRadixAddKey. Mem not allocated...");
757 SCRadixReleaseNode(inter_node, tree);
758 SCRadixReleaseNode(new_node, tree);
771 (0x80 >> (differ_bit % 8))) ) {
772 inter_node->
left = node;
773 inter_node->
right = new_node;
775 inter_node->
left = new_node;
776 inter_node->
right = node;
778 new_node->
parent = inter_node;
781 tree->
head = inter_node;
787 node->
parent = inter_node;
791 if (netmask != 255 && (netmask != 32 || (netmask == 32 && bitlen != 32)) && netmask != 128) {
793 parent = new_node->
parent;
794 while (parent != NULL && netmask < (parent->
bit + 1)) {
801 sizeof(uint8_t)))) == NULL) {
804 FatalError(
"Fatal error encountered in SCRadixAddKey. Exiting...");
816 if (netmask < node->netmasks[i - 1]) {
843 SCRadixNode *node = SCRadixAddKey(key_stream, 32, tree, user, 32);
862 SCRadixNode *node = SCRadixAddKey(key_stream, 128, tree, user, 128);
867 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
868 static void SCRadixValidateIPv4Key(uint8_t *key,
const uint8_t netmask)
872 uint32_t mask =
CIDRGet(netmask);
874 uint32_t masked =
address & mask;
875 char ostr[16], nstr[16];
877 PrintInet(AF_INET, (
void *)&masked, nstr,
sizeof(nstr));
878 SCLogNotice(
"input %s/%u != expected %s/%u", ostr, netmask, nstr, netmask);
883 static void SCRadixValidateIPv6Key(uint8_t *key,
const uint8_t netmask)
889 memset(&mask, 0,
sizeof(mask));
890 struct in6_addr mask6;
892 memcpy(&mask, &mask6.s6_addr,
sizeof(mask));
895 masked[0] =
address[0] & mask[0];
896 masked[1] =
address[1] & mask[1];
897 masked[2] =
address[2] & mask[2];
898 masked[3] =
address[3] & mask[3];
900 if (memcmp(masked,
address,
sizeof(masked)) != 0) {
901 char ostr[64], nstr[64];
903 PrintInet(AF_INET6, (
void *)&masked, nstr,
sizeof(nstr));
904 SCLogNotice(
"input %s/%u != expected %s/%u", ostr, netmask, nstr, netmask);
923 void *user, uint8_t netmask)
925 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
926 SCRadixValidateIPv4Key(key_stream, netmask);
928 SCRadixNode *node = SCRadixAddKey(key_stream, 32, tree, user, netmask);
946 void *user, uint8_t netmask)
948 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
949 SCRadixValidateIPv6Key(key_stream, netmask);
951 SCRadixNode *node = SCRadixAddKey(key_stream, 128, tree, user, netmask);
969 uint8_t netmask = 32;
971 char *mask_str = NULL;
976 *(ip_str + (
sizeof(ip_str) - 1)) =
'\0';
979 if (NULL != (mask_str = strchr(ip_str,
'/'))) {
981 *(mask_str++) =
'\0';
984 if (strchr(mask_str,
'.') != NULL) {
993 netmask = (uint8_t)cidr;
997 if (inet_pton(AF_INET, ip_str, &addr) <= 0) {
1001 if (netmask != 32) {
1002 uint32_t mask =
CIDRGet(netmask);
1003 uint32_t masked = ip & mask;
1006 PrintInet(AF_INET, (
void *)&masked, nstr,
sizeof(nstr));
1010 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1011 SCRadixValidateIPv4Key((uint8_t *)&ip, netmask);
1014 return SCRadixAddKey((uint8_t *)&ip, 32, tree, user, netmask);
1029 uint8_t netmask = 128;
1031 char *mask_str = NULL;
1032 struct in6_addr addr;
1036 *(ip_str +
sizeof(ip_str) - 1) =
'\0';
1039 if (NULL != (mask_str = strchr(ip_str,
'/'))) {
1041 *(mask_str++) =
'\0';
1044 if (strchr(mask_str,
'.') != NULL) {
1053 netmask = (uint8_t)cidr;
1057 if (inet_pton(AF_INET6, ip_str, &addr) <= 0) {
1061 if (netmask != 128) {
1062 struct in6_addr mask6, check;
1064 memcpy(&check, &addr,
sizeof(check));
1066 for (
int i = 0; i < 16; i++) {
1067 addr.s6_addr[i] &= mask6.s6_addr[i];
1068 diff |= (addr.s6_addr[i] != check.s6_addr[i]);
1072 PrintInet(AF_INET6, (
void *)&addr.s6_addr, nstr,
sizeof(nstr));
1075 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1076 SCRadixValidateIPv6Key((uint8_t *)&addr.s6_addr, netmask);
1080 return SCRadixAddKey(addr.s6_addr, 128, tree, user, netmask);
1088 if (
src == NULL || dest == NULL) {
1094 if (
src->netmasks == NULL)
1099 sizeof(uint8_t))) == NULL) {
1106 for (i = dest->
netmask_cnt, j = 0; j < src->netmask_cnt; i++, j++)
1121 static void SCRadixRemoveNetblockEntry(
SCRadixNode *node, uint8_t netmask)
1128 SCLogError(
"Invalid argument. Node is NULL");
1132 SCRadixRemoveNetmaskUserDataFromPrefix(node->
prefix, netmask);
1134 if (netmask == 32 || netmask == 128)
1138 while (parent != NULL && netmask < (parent->
bit + 1)) {
1148 SCLogDebug(
"Something's wrong with the tree. We are unable to find the "
1183 static void SCRadixRemoveKey(uint8_t *key_stream, uint16_t key_bitlen,
1198 if ( (prefix = SCRadixCreatePrefix(key_stream, key_bitlen, NULL, 255)) == NULL)
1203 (0x80 >> (node->
bit % 8))) ) {
1210 SCRadixReleasePrefix(prefix, tree);
1216 SCRadixReleasePrefix(prefix, tree);
1222 mask = UINT_MAX << (8 - prefix->
bitlen % 8);
1224 if (prefix->
bitlen % 8 == 0 ||
1226 if (!SCRadixPrefixContainNetmask(node->
prefix, netmask)) {
1227 SCLogDebug(
"The ip key exists in the Radix Tree, but this(%d) "
1228 "netblock entry doesn't exist", netmask);
1229 SCRadixReleasePrefix(prefix, tree);
1233 SCLogDebug(
"You are trying to remove a key that doesn't exist in "
1235 SCRadixReleasePrefix(prefix, tree);
1239 SCLogDebug(
"You are trying to remove a key that doesn't exist in the "
1241 SCRadixReleasePrefix(prefix, tree);
1249 if (SCRadixPrefixNetmaskCount(node->
prefix) > 1) {
1250 SCRadixRemoveNetblockEntry(node, netmask);
1251 SCRadixReleasePrefix(prefix, tree);
1257 if (tree->
head == node) {
1258 SCRadixReleaseNode(node, tree);
1260 SCRadixReleasePrefix(prefix, tree);
1266 if (parent->
parent != NULL) {
1269 temp_dest = parent->
right;
1273 temp_dest = parent->
left;
1279 temp_dest = parent->
right;
1283 temp_dest = parent->
left;
1290 if (parent->
left == node) {
1302 SCRadixTransferNetmasksBWNodes(temp_dest, parent);
1304 SCRadixReleaseNode(parent, tree);
1305 SCRadixReleaseNode(node, tree);
1306 SCRadixReleasePrefix(prefix, tree);
1322 SCRadixRemoveKey(key_stream, key_bitlen, tree, 255);
1337 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1338 SCRadixValidateIPv4Key(key_stream, netmask);
1340 SCRadixRemoveKey(key_stream, 32, tree, netmask);
1356 SCRadixRemoveKey(key_stream, 32, tree, 32);
1371 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1372 SCRadixValidateIPv6Key(key_stream, netmask);
1374 SCRadixRemoveKey(key_stream, 128, tree, netmask);
1390 SCRadixRemoveKey(key_stream, 128, tree, 128);
1401 static inline SCRadixNode *SCRadixFindKeyIPNetblock(
1402 uint8_t *key_stream, uint8_t key_bitlen,
SCRadixNode *node,
void **user_data_result)
1410 while (node != NULL && node->
netmasks == NULL)
1417 netmask_node = node;
1420 bytes = key_bitlen / 8;
1421 for (i = 0; i < bytes; i++) {
1423 if ( ((i + 1) * 8) > netmask_node->
netmasks[j]) {
1424 if ( ((i + 1) * 8 - netmask_node->
netmasks[j]) < 8)
1425 mask = UINT_MAX << ((i + 1) * 8 - netmask_node->
netmasks[j]);
1429 key_stream[i] &= mask;
1432 while (node->
bit < key_bitlen) {
1434 (0x80 >> (node->
bit % 8))) ) {
1444 if (node->
bit != key_bitlen || node->
prefix == NULL)
1448 mask = UINT_MAX << (8 - key_bitlen % 8);
1450 if (key_bitlen % 8 == 0 ||
1451 (node->
prefix->
stream[bytes] & mask) == (key_stream[bytes] & mask)) {
1452 if (SCRadixPrefixContainNetmaskAndSetUserData(node->
prefix, netmask_node->
netmasks[j], 0, user_data_result))
1458 return SCRadixFindKeyIPNetblock(key_stream, key_bitlen, netmask_node->
parent, user_data_result);
1471 static SCRadixNode *SCRadixFindKey(uint8_t *key_stream, uint8_t key_bitlen, uint8_t netmask,
1472 SCRadixTree *tree,
int exact_match,
void **user_data_result)
1474 if (tree == NULL || tree->
head == NULL)
1480 uint8_t tmp_stream[255];
1482 memset(tmp_stream, 0, 255);
1483 memcpy(tmp_stream, key_stream, key_bitlen / 8);
1485 while (node->
bit < key_bitlen) {
1487 (0x80 >> (node->
bit % 8))) ) {
1498 if (node->
bit != key_bitlen || node->
prefix == NULL) {
1502 bytes = key_bitlen / 8;
1504 mask = UINT_MAX << (8 - key_bitlen % 8);
1506 if (key_bitlen % 8 == 0 ||
1507 (node->
prefix->
stream[bytes] & mask) == (tmp_stream[bytes] & mask)) {
1508 if (SCRadixPrefixContainNetmaskAndSetUserData(
1509 node->
prefix, netmask, 1, user_data_result)) {
1520 SCRadixNode *ret = SCRadixFindKeyIPNetblock(tmp_stream, key_bitlen, node, user_data_result);
1533 return SCRadixFindKey(key_stream, 32, 32, tree, 1, user_data_result);
1545 return SCRadixFindKey(key_stream, 32, 32, tree, 0, user_data_result);
1556 uint8_t netmask,
void **user_data_result)
1558 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1559 SCRadixValidateIPv4Key(key_stream, netmask);
1561 SCRadixNode *node = SCRadixFindKey(key_stream, 32, netmask, tree, 1, user_data_result);
1573 uint8_t netmask,
void **user_data_result)
1575 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1576 SCRadixValidateIPv6Key(key_stream, netmask);
1578 SCRadixNode *node = SCRadixFindKey(key_stream, 128, netmask, tree, 1, user_data_result);
1591 return SCRadixFindKey(key_stream, 128, 128, tree, 1, user_data_result);
1603 return SCRadixFindKey(key_stream, 128, 128, tree, 0, user_data_result);
1619 for (i = 0; i < level; i++)
1622 printf(
"%d [", node->
bit);
1628 printf(
"%s%d", (0 == i ?
"" :
", "), node->
netmasks[i]);
1632 if (node->
prefix != NULL) {
1634 printf(
"%s%d", (0 == i ?
"" :
"."), node->
prefix->
stream[i]);
1639 for (
int x = 0; x <= level; x++)
1642 if (PrintData != NULL) {
1643 PrintData(ud->
user);
1649 }
while (ud != NULL);
1651 printf(
"inter_node)\n");
1664 static void SCRadixPrintRadixSubtree(
SCRadixNode *node,
int level,
void (*PrintData)(
void*))
1668 SCRadixPrintRadixSubtree(node->
left, level + 1, PrintData);
1669 SCRadixPrintRadixSubtree(node->
right, level + 1, PrintData);
1695 printf(
"Printing the Radix Tree: \n");
1706 static int SCRadixTestIPV4Insertion03(
void)
1709 struct sockaddr_in servaddr;
1715 memset(&servaddr, 0,
sizeof(servaddr));
1716 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1720 memset(&servaddr, 0,
sizeof(servaddr));
1721 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1725 memset(&servaddr, 0,
sizeof(servaddr));
1726 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1730 memset(&servaddr, 0,
sizeof(servaddr));
1731 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1739 memset(&servaddr, 0,
sizeof(servaddr));
1740 if (inet_pton(AF_INET,
"192.168.1.6", &servaddr.sin_addr) <= 0)
1745 memset(&servaddr, 0,
sizeof(servaddr));
1746 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1751 memset(&servaddr, 0,
sizeof(servaddr));
1752 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1756 memset(&servaddr, 0,
sizeof(servaddr));
1757 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1761 memset(&servaddr, 0,
sizeof(servaddr));
1762 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1767 memset(&servaddr, 0,
sizeof(servaddr));
1768 if (inet_pton(AF_INET,
"192.168.1.3", &servaddr.sin_addr) <= 0)
1772 memset(&servaddr, 0,
sizeof(servaddr));
1773 if (inet_pton(AF_INET,
"127.234.2.62", &servaddr.sin_addr) <= 0)
1777 memset(&servaddr, 0,
sizeof(servaddr));
1778 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1782 memset(&servaddr, 0,
sizeof(servaddr));
1783 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1787 memset(&servaddr, 0,
sizeof(servaddr));
1788 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1792 memset(&servaddr, 0,
sizeof(servaddr));
1793 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1797 memset(&servaddr, 0,
sizeof(servaddr));
1798 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1802 memset(&servaddr, 0,
sizeof(servaddr));
1803 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1807 memset(&servaddr, 0,
sizeof(servaddr));
1808 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1817 static int SCRadixTestIPV4Removal04(
void)
1820 struct sockaddr_in servaddr;
1826 memset(&servaddr, 0,
sizeof(servaddr));
1827 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1831 memset(&servaddr, 0,
sizeof(servaddr));
1832 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1836 memset(&servaddr, 0,
sizeof(servaddr));
1837 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1841 memset(&servaddr, 0,
sizeof(servaddr));
1842 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1846 memset(&servaddr, 0,
sizeof(servaddr));
1847 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1851 memset(&servaddr, 0,
sizeof(servaddr));
1852 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1856 memset(&servaddr, 0,
sizeof(servaddr));
1857 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1862 memset(&servaddr, 0,
sizeof(servaddr));
1863 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1867 memset(&servaddr, 0,
sizeof(servaddr));
1868 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1872 memset(&servaddr, 0,
sizeof(servaddr));
1873 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1877 memset(&servaddr, 0,
sizeof(servaddr));
1878 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1882 memset(&servaddr, 0,
sizeof(servaddr));
1883 if (inet_pton(AF_INET,
"192.167.1.1", &servaddr.sin_addr) <= 0)
1887 memset(&servaddr, 0,
sizeof(servaddr));
1888 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1892 memset(&servaddr, 0,
sizeof(servaddr));
1893 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1897 memset(&servaddr, 0,
sizeof(servaddr));
1898 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1902 memset(&servaddr, 0,
sizeof(servaddr));
1903 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1907 memset(&servaddr, 0,
sizeof(servaddr));
1908 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1912 memset(&servaddr, 0,
sizeof(servaddr));
1913 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1917 memset(&servaddr, 0,
sizeof(servaddr));
1918 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1922 result &= (tree->
head == NULL);
1929 static int SCRadixTestIPV6Insertion07(
void)
1932 struct sockaddr_in6 servaddr;
1938 memset(&servaddr, 0,
sizeof(servaddr));
1939 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
1940 &servaddr.sin6_addr) <= 0)
1944 memset(&servaddr, 0,
sizeof(servaddr));
1945 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
1946 &servaddr.sin6_addr) <= 0)
1950 memset(&servaddr, 0,
sizeof(servaddr));
1951 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
1952 &servaddr.sin6_addr) <= 0)
1956 memset(&servaddr, 0,
sizeof(servaddr));
1957 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
1958 &servaddr.sin6_addr) <= 0)
1965 memset(&servaddr, 0,
sizeof(servaddr));
1966 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
1967 &servaddr.sin6_addr) <= 0)
1971 memset(&servaddr, 0,
sizeof(servaddr));
1972 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
1973 &servaddr.sin6_addr) <= 0)
1977 memset(&servaddr, 0,
sizeof(servaddr));
1978 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
1979 &servaddr.sin6_addr) <= 0)
1984 memset(&servaddr, 0,
sizeof(servaddr));
1985 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
1986 &servaddr.sin6_addr) <= 0)
1990 memset(&servaddr, 0,
sizeof(servaddr));
1991 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
1992 &servaddr.sin6_addr) <= 0)
1996 memset(&servaddr, 0,
sizeof(servaddr));
1997 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
1998 &servaddr.sin6_addr) <= 0)
2002 memset(&servaddr, 0,
sizeof(servaddr));
2003 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2004 &servaddr.sin6_addr) <= 0)
2008 memset(&servaddr, 0,
sizeof(servaddr));
2009 if (inet_pton(AF_INET6,
"DBCA:ABC2:ABCD:DBCA:1245:2342:1111:2212",
2010 &servaddr.sin6_addr) <= 0)
2014 memset(&servaddr, 0,
sizeof(servaddr));
2015 if (inet_pton(AF_INET6,
"2003:0BF5:5346:1251:7422:1112:9124:2315",
2016 &servaddr.sin6_addr) <= 0)
2020 memset(&servaddr, 0,
sizeof(servaddr));
2021 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2022 &servaddr.sin6_addr) <= 0)
2026 memset(&servaddr, 0,
sizeof(servaddr));
2027 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2028 &servaddr.sin6_addr) <= 0)
2032 memset(&servaddr, 0,
sizeof(servaddr));
2033 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
2034 &servaddr.sin6_addr) <= 0)
2043 static int SCRadixTestIPV6Removal08(
void)
2046 struct sockaddr_in6 servaddr;
2052 memset(&servaddr, 0,
sizeof(servaddr));
2053 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2054 &servaddr.sin6_addr) <= 0)
2058 memset(&servaddr, 0,
sizeof(servaddr));
2059 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2060 &servaddr.sin6_addr) <= 0)
2064 memset(&servaddr, 0,
sizeof(servaddr));
2065 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2066 &servaddr.sin6_addr) <= 0)
2070 memset(&servaddr, 0,
sizeof(servaddr));
2071 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2072 &servaddr.sin6_addr) <= 0)
2079 memset(&servaddr, 0,
sizeof(servaddr));
2080 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2081 &servaddr.sin6_addr) <= 0)
2085 memset(&servaddr, 0,
sizeof(servaddr));
2086 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2087 &servaddr.sin6_addr) <= 0)
2091 memset(&servaddr, 0,
sizeof(servaddr));
2092 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
2093 &servaddr.sin6_addr) <= 0)
2098 memset(&servaddr, 0,
sizeof(servaddr));
2099 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2100 &servaddr.sin6_addr) <= 0)
2104 memset(&servaddr, 0,
sizeof(servaddr));
2105 if (inet_pton(AF_INET6,
"8888:0BF1:5346:BDEA:6422:8713:9124:2315",
2106 &servaddr.sin6_addr) <= 0)
2110 memset(&servaddr, 0,
sizeof(servaddr));
2111 if (inet_pton(AF_INET6,
"2006:0BF1:5346:BDEA:7422:8713:9124:2315",
2112 &servaddr.sin6_addr) <= 0)
2116 memset(&servaddr, 0,
sizeof(servaddr));
2117 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2118 &servaddr.sin6_addr) <= 0)
2122 memset(&servaddr, 0,
sizeof(servaddr));
2123 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2124 &servaddr.sin6_addr) <= 0)
2129 memset(&servaddr, 0,
sizeof(servaddr));
2130 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2131 &servaddr.sin6_addr) <= 0)
2135 memset(&servaddr, 0,
sizeof(servaddr));
2136 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2137 &servaddr.sin6_addr) <= 0)
2141 memset(&servaddr, 0,
sizeof(servaddr));
2142 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2143 &servaddr.sin6_addr) <= 0)
2147 memset(&servaddr, 0,
sizeof(servaddr));
2148 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2149 &servaddr.sin6_addr) <= 0)
2153 memset(&servaddr, 0,
sizeof(servaddr));
2154 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
2155 &servaddr.sin6_addr) <= 0)
2159 memset(&servaddr, 0,
sizeof(servaddr));
2160 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:DDDD:2315",
2161 &servaddr.sin6_addr) <= 0)
2166 memset(&servaddr, 0,
sizeof(servaddr));
2167 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2168 &servaddr.sin6_addr) <= 0)
2172 memset(&servaddr, 0,
sizeof(servaddr));
2173 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2174 &servaddr.sin6_addr) <= 0)
2179 memset(&servaddr, 0,
sizeof(servaddr));
2180 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2181 &servaddr.sin6_addr) <= 0)
2185 memset(&servaddr, 0,
sizeof(servaddr));
2186 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2187 &servaddr.sin6_addr) <= 0)
2191 memset(&servaddr, 0,
sizeof(servaddr));
2192 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2193 &servaddr.sin6_addr) <= 0)
2197 memset(&servaddr, 0,
sizeof(servaddr));
2198 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2199 &servaddr.sin6_addr) <= 0)
2203 memset(&servaddr, 0,
sizeof(servaddr));
2204 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2205 &servaddr.sin6_addr) <= 0)
2209 memset(&servaddr, 0,
sizeof(servaddr));
2210 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2211 &servaddr.sin6_addr) <= 0)
2216 memset(&servaddr, 0,
sizeof(servaddr));
2217 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2218 &servaddr.sin6_addr) <= 0)
2222 memset(&servaddr, 0,
sizeof(servaddr));
2223 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2224 &servaddr.sin6_addr) <= 0)
2228 memset(&servaddr, 0,
sizeof(servaddr));
2229 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2230 &servaddr.sin6_addr) <= 0)
2234 memset(&servaddr, 0,
sizeof(servaddr));
2235 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2236 &servaddr.sin6_addr) <= 0)
2241 memset(&servaddr, 0,
sizeof(servaddr));
2242 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2243 &servaddr.sin6_addr) <= 0)
2247 memset(&servaddr, 0,
sizeof(servaddr));
2248 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2249 &servaddr.sin6_addr) <= 0)
2253 memset(&servaddr, 0,
sizeof(servaddr));
2254 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2255 &servaddr.sin6_addr) <= 0)
2259 memset(&servaddr, 0,
sizeof(servaddr));
2260 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2261 &servaddr.sin6_addr) <= 0)
2265 memset(&servaddr, 0,
sizeof(servaddr));
2266 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2267 &servaddr.sin6_addr) <= 0)
2271 memset(&servaddr, 0,
sizeof(servaddr));
2272 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2273 &servaddr.sin6_addr) <= 0)
2292 static int SCRadixTestIPV4Bug5066(
void)
2294 struct sockaddr_in servaddr;
2300 memset(&servaddr, 0,
sizeof(servaddr));
2301 FAIL_IF(inet_pton(AF_INET,
"100.117.241.0", &servaddr.sin_addr) <= 0);
2312 FAIL_IF(inet_pton(AF_INET,
"100.117.241.0", &servaddr.sin_addr) <= 0);
2320 SCLogDebug(
"find 100.117.241.64/26 (should fail)");
2321 FAIL_IF(inet_pton(AF_INET,
"100.117.241.64", &servaddr.sin_addr) <= 0);
2328 SCLogDebug(
"find 100.117.241.64/26 (should succeed)");
2339 static void SCRadixTestIPV4Bug5066v2PrintData(
void *d)
2345 static int SCRadixTestIPV4Bug5066v2(
void)
2347 struct sockaddr_in servaddr;
2353 memset(&servaddr, 0,
sizeof(servaddr));
2354 FAIL_IF(inet_pton(AF_INET,
"1.2.3.0", &servaddr.sin_addr) <= 0);
2364 memset(&servaddr, 0,
sizeof(servaddr));
2365 FAIL_IF(inet_pton(AF_INET,
"1.2.3.0", &servaddr.sin_addr) <= 0);
2375 memset(&servaddr, 0,
sizeof(servaddr));
2376 FAIL_IF(inet_pton(AF_INET,
"1.2.3.0", &servaddr.sin_addr) <= 0);
2386 memset(&servaddr, 0,
sizeof(servaddr));
2387 FAIL_IF(inet_pton(AF_INET,
"1.2.3.64", &servaddr.sin_addr) <= 0);
2397 memset(&servaddr, 0,
sizeof(servaddr));
2398 FAIL_IF(inet_pton(AF_INET,
"1.2.3.64", &servaddr.sin_addr) <= 0);
2408 memset(&servaddr, 0,
sizeof(servaddr));
2409 FAIL_IF(inet_pton(AF_INET,
"1.2.3.96", &servaddr.sin_addr) <= 0);
2426 static int SCRadixTestIPV6Bug5066(
void)
2428 struct sockaddr_in6 servaddr;
2434 memset(&servaddr, 0,
sizeof(servaddr));
2435 FAIL_IF(inet_pton(AF_INET6,
"2000::1:0", &servaddr.sin6_addr) <= 0);
2446 FAIL_IF(inet_pton(AF_INET6,
"2000::1:0", &servaddr.sin6_addr) <= 0);
2454 SCLogDebug(
"find 2000::1:40/122 (should fail)");
2455 FAIL_IF(inet_pton(AF_INET6,
"2000::1:40", &servaddr.sin6_addr) <= 0);
2462 SCLogDebug(
"find 2000::1:40/122 (should succeed)");
2473 static int SCRadixTestIPV4NetblockInsertion09(
void)
2476 struct sockaddr_in servaddr;
2482 memset(&servaddr, 0,
sizeof(servaddr));
2483 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
2487 memset(&servaddr, 0,
sizeof(servaddr));
2488 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
2492 memset(&servaddr, 0,
sizeof(servaddr));
2493 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
2497 memset(&servaddr, 0,
sizeof(servaddr));
2498 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2502 memset(&servaddr, 0,
sizeof(servaddr));
2503 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
2507 memset(&servaddr, 0,
sizeof(servaddr));
2508 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
2512 memset(&servaddr, 0,
sizeof(servaddr));
2513 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
2517 memset(&servaddr, 0,
sizeof(servaddr));
2518 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2522 memset(&servaddr, 0,
sizeof(servaddr));
2523 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2527 memset(&servaddr, 0,
sizeof(servaddr));
2528 if (inet_pton(AF_INET,
"192.171.192.0", &servaddr.sin_addr) <= 0)
2532 if (inet_pton(AF_INET,
"192.175.0.0", &servaddr.sin_addr) <= 0)
2537 memset(&servaddr, 0,
sizeof(servaddr));
2538 if (inet_pton(AF_INET,
"192.168.1.6", &servaddr.sin_addr) <= 0)
2542 memset(&servaddr, 0,
sizeof(servaddr));
2543 if (inet_pton(AF_INET,
"192.170.1.6", &servaddr.sin_addr) <= 0)
2547 memset(&servaddr, 0,
sizeof(servaddr));
2548 if (inet_pton(AF_INET,
"192.171.128.145", &servaddr.sin_addr) <= 0)
2552 memset(&servaddr, 0,
sizeof(servaddr));
2553 if (inet_pton(AF_INET,
"192.171.64.6", &servaddr.sin_addr) <= 0)
2557 memset(&servaddr, 0,
sizeof(servaddr));
2558 if (inet_pton(AF_INET,
"192.171.191.6", &servaddr.sin_addr) <= 0)
2562 memset(&servaddr, 0,
sizeof(servaddr));
2563 if (inet_pton(AF_INET,
"192.171.224.6", &servaddr.sin_addr) <= 0)
2567 memset(&servaddr, 0,
sizeof(servaddr));
2568 if (inet_pton(AF_INET,
"192.174.224.6", &servaddr.sin_addr) <= 0)
2572 memset(&servaddr, 0,
sizeof(servaddr));
2573 if (inet_pton(AF_INET,
"192.175.224.6", &servaddr.sin_addr) <= 0)
2582 static int SCRadixTestIPV4NetblockInsertion10(
void)
2586 struct sockaddr_in servaddr;
2591 memset(&servaddr, 0,
sizeof(servaddr));
2592 if (inet_pton(AF_INET,
"253.192.0.0", &servaddr.sin_addr) <= 0)
2596 memset(&servaddr, 0,
sizeof(servaddr));
2597 if (inet_pton(AF_INET,
"253.192.235.0", &servaddr.sin_addr) <= 0)
2601 memset(&servaddr, 0,
sizeof(servaddr));
2602 if (inet_pton(AF_INET,
"192.167.0.0", &servaddr.sin_addr) <= 0)
2606 memset(&servaddr, 0,
sizeof(servaddr));
2607 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2611 memset(&servaddr, 0,
sizeof(servaddr));
2612 if (inet_pton(AF_INET,
"220.168.0.0", &servaddr.sin_addr) <= 0)
2616 memset(&servaddr, 0,
sizeof(servaddr));
2617 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2621 memset(&servaddr, 0,
sizeof(servaddr));
2622 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2626 memset(&servaddr, 0,
sizeof(servaddr));
2627 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2631 memset(&servaddr, 0,
sizeof(servaddr));
2632 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2636 memset(&servaddr, 0,
sizeof(servaddr));
2637 if (inet_pton(AF_INET,
"192.171.0.0", &servaddr.sin_addr) <= 0)
2641 if (inet_pton(AF_INET,
"192.175.0.0", &servaddr.sin_addr) <= 0)
2648 memset(&servaddr, 0,
sizeof(servaddr));
2649 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2654 SCLogDebug(
"search \"exact\" match for 192.171.128.45");
2655 memset(&servaddr, 0,
sizeof(servaddr));
2656 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2661 SCLogDebug(
"search \"best\" match for 192.171.128.45");
2662 memset(&servaddr, 0,
sizeof(servaddr));
2663 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2668 memset(&servaddr, 0,
sizeof(servaddr));
2669 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
2675 memset(&servaddr, 0,
sizeof(servaddr));
2676 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2680 memset(&servaddr, 0,
sizeof(servaddr));
2681 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
2686 memset(&servaddr, 0,
sizeof(servaddr));
2687 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
2696 static int SCRadixTestIPV4NetblockInsertion11(
void)
2700 struct sockaddr_in servaddr;
2706 memset(&servaddr, 0,
sizeof(servaddr));
2707 if (inet_pton(AF_INET,
"253.192.0.0", &servaddr.sin_addr) <= 0)
2711 memset(&servaddr, 0,
sizeof(servaddr));
2712 if (inet_pton(AF_INET,
"253.192.235.0", &servaddr.sin_addr) <= 0)
2716 memset(&servaddr, 0,
sizeof(servaddr));
2717 if (inet_pton(AF_INET,
"192.167.0.0", &servaddr.sin_addr) <= 0)
2721 memset(&servaddr, 0,
sizeof(servaddr));
2722 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2726 memset(&servaddr, 0,
sizeof(servaddr));
2727 if (inet_pton(AF_INET,
"220.168.0.0", &servaddr.sin_addr) <= 0)
2731 memset(&servaddr, 0,
sizeof(servaddr));
2732 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2736 memset(&servaddr, 0,
sizeof(servaddr));
2737 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2741 memset(&servaddr, 0,
sizeof(servaddr));
2742 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2746 memset(&servaddr, 0,
sizeof(servaddr));
2747 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2751 memset(&servaddr, 0,
sizeof(servaddr));
2752 if (inet_pton(AF_INET,
"192.171.0.0", &servaddr.sin_addr) <= 0)
2756 if (inet_pton(AF_INET,
"192.175.0.0", &servaddr.sin_addr) <= 0)
2760 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2765 memset(&servaddr, 0,
sizeof(servaddr));
2766 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2770 memset(&servaddr, 0,
sizeof(servaddr));
2771 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2775 memset(&servaddr, 0,
sizeof(servaddr));
2776 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
2780 memset(&servaddr, 0,
sizeof(servaddr));
2781 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
2785 memset(&servaddr, 0,
sizeof(servaddr));
2786 if (inet_pton(AF_INET,
"1.1.1.1", &servaddr.sin_addr) <= 0)
2790 memset(&servaddr, 0,
sizeof(servaddr));
2791 if (inet_pton(AF_INET,
"192.255.254.25", &servaddr.sin_addr) <= 0)
2795 memset(&servaddr, 0,
sizeof(servaddr));
2796 if (inet_pton(AF_INET,
"169.255.254.25", &servaddr.sin_addr) <= 0)
2800 memset(&servaddr, 0,
sizeof(servaddr));
2801 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2805 memset(&servaddr, 0,
sizeof(servaddr));
2806 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2811 memset(&servaddr, 0,
sizeof(servaddr));
2812 if (inet_pton(AF_INET,
"245.63.62.121", &servaddr.sin_addr) <= 0)
2817 memset(&servaddr, 0,
sizeof(servaddr));
2818 if (inet_pton(AF_INET,
"253.224.1.6", &servaddr.sin_addr) <= 0)
2824 memset(&servaddr, 0,
sizeof(servaddr));
2825 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2829 memset(&servaddr, 0,
sizeof(servaddr));
2830 if (inet_pton(AF_INET,
"253.224.1.6", &servaddr.sin_addr) <= 0)
2834 memset(&servaddr, 0,
sizeof(servaddr));
2835 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
2839 memset(&servaddr, 0,
sizeof(servaddr));
2840 if (inet_pton(AF_INET,
"1.1.1.1", &servaddr.sin_addr) <= 0)
2844 memset(&servaddr, 0,
sizeof(servaddr));
2845 if (inet_pton(AF_INET,
"192.255.254.25", &servaddr.sin_addr) <= 0)
2849 memset(&servaddr, 0,
sizeof(servaddr));
2850 if (inet_pton(AF_INET,
"169.255.254.25", &servaddr.sin_addr) <= 0)
2854 memset(&servaddr, 0,
sizeof(servaddr));
2855 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2864 static int SCRadixTestIPV4NetblockInsertion12(
void)
2868 struct sockaddr_in servaddr;
2874 memset(&servaddr, 0,
sizeof(servaddr));
2875 if (inet_pton(AF_INET,
"253.192.0.0", &servaddr.sin_addr) <= 0)
2879 memset(&servaddr, 0,
sizeof(servaddr));
2880 if (inet_pton(AF_INET,
"253.192.235.0", &servaddr.sin_addr) <= 0)
2884 memset(&servaddr, 0,
sizeof(servaddr));
2885 if (inet_pton(AF_INET,
"192.167.0.0", &servaddr.sin_addr) <= 0)
2889 memset(&servaddr, 0,
sizeof(servaddr));
2890 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2894 memset(&servaddr, 0,
sizeof(servaddr));
2895 if (inet_pton(AF_INET,
"220.168.0.0", &servaddr.sin_addr) <= 0)
2899 memset(&servaddr, 0,
sizeof(servaddr));
2900 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2904 memset(&servaddr, 0,
sizeof(servaddr));
2905 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2909 memset(&servaddr, 0,
sizeof(servaddr));
2910 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2914 memset(&servaddr, 0,
sizeof(servaddr));
2915 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2919 memset(&servaddr, 0,
sizeof(servaddr));
2920 if (inet_pton(AF_INET,
"192.171.0.0", &servaddr.sin_addr) <= 0)
2924 if (inet_pton(AF_INET,
"225.175.21.228", &servaddr.sin_addr) <= 0)
2929 memset(&servaddr, 0,
sizeof(servaddr));
2930 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2934 memset(&servaddr, 0,
sizeof(servaddr));
2935 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2939 memset(&servaddr, 0,
sizeof(servaddr));
2940 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2944 memset(&servaddr, 0,
sizeof(servaddr));
2945 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2949 memset(&servaddr, 0,
sizeof(servaddr));
2950 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2954 memset(&servaddr, 0,
sizeof(servaddr));
2955 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
2959 memset(&servaddr, 0,
sizeof(servaddr));
2960 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
2964 memset(&servaddr, 0,
sizeof(servaddr));
2965 if (inet_pton(AF_INET,
"225.175.21.228", &servaddr.sin_addr) <= 0)
2969 memset(&servaddr, 0,
sizeof(servaddr));
2970 if (inet_pton(AF_INET,
"225.175.21.224", &servaddr.sin_addr) <= 0)
2974 memset(&servaddr, 0,
sizeof(servaddr));
2975 if (inet_pton(AF_INET,
"225.175.21.229", &servaddr.sin_addr) <= 0)
2979 memset(&servaddr, 0,
sizeof(servaddr));
2980 if (inet_pton(AF_INET,
"225.175.21.230", &servaddr.sin_addr) <= 0)
2989 static int SCRadixTestIPV6NetblockInsertion13(
void)
2992 struct sockaddr_in6 servaddr;
2998 memset(&servaddr, 0,
sizeof(servaddr));
2999 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
3000 &servaddr.sin6_addr) <= 0)
3004 memset(&servaddr, 0,
sizeof(servaddr));
3005 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
3006 &servaddr.sin6_addr) <= 0)
3010 memset(&servaddr, 0,
sizeof(servaddr));
3011 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3012 &servaddr.sin6_addr) <= 0)
3016 memset(&servaddr, 0,
sizeof(servaddr));
3017 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
3018 &servaddr.sin6_addr) <= 0)
3022 memset(&servaddr, 0,
sizeof(servaddr));
3023 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
3024 &servaddr.sin6_addr) <= 0)
3028 memset(&servaddr, 0,
sizeof(servaddr));
3029 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DB00:0000:0000:0000:0000",
3030 &servaddr.sin6_addr) <= 0)
3034 memset(&servaddr, 0,
sizeof(servaddr));
3035 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3036 &servaddr.sin6_addr) <= 0)
3041 memset(&servaddr, 0,
sizeof(servaddr));
3042 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
3043 &servaddr.sin6_addr) <= 0)
3047 memset(&servaddr, 0,
sizeof(servaddr));
3048 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
3049 &servaddr.sin6_addr) <= 0)
3053 memset(&servaddr, 0,
sizeof(servaddr));
3054 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3055 &servaddr.sin6_addr) <= 0)
3059 memset(&servaddr, 0,
sizeof(servaddr));
3060 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3061 &servaddr.sin6_addr) <= 0)
3065 memset(&servaddr, 0,
sizeof(servaddr));
3066 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
3067 &servaddr.sin6_addr) <= 0)
3071 memset(&servaddr, 0,
sizeof(servaddr));
3072 if (inet_pton(AF_INET6,
"DBCA:ABC2:ABCD:DBCA:1245:2342:1111:2212",
3073 &servaddr.sin6_addr) <= 0)
3077 memset(&servaddr, 0,
sizeof(servaddr));
3078 if (inet_pton(AF_INET6,
"2003:0BF5:5346:1251:7422:1112:9124:2315",
3079 &servaddr.sin6_addr) <= 0)
3083 memset(&servaddr, 0,
sizeof(servaddr));
3084 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
3085 &servaddr.sin6_addr) <= 0)
3089 memset(&servaddr, 0,
sizeof(servaddr));
3090 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
3091 &servaddr.sin6_addr) <= 0)
3095 memset(&servaddr, 0,
sizeof(servaddr));
3096 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1146:6241",
3097 &servaddr.sin6_addr) <= 0)
3101 memset(&servaddr, 0,
sizeof(servaddr));
3102 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1356:1241",
3103 &servaddr.sin6_addr) <= 0)
3107 memset(&servaddr, 0,
sizeof(servaddr));
3108 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DAAA:1245:2342:1146:6241",
3109 &servaddr.sin6_addr) <= 0)
3119 static int SCRadixTestIPV6NetblockInsertion14(
void)
3123 struct sockaddr_in6 servaddr;
3129 memset(&servaddr, 0,
sizeof(servaddr));
3130 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
3131 &servaddr.sin6_addr) <= 0)
3135 memset(&servaddr, 0,
sizeof(servaddr));
3136 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
3137 &servaddr.sin6_addr) <= 0)
3141 memset(&servaddr, 0,
sizeof(servaddr));
3142 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3143 &servaddr.sin6_addr) <= 0)
3147 memset(&servaddr, 0,
sizeof(servaddr));
3148 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
3149 &servaddr.sin6_addr) <= 0)
3153 memset(&servaddr, 0,
sizeof(servaddr));
3154 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
3155 &servaddr.sin6_addr) <= 0)
3159 memset(&servaddr, 0,
sizeof(servaddr));
3160 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DB00:0000:0000:0000:0000",
3161 &servaddr.sin6_addr) <= 0)
3165 memset(&servaddr, 0,
sizeof(servaddr));
3166 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3167 &servaddr.sin6_addr) <= 0)
3171 memset(&servaddr, 0,
sizeof(servaddr));
3172 if (inet_pton(AF_INET6,
"::", &servaddr.sin6_addr) <= 0)
3178 memset(&servaddr, 0,
sizeof(servaddr));
3179 if (inet_pton(AF_INET6,
"2004:0BF1:5346:BDEA:7422:8713:9124:2315",
3180 &servaddr.sin6_addr) <= 0)
3184 memset(&servaddr, 0,
sizeof(servaddr));
3185 if (inet_pton(AF_INET6,
"2004:0BF1:5346:BDEA:7422:8713:9124:2315",
3186 &servaddr.sin6_addr) <= 0)
3190 memset(&servaddr, 0,
sizeof(servaddr));
3191 if (inet_pton(AF_INET6,
"2004:0BF1:5346:B116:2362:8713:9124:2315",
3192 &servaddr.sin6_addr) <= 0)
3196 memset(&servaddr, 0,
sizeof(servaddr));
3197 if (inet_pton(AF_INET6,
"2004:0B23:3252:BDEA:7422:8713:9124:2341",
3198 &servaddr.sin6_addr) <= 0)
3202 memset(&servaddr, 0,
sizeof(servaddr));
3203 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3204 &servaddr.sin6_addr) <= 0)
3209 memset(&servaddr, 0,
sizeof(servaddr));
3210 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3211 &servaddr.sin6_addr) <= 0)
3225 static int SCRadixTestIPV4NetBlocksAndBestSearch15(
void)
3231 struct sockaddr_in servaddr;
3232 memset(&servaddr, 0,
sizeof(servaddr));
3233 FAIL_IF(inet_pton(AF_INET,
"192.168.0.1", &servaddr.sin_addr) <= 0);
3235 for (uint32_t i = 0; i <= 32; i++) {
3236 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3241 snprintf(
str,
sizeof(
str),
"192.168.0.1/%u", i);
3244 void *user_data = NULL;
3248 FAIL_IF(*((uint32_t *)user_data) != i);
3259 static int SCRadixTestIPV4NetBlocksAndBestSearch16(
void)
3265 struct sockaddr_in servaddr;
3266 memset(&servaddr, 0,
sizeof(servaddr));
3267 FAIL_IF(inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0);
3269 for (uint32_t i = 0; i <= 32; i++) {
3270 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3275 snprintf(
str,
sizeof(
str),
"192.168.1.1/%u", i);
3278 void *user_data = NULL;
3282 FAIL_IF(*((uint32_t *)user_data) != i);
3293 static int SCRadixTestIPV4NetBlocksAndBestSearch17(
void)
3298 struct sockaddr_in servaddr;
3299 memset(&servaddr, 0,
sizeof(servaddr));
3300 FAIL_IF(inet_pton(AF_INET,
"10.0.0.1", &servaddr.sin_addr) <= 0);
3302 for (uint32_t i = 0; i <= 32; i++) {
3303 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3308 snprintf(
str,
sizeof(
str),
"10.0.0.1/%u", i);
3311 void *user_data = NULL;
3315 FAIL_IF(*((uint32_t *)user_data) != i);
3326 static int SCRadixTestIPV4NetBlocksAndBestSearch18(
void)
3331 struct sockaddr_in servaddr;
3332 memset(&servaddr, 0,
sizeof(servaddr));
3333 FAIL_IF(inet_pton(AF_INET,
"172.26.0.1", &servaddr.sin_addr) <= 0);
3335 for (uint32_t i = 0; i <= 32; i++) {
3336 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3341 snprintf(
str,
sizeof(
str),
"172.26.0.1/%u", i);
3344 void *user_data = NULL;
3348 FAIL_IF(*((uint32_t *)user_data) != i);
3359 static int SCRadixTestIPV4NetBlocksAndBestSearch19(
void)
3364 struct sockaddr_in servaddr;
3365 memset(&servaddr, 0,
sizeof(servaddr));
3366 FAIL_IF(inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0);
3368 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3374 memset(&servaddr, 0,
sizeof(servaddr));
3375 FAIL_IF(inet_pton(AF_INET,
"192.168.1.15", &servaddr.sin_addr) <= 0);
3376 void *user_data = NULL;
3380 FAIL_IF(*((uint32_t *)user_data) != 100);
3383 memset(&servaddr, 0,
sizeof(servaddr));
3384 FAIL_IF(inet_pton(AF_INET,
"177.0.0.0", &servaddr.sin_addr) <= 0);
3391 memset(&servaddr, 0,
sizeof(servaddr));
3392 FAIL_IF(inet_pton(AF_INET,
"177.168.1.15", &servaddr.sin_addr) <= 0);
3397 FAIL_IF(*((uint32_t *)user_data) != 200);
3400 memset(&servaddr, 0,
sizeof(servaddr));
3401 FAIL_IF(inet_pton(AF_INET,
"178.168.1.15", &servaddr.sin_addr) <= 0);
3406 FAIL_IF(*((uint32_t *)user_data) != 100);
3409 memset(&servaddr, 0,
sizeof(servaddr));
3410 FAIL_IF(inet_pton(AF_INET,
"177.160.0.0", &servaddr.sin_addr) <= 0);
3417 memset(&servaddr, 0,
sizeof(servaddr));
3418 FAIL_IF(inet_pton(AF_INET,
"177.168.1.15", &servaddr.sin_addr) <= 0);
3423 FAIL_IF(*((uint32_t *)user_data) != 300);
3426 memset(&servaddr, 0,
sizeof(servaddr));
3427 FAIL_IF(inet_pton(AF_INET,
"177.167.1.15", &servaddr.sin_addr) <= 0);
3432 FAIL_IF(*((uint32_t *)user_data) != 300);
3435 memset(&servaddr, 0,
sizeof(servaddr));
3436 FAIL_IF(inet_pton(AF_INET,
"177.178.1.15", &servaddr.sin_addr) <= 0);
3441 FAIL_IF(*((uint32_t *)user_data) != 200);
3444 memset(&servaddr, 0,
sizeof(servaddr));
3445 FAIL_IF(inet_pton(AF_INET,
"197.178.1.15", &servaddr.sin_addr) <= 0);
3450 FAIL_IF(*((uint32_t *)user_data) != 100);
3460 static int SCRadixTestIPV6NetBlocksAndBestSearch20(
void)
3465 struct sockaddr_in6 servaddr;
3466 memset(&servaddr, 0,
sizeof(servaddr));
3467 FAIL_IF(inet_pton(AF_INET6,
"ABAB:CDCD:ABAB:CDCD:1234:4321:1234:4321", &servaddr.sin6_addr) <=
3470 for (uint32_t i = 0; i <= 128; i++) {
3471 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3476 snprintf(
str,
sizeof(
str),
"ABAB:CDCD:ABAB:CDCD:1234:4321:1234:4321/%u", i);
3479 void *user_data = NULL;
3483 FAIL_IF(*((uint32_t *)user_data) != i);
3494 static int SCRadixTestIPV6NetBlocksAndBestSearch21(
void)
3499 struct sockaddr_in6 servaddr;
3500 memset(&servaddr, 0,
sizeof(servaddr));
3501 FAIL_IF(inet_pton(AF_INET6,
"ff00::1", &servaddr.sin6_addr) <= 0);
3503 for (uint32_t i = 0; i <= 128; i++) {
3504 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3509 snprintf(
str,
sizeof(
str),
"ff00::1/%u", i);
3512 void *user_data = NULL;
3516 FAIL_IF(*((uint32_t *)user_data) != i);
3527 static int SCRadixTestIPV6NetBlocksAndBestSearch22(
void)
3532 struct sockaddr_in6 servaddr;
3533 memset(&servaddr, 0,
sizeof(servaddr));
3534 FAIL_IF(inet_pton(AF_INET6,
"ff00::192:168:1:1", &servaddr.sin6_addr) <= 0);
3536 for (uint32_t i = 0; i <= 128; i++) {
3537 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3542 snprintf(
str,
sizeof(
str),
"ff00::192:168:1:1/%u", i);
3545 void *user_data = NULL;
3549 FAIL_IF(*((uint32_t *)user_data) != i);
3560 static int SCRadixTestIPV6NetBlocksAndBestSearch23(
void)
3565 struct sockaddr_in6 servaddr;
3566 memset(&servaddr, 0,
sizeof(servaddr));
3567 FAIL_IF(inet_pton(AF_INET6,
"FF00:ABCD:BCDA::ABCD", &servaddr.sin6_addr) <= 0);
3569 for (uint32_t i = 0; i <= 128; i++) {
3570 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3575 snprintf(
str,
sizeof(
str),
"FF00:ABCD:BCDA::ABCD/%u", i);
3578 void *user_data = NULL;
3582 FAIL_IF(*((uint32_t *)user_data) != i);
3593 static int SCRadixTestIPV6NetBlocksAndBestSearch24(
void)
3595 struct sockaddr_in6 servaddr;
3596 void *user_data = NULL;
3601 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3606 memset(&servaddr, 0,
sizeof(servaddr));
3607 FAIL_IF(inet_pton(AF_INET6,
"ABCD::1", &servaddr.sin6_addr) <= 0);
3611 FAIL_IF(*((uint32_t *)user_data) != 100);
3619 memset(&servaddr, 0,
sizeof(servaddr));
3620 FAIL_IF(inet_pton(AF_INET6,
"ABCD::1", &servaddr.sin6_addr) <= 0);
3624 FAIL_IF(*((uint32_t *)user_data) != 200);
3627 memset(&servaddr, 0,
sizeof(servaddr));
3628 FAIL_IF(inet_pton(AF_INET6,
"DCBA::1", &servaddr.sin6_addr) <= 0);
3633 FAIL_IF(*((uint32_t *)user_data) != 100);
3641 memset(&servaddr, 0,
sizeof(servaddr));
3642 FAIL_IF(inet_pton(AF_INET6,
"ABCD:ABCD::1", &servaddr.sin6_addr) <= 0);
3646 FAIL_IF(*((uint32_t *)user_data) != 300);
3649 memset(&servaddr, 0,
sizeof(servaddr));
3650 FAIL_IF(inet_pton(AF_INET6,
"ABCD:AAAA::1", &servaddr.sin6_addr) <= 0);
3654 FAIL_IF(*((uint32_t *)user_data) != 300);
3657 memset(&servaddr, 0,
sizeof(servaddr));
3658 FAIL_IF(inet_pton(AF_INET6,
"ABAB::1", &servaddr.sin6_addr) <= 0);
3662 FAIL_IF(*((uint32_t *)user_data) != 200);
3665 memset(&servaddr, 0,
sizeof(servaddr));
3666 FAIL_IF(inet_pton(AF_INET6,
"CABD::1", &servaddr.sin6_addr) <= 0);
3670 FAIL_IF(*((uint32_t *)user_data) != 100);
3681 static int SCRadixTestIPV4NetblockInsertion25(
void)
3684 struct sockaddr_in servaddr;
3689 memset(&servaddr, 0,
sizeof(servaddr));
3690 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
3695 memset(&servaddr, 0,
sizeof(servaddr));
3696 if (inet_pton(AF_INET,
"192.168.128.53", &servaddr.sin_addr) <= 0)
3711 static int SCRadixTestIPV4NetblockInsertion26(
void)
3713 struct sockaddr_in servaddr;
3718 memset(&servaddr, 0,
sizeof(servaddr));
3719 FAIL_IF(inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0);
3729 memset(&servaddr, 0,
sizeof(servaddr));
3730 FAIL_IF(inet_pton(AF_INET,
"176.0.0.0", &servaddr.sin_addr) <= 0);
3738 memset(&servaddr, 0,
sizeof(servaddr));
3739 FAIL_IF(inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0);
3758 UtRegisterTest(
"SCRadixTestIPV4Insertion03", SCRadixTestIPV4Insertion03);
3759 UtRegisterTest(
"SCRadixTestIPV4Removal04", SCRadixTestIPV4Removal04);
3760 UtRegisterTest(
"SCRadixTestIPV6Insertion07", SCRadixTestIPV6Insertion07);
3761 UtRegisterTest(
"SCRadixTestIPV6Removal08", SCRadixTestIPV6Removal08);
3763 SCRadixTestIPV4NetblockInsertion09);
3764 UtRegisterTest(
"SCRadixTestIPV4Bug5066", SCRadixTestIPV4Bug5066);
3765 UtRegisterTest(
"SCRadixTestIPV4Bug5066v2", SCRadixTestIPV4Bug5066v2);
3766 UtRegisterTest(
"SCRadixTestIPV6Bug5066", SCRadixTestIPV6Bug5066);
3768 SCRadixTestIPV4NetblockInsertion10);
3770 SCRadixTestIPV4NetblockInsertion11);
3772 SCRadixTestIPV4NetblockInsertion12);
3774 SCRadixTestIPV6NetblockInsertion13);
3776 SCRadixTestIPV6NetblockInsertion14);
3778 SCRadixTestIPV4NetBlocksAndBestSearch15);
3780 SCRadixTestIPV4NetBlocksAndBestSearch16);
3782 SCRadixTestIPV4NetBlocksAndBestSearch17);
3784 SCRadixTestIPV4NetBlocksAndBestSearch18);
3786 SCRadixTestIPV4NetBlocksAndBestSearch19);
3788 SCRadixTestIPV6NetBlocksAndBestSearch20);
3790 SCRadixTestIPV6NetBlocksAndBestSearch21);
3792 SCRadixTestIPV6NetBlocksAndBestSearch22);
3794 SCRadixTestIPV6NetBlocksAndBestSearch23);
3796 SCRadixTestIPV6NetBlocksAndBestSearch24);
3798 SCRadixTestIPV4NetblockInsertion25);
3800 SCRadixTestIPV4NetblockInsertion26);