47 static SCRadixUserData *SCRadixAllocSCRadixUserData(uint8_t netmask,
void *user)
58 user_data->
user = user;
91 if (
new == NULL || list == NULL) {
98 while (temp != NULL) {
99 if (new->netmask > temp->
netmask)
129 static SCRadixPrefix *SCRadixCreatePrefix(uint8_t *key_stream,
130 uint16_t key_bitlen,
void *user,
135 if ((key_bitlen % 8 != 0)) {
136 SCLogError(
"Invalid argument bitlen - %d", key_bitlen);
140 if (key_stream == NULL) {
153 memset(prefix->
stream, 0, key_bitlen / 8);
155 memcpy(prefix->
stream, key_stream, key_bitlen / 8);
156 prefix->
bitlen = key_bitlen;
158 prefix->
user_data = SCRadixAllocSCRadixUserData(netmask, user);
166 if (prefix != NULL) {
167 if (prefix->
stream != NULL) {
185 static void SCRadixAddNetmaskUserDataToPrefix(
SCRadixPrefix *prefix,
189 if (prefix == NULL || user == NULL) {
193 SCRadixAppendToSCRadixUserDataList(SCRadixAllocSCRadixUserData(netmask, user),
207 static void SCRadixRemoveNetmaskUserDataFromPrefix(
SCRadixPrefix *prefix,
212 if (prefix == NULL) {
217 while (temp != NULL) {
218 if (temp->
netmask == netmask) {
224 SCRadixDeAllocSCRadixUserData(temp);
244 static int SCRadixPrefixContainNetmask(
SCRadixPrefix *prefix, uint8_t netmask)
248 if (prefix == NULL) {
254 while (user_data != NULL) {
255 if (user_data->
netmask == netmask)
257 user_data = user_data->
next;
276 if (prefix == NULL) {
282 while (user_data != NULL) {
284 user_data = user_data->
next;
303 static int SCRadixPrefixContainNetmaskAndSetUserData(
SCRadixPrefix *prefix,
306 void **user_data_result)
310 if (prefix == NULL) {
319 if (user_data->
netmask == netmask) {
320 if (user_data_result)
321 *user_data_result = user_data->
user;
329 while (user_data != NULL) {
330 if (user_data->
netmask == netmask) {
331 if (user_data_result)
332 *user_data_result = user_data->
user;
335 user_data = user_data->
next;
339 if (user_data_result != NULL)
340 *user_data_result = NULL;
355 if (prefix != NULL) {
356 if (prefix->
stream != NULL)
360 if (tree->
Free != NULL) {
361 while (user_data_temp1 != NULL) {
362 user_data_temp2 = user_data_temp1;
363 user_data_temp1 = user_data_temp1->
next;
365 SCRadixDeAllocSCRadixUserData(user_data_temp2);
367 }
else if (user_data_temp1 != NULL) {
387 SCLogError(
"Fatal error encountered in SCRadixCreateNode. Mem not allocated...");
404 SCRadixReleasePrefix(node->
prefix, tree);
430 FatalError(
"Fatal error encountered in SCRadixCreateRadixTree. Exiting...");
450 SCRadixReleaseRadixSubtree(node->
left, tree);
451 SCRadixReleaseRadixSubtree(node->
right, tree);
452 SCRadixReleaseNode(node, tree);
468 SCRadixReleaseRadixSubtree(tree->
head, tree);
490 uint8_t *key_stream, uint8_t key_bitlen,
SCRadixTree *tree,
void *user, uint8_t netmask)
499 uint8_t *stream = NULL;
502 uint16_t check_bit = 0;
503 uint16_t differ_bit = 0;
517 if (tree->
head == NULL) {
519 if ( (prefix = SCRadixCreatePrefix(key_stream, key_bitlen, user,
524 node = SCRadixCreateNode();
526 SCRadixReleasePrefix(prefix, tree);
532 if (netmask == 255 || (netmask == 32 && key_bitlen == 32) || (netmask == 128 && key_bitlen == 128))
545 sizeof(uint8_t)))) == NULL) {
548 SCLogError(
"Fatal error encountered in SCRadixAddKey. Mem not allocated");
564 while (node->
bit < bitlen || node->
prefix == NULL) {
569 if (bitlen <= node->bit) {
570 if (node->
right == NULL)
575 (0x80 >> (node->
bit % 8))) ) {
576 if (node->
right == NULL)
580 if (node->
left == NULL)
592 check_bit = (node->
bit < bitlen)? node->
bit: bitlen;
593 for (i = 0; (i * 8) < check_bit; i++) {
595 if ((temp = (stream[i] ^ bottom_node->
prefix->
stream[i])) == 0) {
596 differ_bit = (i + 1) * 8;
606 else if (temp >= 128)
621 differ_bit = i * 8 + j;
624 if (check_bit < differ_bit)
625 differ_bit = check_bit;
629 while (parent && differ_bit <= parent->bit) {
635 if (differ_bit == bitlen && node->
bit == bitlen) {
636 if (node->
prefix != NULL) {
638 if (SCRadixPrefixContainNetmask(node->
prefix, netmask)) {
641 SCLogDebug(
"Duplicate entry for this ip address/netblock");
647 SCRadixAddNetmaskUserDataToPrefix(node->
prefix, netmask, user);
653 if (netmask == 255 || (netmask == 32 && bitlen == 32) || (netmask == 128 && bitlen == 128))
660 while (parent != NULL && netmask < (parent->
bit + 1)) {
669 sizeof(uint8_t)))) == NULL) {
672 SCLogError(
"Fatal error encountered in SCRadixAddKey. Mem not allocated...");
685 if (netmask < node->netmasks[i - 1]) {
695 node->
prefix = SCRadixCreatePrefix(key_stream, key_bitlen,
703 if ( (prefix = SCRadixCreatePrefix(key_stream, key_bitlen, user,
708 new_node = SCRadixCreateNode();
709 new_node->
prefix = prefix;
716 if (differ_bit == bitlen) {
718 (0x80 >> (differ_bit % 8))) ) {
719 new_node->
right = node;
721 new_node->
left = node;
726 tree->
head = new_node;
738 inter_node = SCRadixCreateNode();
739 inter_node->
prefix = NULL;
740 inter_node->
bit = differ_bit;
745 if (node->
netmasks[i] < differ_bit + 1)
749 if (i < node->netmask_cnt) {
751 sizeof(uint8_t))) == NULL) {
752 SCLogError(
"Fatal error encountered in SCRadixAddKey. Mem not allocated...");
753 SCRadixReleaseNode(inter_node, tree);
754 SCRadixReleaseNode(new_node, tree);
767 (0x80 >> (differ_bit % 8))) ) {
768 inter_node->
left = node;
769 inter_node->
right = new_node;
771 inter_node->
left = new_node;
772 inter_node->
right = node;
774 new_node->
parent = inter_node;
777 tree->
head = inter_node;
783 node->
parent = inter_node;
787 if (netmask != 255 && (netmask != 32 || (netmask == 32 && bitlen != 32)) && netmask != 128) {
789 parent = new_node->
parent;
790 while (parent != NULL && netmask < (parent->
bit + 1)) {
797 sizeof(uint8_t)))) == NULL) {
800 FatalError(
"Fatal error encountered in SCRadixAddKey. Exiting...");
812 if (netmask < node->netmasks[i - 1]) {
839 SCRadixNode *node = SCRadixAddKey(key_stream, 32, tree, user, 32);
858 SCRadixNode *node = SCRadixAddKey(key_stream, 128, tree, user, 128);
863 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
864 static void SCRadixValidateIPv4Key(uint8_t *key,
const uint8_t netmask)
868 uint32_t mask =
CIDRGet(netmask);
870 uint32_t masked =
address & mask;
871 char ostr[16], nstr[16];
873 PrintInet(AF_INET, (
void *)&masked, nstr,
sizeof(nstr));
874 SCLogNotice(
"input %s/%u != expected %s/%u", ostr, netmask, nstr, netmask);
879 static void SCRadixValidateIPv6Key(uint8_t *key,
const uint8_t netmask)
885 memset(&mask, 0,
sizeof(mask));
886 struct in6_addr mask6;
888 memcpy(&mask, &mask6.s6_addr,
sizeof(mask));
891 masked[0] =
address[0] & mask[0];
892 masked[1] =
address[1] & mask[1];
893 masked[2] =
address[2] & mask[2];
894 masked[3] =
address[3] & mask[3];
896 if (memcmp(masked,
address,
sizeof(masked)) != 0) {
897 char ostr[64], nstr[64];
899 PrintInet(AF_INET6, (
void *)&masked, nstr,
sizeof(nstr));
900 SCLogNotice(
"input %s/%u != expected %s/%u", ostr, netmask, nstr, netmask);
919 void *user, uint8_t netmask)
921 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
922 SCRadixValidateIPv4Key(key_stream, netmask);
924 SCRadixNode *node = SCRadixAddKey(key_stream, 32, tree, user, netmask);
942 void *user, uint8_t netmask)
944 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
945 SCRadixValidateIPv6Key(key_stream, netmask);
947 SCRadixNode *node = SCRadixAddKey(key_stream, 128, tree, user, netmask);
965 uint8_t netmask = 32;
967 char *mask_str = NULL;
972 *(ip_str + (
sizeof(ip_str) - 1)) =
'\0';
975 if (NULL != (mask_str = strchr(ip_str,
'/'))) {
977 *(mask_str++) =
'\0';
980 if (strchr(mask_str,
'.') != NULL) {
989 netmask = (uint8_t)cidr;
993 if (inet_pton(AF_INET, ip_str, &addr) <= 0) {
998 uint32_t mask =
CIDRGet(netmask);
999 uint32_t masked = ip & mask;
1002 PrintInet(AF_INET, (
void *)&masked, nstr,
sizeof(nstr));
1006 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1007 SCRadixValidateIPv4Key((uint8_t *)&ip, netmask);
1010 return SCRadixAddKey((uint8_t *)&ip, 32, tree, user, netmask);
1025 uint8_t netmask = 128;
1027 char *mask_str = NULL;
1028 struct in6_addr addr;
1032 *(ip_str +
sizeof(ip_str) - 1) =
'\0';
1035 if (NULL != (mask_str = strchr(ip_str,
'/'))) {
1037 *(mask_str++) =
'\0';
1040 if (strchr(mask_str,
'.') != NULL) {
1049 netmask = (uint8_t)cidr;
1053 if (inet_pton(AF_INET6, ip_str, &addr) <= 0) {
1057 if (netmask != 128) {
1058 struct in6_addr mask6, check;
1060 memcpy(&check, &addr,
sizeof(check));
1062 for (
int i = 0; i < 16; i++) {
1063 addr.s6_addr[i] &= mask6.s6_addr[i];
1064 diff |= (addr.s6_addr[i] != check.s6_addr[i]);
1068 PrintInet(AF_INET6, (
void *)&addr.s6_addr, nstr,
sizeof(nstr));
1071 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1072 SCRadixValidateIPv6Key((uint8_t *)&addr.s6_addr, netmask);
1076 return SCRadixAddKey(addr.s6_addr, 128, tree, user, netmask);
1084 if (
src == NULL || dest == NULL) {
1090 if (
src->netmasks == NULL)
1095 sizeof(uint8_t))) == NULL) {
1102 for (i = dest->
netmask_cnt, j = 0; j < src->netmask_cnt; i++, j++)
1117 static void SCRadixRemoveNetblockEntry(
SCRadixNode *node, uint8_t netmask)
1124 SCLogError(
"Invalid argument. Node is NULL");
1128 SCRadixRemoveNetmaskUserDataFromPrefix(node->
prefix, netmask);
1130 if (netmask == 32 || netmask == 128)
1134 while (parent != NULL && netmask < (parent->
bit + 1)) {
1144 SCLogDebug(
"Something's wrong with the tree. We are unable to find the "
1179 static void SCRadixRemoveKey(uint8_t *key_stream, uint16_t key_bitlen,
1194 if ( (prefix = SCRadixCreatePrefix(key_stream, key_bitlen, NULL, 255)) == NULL)
1199 (0x80 >> (node->
bit % 8))) ) {
1206 SCRadixReleasePrefix(prefix, tree);
1212 SCRadixReleasePrefix(prefix, tree);
1218 mask = UINT_MAX << (8 - prefix->
bitlen % 8);
1220 if (prefix->
bitlen % 8 == 0 ||
1222 if (!SCRadixPrefixContainNetmask(node->
prefix, netmask)) {
1223 SCLogDebug(
"The ip key exists in the Radix Tree, but this(%d) "
1224 "netblock entry doesn't exist", netmask);
1225 SCRadixReleasePrefix(prefix, tree);
1229 SCLogDebug(
"You are trying to remove a key that doesn't exist in "
1231 SCRadixReleasePrefix(prefix, tree);
1235 SCLogDebug(
"You are trying to remove a key that doesn't exist in the "
1237 SCRadixReleasePrefix(prefix, tree);
1245 if (SCRadixPrefixNetmaskCount(node->
prefix) > 1) {
1246 SCRadixRemoveNetblockEntry(node, netmask);
1247 SCRadixReleasePrefix(prefix, tree);
1253 if (tree->
head == node) {
1254 SCRadixReleaseNode(node, tree);
1256 SCRadixReleasePrefix(prefix, tree);
1262 if (parent->
parent != NULL) {
1265 temp_dest = parent->
right;
1269 temp_dest = parent->
left;
1275 temp_dest = parent->
right;
1279 temp_dest = parent->
left;
1286 if (parent->
left == node) {
1298 SCRadixTransferNetmasksBWNodes(temp_dest, parent);
1300 SCRadixReleaseNode(parent, tree);
1301 SCRadixReleaseNode(node, tree);
1302 SCRadixReleasePrefix(prefix, tree);
1318 SCRadixRemoveKey(key_stream, key_bitlen, tree, 255);
1333 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1334 SCRadixValidateIPv4Key(key_stream, netmask);
1336 SCRadixRemoveKey(key_stream, 32, tree, netmask);
1352 SCRadixRemoveKey(key_stream, 32, tree, 32);
1367 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1368 SCRadixValidateIPv6Key(key_stream, netmask);
1370 SCRadixRemoveKey(key_stream, 128, tree, netmask);
1386 SCRadixRemoveKey(key_stream, 128, tree, 128);
1397 static inline SCRadixNode *SCRadixFindKeyIPNetblock(
1398 uint8_t *key_stream, uint8_t key_bitlen,
SCRadixNode *node,
void **user_data_result)
1406 while (node != NULL && node->
netmasks == NULL)
1413 netmask_node = node;
1416 bytes = key_bitlen / 8;
1417 for (i = 0; i < bytes; i++) {
1419 if ( ((i + 1) * 8) > netmask_node->
netmasks[j]) {
1420 if ( ((i + 1) * 8 - netmask_node->
netmasks[j]) < 8)
1421 mask = UINT_MAX << ((i + 1) * 8 - netmask_node->
netmasks[j]);
1425 key_stream[i] &= mask;
1428 while (node->
bit < key_bitlen) {
1430 (0x80 >> (node->
bit % 8))) ) {
1440 if (node->
bit != key_bitlen || node->
prefix == NULL)
1444 mask = UINT_MAX << (8 - key_bitlen % 8);
1446 if (key_bitlen % 8 == 0 ||
1447 (node->
prefix->
stream[bytes] & mask) == (key_stream[bytes] & mask)) {
1448 if (SCRadixPrefixContainNetmaskAndSetUserData(node->
prefix, netmask_node->
netmasks[j], 0, user_data_result))
1454 return SCRadixFindKeyIPNetblock(key_stream, key_bitlen, netmask_node->
parent, user_data_result);
1467 static SCRadixNode *SCRadixFindKey(uint8_t *key_stream, uint8_t key_bitlen, uint8_t netmask,
1468 SCRadixTree *tree,
int exact_match,
void **user_data_result)
1470 if (tree == NULL || tree->
head == NULL)
1476 uint8_t tmp_stream[255];
1478 memset(tmp_stream, 0, 255);
1479 memcpy(tmp_stream, key_stream, key_bitlen / 8);
1481 while (node->
bit < key_bitlen) {
1483 (0x80 >> (node->
bit % 8))) ) {
1494 if (node->
bit != key_bitlen || node->
prefix == NULL) {
1498 bytes = key_bitlen / 8;
1500 mask = UINT_MAX << (8 - key_bitlen % 8);
1502 if (key_bitlen % 8 == 0 ||
1503 (node->
prefix->
stream[bytes] & mask) == (tmp_stream[bytes] & mask)) {
1504 if (SCRadixPrefixContainNetmaskAndSetUserData(
1505 node->
prefix, netmask, 1, user_data_result)) {
1516 SCRadixNode *ret = SCRadixFindKeyIPNetblock(tmp_stream, key_bitlen, node, user_data_result);
1529 return SCRadixFindKey(key_stream, 32, 32, tree, 1, user_data_result);
1541 return SCRadixFindKey(key_stream, 32, 32, tree, 0, user_data_result);
1552 uint8_t netmask,
void **user_data_result)
1554 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1555 SCRadixValidateIPv4Key(key_stream, netmask);
1557 SCRadixNode *node = SCRadixFindKey(key_stream, 32, netmask, tree, 1, user_data_result);
1569 uint8_t netmask,
void **user_data_result)
1571 #if defined(DEBUG_VALIDATION) || defined(UNITTESTS)
1572 SCRadixValidateIPv6Key(key_stream, netmask);
1574 SCRadixNode *node = SCRadixFindKey(key_stream, 128, netmask, tree, 1, user_data_result);
1587 return SCRadixFindKey(key_stream, 128, 128, tree, 1, user_data_result);
1599 return SCRadixFindKey(key_stream, 128, 128, tree, 0, user_data_result);
1615 for (i = 0; i < level; i++)
1618 printf(
"%d [", node->
bit);
1624 printf(
"%s%d", (0 == i ?
"" :
", "), node->
netmasks[i]);
1628 if (node->
prefix != NULL) {
1630 printf(
"%s%d", (0 == i ?
"" :
"."), node->
prefix->
stream[i]);
1635 for (
int x = 0; x <= level; x++)
1638 if (PrintData != NULL) {
1639 PrintData(ud->
user);
1645 }
while (ud != NULL);
1647 printf(
"inter_node)\n");
1660 static void SCRadixPrintRadixSubtree(
SCRadixNode *node,
int level,
void (*PrintData)(
void*))
1664 SCRadixPrintRadixSubtree(node->
left, level + 1, PrintData);
1665 SCRadixPrintRadixSubtree(node->
right, level + 1, PrintData);
1691 printf(
"Printing the Radix Tree: \n");
1702 static int SCRadixTestIPV4Insertion03(
void)
1705 struct sockaddr_in servaddr;
1711 memset(&servaddr, 0,
sizeof(servaddr));
1712 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1716 memset(&servaddr, 0,
sizeof(servaddr));
1717 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1721 memset(&servaddr, 0,
sizeof(servaddr));
1722 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1726 memset(&servaddr, 0,
sizeof(servaddr));
1727 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1735 memset(&servaddr, 0,
sizeof(servaddr));
1736 if (inet_pton(AF_INET,
"192.168.1.6", &servaddr.sin_addr) <= 0)
1741 memset(&servaddr, 0,
sizeof(servaddr));
1742 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1747 memset(&servaddr, 0,
sizeof(servaddr));
1748 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1752 memset(&servaddr, 0,
sizeof(servaddr));
1753 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1757 memset(&servaddr, 0,
sizeof(servaddr));
1758 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1763 memset(&servaddr, 0,
sizeof(servaddr));
1764 if (inet_pton(AF_INET,
"192.168.1.3", &servaddr.sin_addr) <= 0)
1768 memset(&servaddr, 0,
sizeof(servaddr));
1769 if (inet_pton(AF_INET,
"127.234.2.62", &servaddr.sin_addr) <= 0)
1773 memset(&servaddr, 0,
sizeof(servaddr));
1774 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1778 memset(&servaddr, 0,
sizeof(servaddr));
1779 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1783 memset(&servaddr, 0,
sizeof(servaddr));
1784 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1788 memset(&servaddr, 0,
sizeof(servaddr));
1789 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1793 memset(&servaddr, 0,
sizeof(servaddr));
1794 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1798 memset(&servaddr, 0,
sizeof(servaddr));
1799 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1803 memset(&servaddr, 0,
sizeof(servaddr));
1804 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1813 static int SCRadixTestIPV4Removal04(
void)
1816 struct sockaddr_in servaddr;
1822 memset(&servaddr, 0,
sizeof(servaddr));
1823 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1827 memset(&servaddr, 0,
sizeof(servaddr));
1828 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1832 memset(&servaddr, 0,
sizeof(servaddr));
1833 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1837 memset(&servaddr, 0,
sizeof(servaddr));
1838 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1842 memset(&servaddr, 0,
sizeof(servaddr));
1843 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1847 memset(&servaddr, 0,
sizeof(servaddr));
1848 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1852 memset(&servaddr, 0,
sizeof(servaddr));
1853 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1858 memset(&servaddr, 0,
sizeof(servaddr));
1859 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
1863 memset(&servaddr, 0,
sizeof(servaddr));
1864 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1868 memset(&servaddr, 0,
sizeof(servaddr));
1869 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
1873 memset(&servaddr, 0,
sizeof(servaddr));
1874 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
1878 memset(&servaddr, 0,
sizeof(servaddr));
1879 if (inet_pton(AF_INET,
"192.167.1.1", &servaddr.sin_addr) <= 0)
1883 memset(&servaddr, 0,
sizeof(servaddr));
1884 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1888 memset(&servaddr, 0,
sizeof(servaddr));
1889 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
1893 memset(&servaddr, 0,
sizeof(servaddr));
1894 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
1898 memset(&servaddr, 0,
sizeof(servaddr));
1899 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1903 memset(&servaddr, 0,
sizeof(servaddr));
1904 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1908 memset(&servaddr, 0,
sizeof(servaddr));
1909 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
1913 memset(&servaddr, 0,
sizeof(servaddr));
1914 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
1918 result &= (tree->
head == NULL);
1925 static int SCRadixTestIPV6Insertion07(
void)
1928 struct sockaddr_in6 servaddr;
1934 memset(&servaddr, 0,
sizeof(servaddr));
1935 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
1936 &servaddr.sin6_addr) <= 0)
1940 memset(&servaddr, 0,
sizeof(servaddr));
1941 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
1942 &servaddr.sin6_addr) <= 0)
1946 memset(&servaddr, 0,
sizeof(servaddr));
1947 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
1948 &servaddr.sin6_addr) <= 0)
1952 memset(&servaddr, 0,
sizeof(servaddr));
1953 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
1954 &servaddr.sin6_addr) <= 0)
1961 memset(&servaddr, 0,
sizeof(servaddr));
1962 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
1963 &servaddr.sin6_addr) <= 0)
1967 memset(&servaddr, 0,
sizeof(servaddr));
1968 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
1969 &servaddr.sin6_addr) <= 0)
1973 memset(&servaddr, 0,
sizeof(servaddr));
1974 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
1975 &servaddr.sin6_addr) <= 0)
1980 memset(&servaddr, 0,
sizeof(servaddr));
1981 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
1982 &servaddr.sin6_addr) <= 0)
1986 memset(&servaddr, 0,
sizeof(servaddr));
1987 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
1988 &servaddr.sin6_addr) <= 0)
1992 memset(&servaddr, 0,
sizeof(servaddr));
1993 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
1994 &servaddr.sin6_addr) <= 0)
1998 memset(&servaddr, 0,
sizeof(servaddr));
1999 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2000 &servaddr.sin6_addr) <= 0)
2004 memset(&servaddr, 0,
sizeof(servaddr));
2005 if (inet_pton(AF_INET6,
"DBCA:ABC2:ABCD:DBCA:1245:2342:1111:2212",
2006 &servaddr.sin6_addr) <= 0)
2010 memset(&servaddr, 0,
sizeof(servaddr));
2011 if (inet_pton(AF_INET6,
"2003:0BF5:5346:1251:7422:1112:9124:2315",
2012 &servaddr.sin6_addr) <= 0)
2016 memset(&servaddr, 0,
sizeof(servaddr));
2017 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2018 &servaddr.sin6_addr) <= 0)
2022 memset(&servaddr, 0,
sizeof(servaddr));
2023 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2024 &servaddr.sin6_addr) <= 0)
2028 memset(&servaddr, 0,
sizeof(servaddr));
2029 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
2030 &servaddr.sin6_addr) <= 0)
2039 static int SCRadixTestIPV6Removal08(
void)
2042 struct sockaddr_in6 servaddr;
2048 memset(&servaddr, 0,
sizeof(servaddr));
2049 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2050 &servaddr.sin6_addr) <= 0)
2054 memset(&servaddr, 0,
sizeof(servaddr));
2055 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2056 &servaddr.sin6_addr) <= 0)
2060 memset(&servaddr, 0,
sizeof(servaddr));
2061 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2062 &servaddr.sin6_addr) <= 0)
2066 memset(&servaddr, 0,
sizeof(servaddr));
2067 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2068 &servaddr.sin6_addr) <= 0)
2075 memset(&servaddr, 0,
sizeof(servaddr));
2076 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2077 &servaddr.sin6_addr) <= 0)
2081 memset(&servaddr, 0,
sizeof(servaddr));
2082 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2083 &servaddr.sin6_addr) <= 0)
2087 memset(&servaddr, 0,
sizeof(servaddr));
2088 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
2089 &servaddr.sin6_addr) <= 0)
2094 memset(&servaddr, 0,
sizeof(servaddr));
2095 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2096 &servaddr.sin6_addr) <= 0)
2100 memset(&servaddr, 0,
sizeof(servaddr));
2101 if (inet_pton(AF_INET6,
"8888:0BF1:5346:BDEA:6422:8713:9124:2315",
2102 &servaddr.sin6_addr) <= 0)
2106 memset(&servaddr, 0,
sizeof(servaddr));
2107 if (inet_pton(AF_INET6,
"2006:0BF1:5346:BDEA:7422:8713:9124:2315",
2108 &servaddr.sin6_addr) <= 0)
2112 memset(&servaddr, 0,
sizeof(servaddr));
2113 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2114 &servaddr.sin6_addr) <= 0)
2118 memset(&servaddr, 0,
sizeof(servaddr));
2119 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2120 &servaddr.sin6_addr) <= 0)
2125 memset(&servaddr, 0,
sizeof(servaddr));
2126 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2127 &servaddr.sin6_addr) <= 0)
2131 memset(&servaddr, 0,
sizeof(servaddr));
2132 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2133 &servaddr.sin6_addr) <= 0)
2137 memset(&servaddr, 0,
sizeof(servaddr));
2138 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2139 &servaddr.sin6_addr) <= 0)
2143 memset(&servaddr, 0,
sizeof(servaddr));
2144 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2145 &servaddr.sin6_addr) <= 0)
2149 memset(&servaddr, 0,
sizeof(servaddr));
2150 if (inet_pton(AF_INET6,
"2003:0BF1:5346:1251:7422:1112:9124:2315",
2151 &servaddr.sin6_addr) <= 0)
2155 memset(&servaddr, 0,
sizeof(servaddr));
2156 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:DDDD:2315",
2157 &servaddr.sin6_addr) <= 0)
2162 memset(&servaddr, 0,
sizeof(servaddr));
2163 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2164 &servaddr.sin6_addr) <= 0)
2168 memset(&servaddr, 0,
sizeof(servaddr));
2169 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2170 &servaddr.sin6_addr) <= 0)
2175 memset(&servaddr, 0,
sizeof(servaddr));
2176 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2177 &servaddr.sin6_addr) <= 0)
2181 memset(&servaddr, 0,
sizeof(servaddr));
2182 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2183 &servaddr.sin6_addr) <= 0)
2187 memset(&servaddr, 0,
sizeof(servaddr));
2188 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2189 &servaddr.sin6_addr) <= 0)
2193 memset(&servaddr, 0,
sizeof(servaddr));
2194 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2195 &servaddr.sin6_addr) <= 0)
2199 memset(&servaddr, 0,
sizeof(servaddr));
2200 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2201 &servaddr.sin6_addr) <= 0)
2205 memset(&servaddr, 0,
sizeof(servaddr));
2206 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2207 &servaddr.sin6_addr) <= 0)
2212 memset(&servaddr, 0,
sizeof(servaddr));
2213 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2214 &servaddr.sin6_addr) <= 0)
2218 memset(&servaddr, 0,
sizeof(servaddr));
2219 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2220 &servaddr.sin6_addr) <= 0)
2224 memset(&servaddr, 0,
sizeof(servaddr));
2225 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2226 &servaddr.sin6_addr) <= 0)
2230 memset(&servaddr, 0,
sizeof(servaddr));
2231 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2232 &servaddr.sin6_addr) <= 0)
2237 memset(&servaddr, 0,
sizeof(servaddr));
2238 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2239 &servaddr.sin6_addr) <= 0)
2243 memset(&servaddr, 0,
sizeof(servaddr));
2244 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
2245 &servaddr.sin6_addr) <= 0)
2249 memset(&servaddr, 0,
sizeof(servaddr));
2250 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
2251 &servaddr.sin6_addr) <= 0)
2255 memset(&servaddr, 0,
sizeof(servaddr));
2256 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
2257 &servaddr.sin6_addr) <= 0)
2261 memset(&servaddr, 0,
sizeof(servaddr));
2262 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
2263 &servaddr.sin6_addr) <= 0)
2267 memset(&servaddr, 0,
sizeof(servaddr));
2268 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
2269 &servaddr.sin6_addr) <= 0)
2288 static int SCRadixTestIPV4Bug5066(
void)
2290 struct sockaddr_in servaddr;
2296 memset(&servaddr, 0,
sizeof(servaddr));
2297 FAIL_IF(inet_pton(AF_INET,
"100.117.241.0", &servaddr.sin_addr) <= 0);
2308 FAIL_IF(inet_pton(AF_INET,
"100.117.241.0", &servaddr.sin_addr) <= 0);
2316 SCLogDebug(
"find 100.117.241.64/26 (should fail)");
2317 FAIL_IF(inet_pton(AF_INET,
"100.117.241.64", &servaddr.sin_addr) <= 0);
2324 SCLogDebug(
"find 100.117.241.64/26 (should succeed)");
2335 static void SCRadixTestIPV4Bug5066v2PrintData(
void *d)
2341 static int SCRadixTestIPV4Bug5066v2(
void)
2343 struct sockaddr_in servaddr;
2349 memset(&servaddr, 0,
sizeof(servaddr));
2350 FAIL_IF(inet_pton(AF_INET,
"1.2.3.0", &servaddr.sin_addr) <= 0);
2360 memset(&servaddr, 0,
sizeof(servaddr));
2361 FAIL_IF(inet_pton(AF_INET,
"1.2.3.0", &servaddr.sin_addr) <= 0);
2371 memset(&servaddr, 0,
sizeof(servaddr));
2372 FAIL_IF(inet_pton(AF_INET,
"1.2.3.0", &servaddr.sin_addr) <= 0);
2382 memset(&servaddr, 0,
sizeof(servaddr));
2383 FAIL_IF(inet_pton(AF_INET,
"1.2.3.64", &servaddr.sin_addr) <= 0);
2393 memset(&servaddr, 0,
sizeof(servaddr));
2394 FAIL_IF(inet_pton(AF_INET,
"1.2.3.64", &servaddr.sin_addr) <= 0);
2404 memset(&servaddr, 0,
sizeof(servaddr));
2405 FAIL_IF(inet_pton(AF_INET,
"1.2.3.96", &servaddr.sin_addr) <= 0);
2422 static int SCRadixTestIPV6Bug5066(
void)
2424 struct sockaddr_in6 servaddr;
2430 memset(&servaddr, 0,
sizeof(servaddr));
2431 FAIL_IF(inet_pton(AF_INET6,
"2000::1:0", &servaddr.sin6_addr) <= 0);
2442 FAIL_IF(inet_pton(AF_INET6,
"2000::1:0", &servaddr.sin6_addr) <= 0);
2450 SCLogDebug(
"find 2000::1:40/122 (should fail)");
2451 FAIL_IF(inet_pton(AF_INET6,
"2000::1:40", &servaddr.sin6_addr) <= 0);
2458 SCLogDebug(
"find 2000::1:40/122 (should succeed)");
2469 static int SCRadixTestIPV4NetblockInsertion09(
void)
2472 struct sockaddr_in servaddr;
2478 memset(&servaddr, 0,
sizeof(servaddr));
2479 if (inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0)
2483 memset(&servaddr, 0,
sizeof(servaddr));
2484 if (inet_pton(AF_INET,
"192.168.1.2", &servaddr.sin_addr) <= 0)
2488 memset(&servaddr, 0,
sizeof(servaddr));
2489 if (inet_pton(AF_INET,
"192.167.1.3", &servaddr.sin_addr) <= 0)
2493 memset(&servaddr, 0,
sizeof(servaddr));
2494 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2498 memset(&servaddr, 0,
sizeof(servaddr));
2499 if (inet_pton(AF_INET,
"220.168.1.2", &servaddr.sin_addr) <= 0)
2503 memset(&servaddr, 0,
sizeof(servaddr));
2504 if (inet_pton(AF_INET,
"192.168.1.5", &servaddr.sin_addr) <= 0)
2508 memset(&servaddr, 0,
sizeof(servaddr));
2509 if (inet_pton(AF_INET,
"192.168.1.18", &servaddr.sin_addr) <= 0)
2513 memset(&servaddr, 0,
sizeof(servaddr));
2514 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2518 memset(&servaddr, 0,
sizeof(servaddr));
2519 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2523 memset(&servaddr, 0,
sizeof(servaddr));
2524 if (inet_pton(AF_INET,
"192.171.192.0", &servaddr.sin_addr) <= 0)
2528 if (inet_pton(AF_INET,
"192.175.0.0", &servaddr.sin_addr) <= 0)
2533 memset(&servaddr, 0,
sizeof(servaddr));
2534 if (inet_pton(AF_INET,
"192.168.1.6", &servaddr.sin_addr) <= 0)
2538 memset(&servaddr, 0,
sizeof(servaddr));
2539 if (inet_pton(AF_INET,
"192.170.1.6", &servaddr.sin_addr) <= 0)
2543 memset(&servaddr, 0,
sizeof(servaddr));
2544 if (inet_pton(AF_INET,
"192.171.128.145", &servaddr.sin_addr) <= 0)
2548 memset(&servaddr, 0,
sizeof(servaddr));
2549 if (inet_pton(AF_INET,
"192.171.64.6", &servaddr.sin_addr) <= 0)
2553 memset(&servaddr, 0,
sizeof(servaddr));
2554 if (inet_pton(AF_INET,
"192.171.191.6", &servaddr.sin_addr) <= 0)
2558 memset(&servaddr, 0,
sizeof(servaddr));
2559 if (inet_pton(AF_INET,
"192.171.224.6", &servaddr.sin_addr) <= 0)
2563 memset(&servaddr, 0,
sizeof(servaddr));
2564 if (inet_pton(AF_INET,
"192.174.224.6", &servaddr.sin_addr) <= 0)
2568 memset(&servaddr, 0,
sizeof(servaddr));
2569 if (inet_pton(AF_INET,
"192.175.224.6", &servaddr.sin_addr) <= 0)
2578 static int SCRadixTestIPV4NetblockInsertion10(
void)
2582 struct sockaddr_in servaddr;
2587 memset(&servaddr, 0,
sizeof(servaddr));
2588 if (inet_pton(AF_INET,
"253.192.0.0", &servaddr.sin_addr) <= 0)
2592 memset(&servaddr, 0,
sizeof(servaddr));
2593 if (inet_pton(AF_INET,
"253.192.235.0", &servaddr.sin_addr) <= 0)
2597 memset(&servaddr, 0,
sizeof(servaddr));
2598 if (inet_pton(AF_INET,
"192.167.0.0", &servaddr.sin_addr) <= 0)
2602 memset(&servaddr, 0,
sizeof(servaddr));
2603 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2607 memset(&servaddr, 0,
sizeof(servaddr));
2608 if (inet_pton(AF_INET,
"220.168.0.0", &servaddr.sin_addr) <= 0)
2612 memset(&servaddr, 0,
sizeof(servaddr));
2613 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2617 memset(&servaddr, 0,
sizeof(servaddr));
2618 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2622 memset(&servaddr, 0,
sizeof(servaddr));
2623 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2627 memset(&servaddr, 0,
sizeof(servaddr));
2628 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2632 memset(&servaddr, 0,
sizeof(servaddr));
2633 if (inet_pton(AF_INET,
"192.171.0.0", &servaddr.sin_addr) <= 0)
2637 if (inet_pton(AF_INET,
"192.175.0.0", &servaddr.sin_addr) <= 0)
2644 memset(&servaddr, 0,
sizeof(servaddr));
2645 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2650 SCLogDebug(
"search \"exact\" match for 192.171.128.45");
2651 memset(&servaddr, 0,
sizeof(servaddr));
2652 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2657 SCLogDebug(
"search \"best\" match for 192.171.128.45");
2658 memset(&servaddr, 0,
sizeof(servaddr));
2659 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2664 memset(&servaddr, 0,
sizeof(servaddr));
2665 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
2671 memset(&servaddr, 0,
sizeof(servaddr));
2672 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2676 memset(&servaddr, 0,
sizeof(servaddr));
2677 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
2682 memset(&servaddr, 0,
sizeof(servaddr));
2683 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
2692 static int SCRadixTestIPV4NetblockInsertion11(
void)
2696 struct sockaddr_in servaddr;
2702 memset(&servaddr, 0,
sizeof(servaddr));
2703 if (inet_pton(AF_INET,
"253.192.0.0", &servaddr.sin_addr) <= 0)
2707 memset(&servaddr, 0,
sizeof(servaddr));
2708 if (inet_pton(AF_INET,
"253.192.235.0", &servaddr.sin_addr) <= 0)
2712 memset(&servaddr, 0,
sizeof(servaddr));
2713 if (inet_pton(AF_INET,
"192.167.0.0", &servaddr.sin_addr) <= 0)
2717 memset(&servaddr, 0,
sizeof(servaddr));
2718 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2722 memset(&servaddr, 0,
sizeof(servaddr));
2723 if (inet_pton(AF_INET,
"220.168.0.0", &servaddr.sin_addr) <= 0)
2727 memset(&servaddr, 0,
sizeof(servaddr));
2728 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2732 memset(&servaddr, 0,
sizeof(servaddr));
2733 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2737 memset(&servaddr, 0,
sizeof(servaddr));
2738 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2742 memset(&servaddr, 0,
sizeof(servaddr));
2743 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2747 memset(&servaddr, 0,
sizeof(servaddr));
2748 if (inet_pton(AF_INET,
"192.171.0.0", &servaddr.sin_addr) <= 0)
2752 if (inet_pton(AF_INET,
"192.175.0.0", &servaddr.sin_addr) <= 0)
2756 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2761 memset(&servaddr, 0,
sizeof(servaddr));
2762 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2766 memset(&servaddr, 0,
sizeof(servaddr));
2767 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2771 memset(&servaddr, 0,
sizeof(servaddr));
2772 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
2776 memset(&servaddr, 0,
sizeof(servaddr));
2777 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
2781 memset(&servaddr, 0,
sizeof(servaddr));
2782 if (inet_pton(AF_INET,
"1.1.1.1", &servaddr.sin_addr) <= 0)
2786 memset(&servaddr, 0,
sizeof(servaddr));
2787 if (inet_pton(AF_INET,
"192.255.254.25", &servaddr.sin_addr) <= 0)
2791 memset(&servaddr, 0,
sizeof(servaddr));
2792 if (inet_pton(AF_INET,
"169.255.254.25", &servaddr.sin_addr) <= 0)
2796 memset(&servaddr, 0,
sizeof(servaddr));
2797 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2801 memset(&servaddr, 0,
sizeof(servaddr));
2802 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2807 memset(&servaddr, 0,
sizeof(servaddr));
2808 if (inet_pton(AF_INET,
"245.63.62.121", &servaddr.sin_addr) <= 0)
2813 memset(&servaddr, 0,
sizeof(servaddr));
2814 if (inet_pton(AF_INET,
"253.224.1.6", &servaddr.sin_addr) <= 0)
2820 memset(&servaddr, 0,
sizeof(servaddr));
2821 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2825 memset(&servaddr, 0,
sizeof(servaddr));
2826 if (inet_pton(AF_INET,
"253.224.1.6", &servaddr.sin_addr) <= 0)
2830 memset(&servaddr, 0,
sizeof(servaddr));
2831 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
2835 memset(&servaddr, 0,
sizeof(servaddr));
2836 if (inet_pton(AF_INET,
"1.1.1.1", &servaddr.sin_addr) <= 0)
2840 memset(&servaddr, 0,
sizeof(servaddr));
2841 if (inet_pton(AF_INET,
"192.255.254.25", &servaddr.sin_addr) <= 0)
2845 memset(&servaddr, 0,
sizeof(servaddr));
2846 if (inet_pton(AF_INET,
"169.255.254.25", &servaddr.sin_addr) <= 0)
2850 memset(&servaddr, 0,
sizeof(servaddr));
2851 if (inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0)
2860 static int SCRadixTestIPV4NetblockInsertion12(
void)
2864 struct sockaddr_in servaddr;
2870 memset(&servaddr, 0,
sizeof(servaddr));
2871 if (inet_pton(AF_INET,
"253.192.0.0", &servaddr.sin_addr) <= 0)
2875 memset(&servaddr, 0,
sizeof(servaddr));
2876 if (inet_pton(AF_INET,
"253.192.235.0", &servaddr.sin_addr) <= 0)
2880 memset(&servaddr, 0,
sizeof(servaddr));
2881 if (inet_pton(AF_INET,
"192.167.0.0", &servaddr.sin_addr) <= 0)
2885 memset(&servaddr, 0,
sizeof(servaddr));
2886 if (inet_pton(AF_INET,
"192.167.1.4", &servaddr.sin_addr) <= 0)
2890 memset(&servaddr, 0,
sizeof(servaddr));
2891 if (inet_pton(AF_INET,
"220.168.0.0", &servaddr.sin_addr) <= 0)
2895 memset(&servaddr, 0,
sizeof(servaddr));
2896 if (inet_pton(AF_INET,
"253.224.1.5", &servaddr.sin_addr) <= 0)
2900 memset(&servaddr, 0,
sizeof(servaddr));
2901 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
2905 memset(&servaddr, 0,
sizeof(servaddr));
2906 if (inet_pton(AF_INET,
"192.171.128.0", &servaddr.sin_addr) <= 0)
2910 memset(&servaddr, 0,
sizeof(servaddr));
2911 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2915 memset(&servaddr, 0,
sizeof(servaddr));
2916 if (inet_pton(AF_INET,
"192.171.0.0", &servaddr.sin_addr) <= 0)
2920 if (inet_pton(AF_INET,
"225.175.21.228", &servaddr.sin_addr) <= 0)
2925 memset(&servaddr, 0,
sizeof(servaddr));
2926 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2930 memset(&servaddr, 0,
sizeof(servaddr));
2931 if (inet_pton(AF_INET,
"192.171.128.53", &servaddr.sin_addr) <= 0)
2935 memset(&servaddr, 0,
sizeof(servaddr));
2936 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2940 memset(&servaddr, 0,
sizeof(servaddr));
2941 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2945 memset(&servaddr, 0,
sizeof(servaddr));
2946 if (inet_pton(AF_INET,
"192.171.128.45", &servaddr.sin_addr) <= 0)
2950 memset(&servaddr, 0,
sizeof(servaddr));
2951 if (inet_pton(AF_INET,
"192.171.128.78", &servaddr.sin_addr) <= 0)
2955 memset(&servaddr, 0,
sizeof(servaddr));
2956 if (inet_pton(AF_INET,
"192.171.127.78", &servaddr.sin_addr) <= 0)
2960 memset(&servaddr, 0,
sizeof(servaddr));
2961 if (inet_pton(AF_INET,
"225.175.21.228", &servaddr.sin_addr) <= 0)
2965 memset(&servaddr, 0,
sizeof(servaddr));
2966 if (inet_pton(AF_INET,
"225.175.21.224", &servaddr.sin_addr) <= 0)
2970 memset(&servaddr, 0,
sizeof(servaddr));
2971 if (inet_pton(AF_INET,
"225.175.21.229", &servaddr.sin_addr) <= 0)
2975 memset(&servaddr, 0,
sizeof(servaddr));
2976 if (inet_pton(AF_INET,
"225.175.21.230", &servaddr.sin_addr) <= 0)
2985 static int SCRadixTestIPV6NetblockInsertion13(
void)
2988 struct sockaddr_in6 servaddr;
2994 memset(&servaddr, 0,
sizeof(servaddr));
2995 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
2996 &servaddr.sin6_addr) <= 0)
3000 memset(&servaddr, 0,
sizeof(servaddr));
3001 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
3002 &servaddr.sin6_addr) <= 0)
3006 memset(&servaddr, 0,
sizeof(servaddr));
3007 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3008 &servaddr.sin6_addr) <= 0)
3012 memset(&servaddr, 0,
sizeof(servaddr));
3013 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
3014 &servaddr.sin6_addr) <= 0)
3018 memset(&servaddr, 0,
sizeof(servaddr));
3019 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
3020 &servaddr.sin6_addr) <= 0)
3024 memset(&servaddr, 0,
sizeof(servaddr));
3025 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DB00:0000:0000:0000:0000",
3026 &servaddr.sin6_addr) <= 0)
3030 memset(&servaddr, 0,
sizeof(servaddr));
3031 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3032 &servaddr.sin6_addr) <= 0)
3037 memset(&servaddr, 0,
sizeof(servaddr));
3038 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
3039 &servaddr.sin6_addr) <= 0)
3043 memset(&servaddr, 0,
sizeof(servaddr));
3044 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
3045 &servaddr.sin6_addr) <= 0)
3049 memset(&servaddr, 0,
sizeof(servaddr));
3050 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3051 &servaddr.sin6_addr) <= 0)
3055 memset(&servaddr, 0,
sizeof(servaddr));
3056 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3057 &servaddr.sin6_addr) <= 0)
3061 memset(&servaddr, 0,
sizeof(servaddr));
3062 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
3063 &servaddr.sin6_addr) <= 0)
3067 memset(&servaddr, 0,
sizeof(servaddr));
3068 if (inet_pton(AF_INET6,
"DBCA:ABC2:ABCD:DBCA:1245:2342:1111:2212",
3069 &servaddr.sin6_addr) <= 0)
3073 memset(&servaddr, 0,
sizeof(servaddr));
3074 if (inet_pton(AF_INET6,
"2003:0BF5:5346:1251:7422:1112:9124:2315",
3075 &servaddr.sin6_addr) <= 0)
3079 memset(&servaddr, 0,
sizeof(servaddr));
3080 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
3081 &servaddr.sin6_addr) <= 0)
3085 memset(&servaddr, 0,
sizeof(servaddr));
3086 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBCA:1245:2342:1111:2212",
3087 &servaddr.sin6_addr) <= 0)
3091 memset(&servaddr, 0,
sizeof(servaddr));
3092 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1146:6241",
3093 &servaddr.sin6_addr) <= 0)
3097 memset(&servaddr, 0,
sizeof(servaddr));
3098 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1356:1241",
3099 &servaddr.sin6_addr) <= 0)
3103 memset(&servaddr, 0,
sizeof(servaddr));
3104 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DAAA:1245:2342:1146:6241",
3105 &servaddr.sin6_addr) <= 0)
3115 static int SCRadixTestIPV6NetblockInsertion14(
void)
3119 struct sockaddr_in6 servaddr;
3125 memset(&servaddr, 0,
sizeof(servaddr));
3126 if (inet_pton(AF_INET6,
"2003:0BF1:5346:BDEA:7422:8713:9124:2315",
3127 &servaddr.sin6_addr) <= 0)
3131 memset(&servaddr, 0,
sizeof(servaddr));
3132 if (inet_pton(AF_INET6,
"BD15:9791:5346:6223:AADB:8713:9882:2432",
3133 &servaddr.sin6_addr) <= 0)
3137 memset(&servaddr, 0,
sizeof(servaddr));
3138 if (inet_pton(AF_INET6,
"1111:A21B:6221:BDEA:BBBA::DBAA:9861",
3139 &servaddr.sin6_addr) <= 0)
3143 memset(&servaddr, 0,
sizeof(servaddr));
3144 if (inet_pton(AF_INET6,
"4444:0BF7:5346:BDEA:7422:8713:9124:2315",
3145 &servaddr.sin6_addr) <= 0)
3149 memset(&servaddr, 0,
sizeof(servaddr));
3150 if (inet_pton(AF_INET6,
"5555:0BF1:ABCD:ADEA:7922:ABCD:9124:2375",
3151 &servaddr.sin6_addr) <= 0)
3155 memset(&servaddr, 0,
sizeof(servaddr));
3156 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DB00:0000:0000:0000:0000",
3157 &servaddr.sin6_addr) <= 0)
3161 memset(&servaddr, 0,
sizeof(servaddr));
3162 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3163 &servaddr.sin6_addr) <= 0)
3167 memset(&servaddr, 0,
sizeof(servaddr));
3168 if (inet_pton(AF_INET6,
"::", &servaddr.sin6_addr) <= 0)
3174 memset(&servaddr, 0,
sizeof(servaddr));
3175 if (inet_pton(AF_INET6,
"2004:0BF1:5346:BDEA:7422:8713:9124:2315",
3176 &servaddr.sin6_addr) <= 0)
3180 memset(&servaddr, 0,
sizeof(servaddr));
3181 if (inet_pton(AF_INET6,
"2004:0BF1:5346:BDEA:7422:8713:9124:2315",
3182 &servaddr.sin6_addr) <= 0)
3186 memset(&servaddr, 0,
sizeof(servaddr));
3187 if (inet_pton(AF_INET6,
"2004:0BF1:5346:B116:2362:8713:9124:2315",
3188 &servaddr.sin6_addr) <= 0)
3192 memset(&servaddr, 0,
sizeof(servaddr));
3193 if (inet_pton(AF_INET6,
"2004:0B23:3252:BDEA:7422:8713:9124:2341",
3194 &servaddr.sin6_addr) <= 0)
3198 memset(&servaddr, 0,
sizeof(servaddr));
3199 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3200 &servaddr.sin6_addr) <= 0)
3205 memset(&servaddr, 0,
sizeof(servaddr));
3206 if (inet_pton(AF_INET6,
"DBCA:ABCD:ABCD:DBAA:1245:2342:1145:6241",
3207 &servaddr.sin6_addr) <= 0)
3221 static int SCRadixTestIPV4NetBlocksAndBestSearch15(
void)
3227 struct sockaddr_in servaddr;
3228 memset(&servaddr, 0,
sizeof(servaddr));
3229 FAIL_IF(inet_pton(AF_INET,
"192.168.0.1", &servaddr.sin_addr) <= 0);
3231 for (uint32_t i = 0; i <= 32; i++) {
3232 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3237 snprintf(
str,
sizeof(
str),
"192.168.0.1/%u", i);
3240 void *user_data = NULL;
3244 FAIL_IF(*((uint32_t *)user_data) != i);
3255 static int SCRadixTestIPV4NetBlocksAndBestSearch16(
void)
3261 struct sockaddr_in servaddr;
3262 memset(&servaddr, 0,
sizeof(servaddr));
3263 FAIL_IF(inet_pton(AF_INET,
"192.168.1.1", &servaddr.sin_addr) <= 0);
3265 for (uint32_t i = 0; i <= 32; i++) {
3266 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3271 snprintf(
str,
sizeof(
str),
"192.168.1.1/%u", i);
3274 void *user_data = NULL;
3278 FAIL_IF(*((uint32_t *)user_data) != i);
3289 static int SCRadixTestIPV4NetBlocksAndBestSearch17(
void)
3294 struct sockaddr_in servaddr;
3295 memset(&servaddr, 0,
sizeof(servaddr));
3296 FAIL_IF(inet_pton(AF_INET,
"10.0.0.1", &servaddr.sin_addr) <= 0);
3298 for (uint32_t i = 0; i <= 32; i++) {
3299 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3304 snprintf(
str,
sizeof(
str),
"10.0.0.1/%u", i);
3307 void *user_data = NULL;
3311 FAIL_IF(*((uint32_t *)user_data) != i);
3322 static int SCRadixTestIPV4NetBlocksAndBestSearch18(
void)
3327 struct sockaddr_in servaddr;
3328 memset(&servaddr, 0,
sizeof(servaddr));
3329 FAIL_IF(inet_pton(AF_INET,
"172.26.0.1", &servaddr.sin_addr) <= 0);
3331 for (uint32_t i = 0; i <= 32; i++) {
3332 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3337 snprintf(
str,
sizeof(
str),
"172.26.0.1/%u", i);
3340 void *user_data = NULL;
3344 FAIL_IF(*((uint32_t *)user_data) != i);
3355 static int SCRadixTestIPV4NetBlocksAndBestSearch19(
void)
3360 struct sockaddr_in servaddr;
3361 memset(&servaddr, 0,
sizeof(servaddr));
3362 FAIL_IF(inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0);
3364 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3370 memset(&servaddr, 0,
sizeof(servaddr));
3371 FAIL_IF(inet_pton(AF_INET,
"192.168.1.15", &servaddr.sin_addr) <= 0);
3372 void *user_data = NULL;
3376 FAIL_IF(*((uint32_t *)user_data) != 100);
3379 memset(&servaddr, 0,
sizeof(servaddr));
3380 FAIL_IF(inet_pton(AF_INET,
"177.0.0.0", &servaddr.sin_addr) <= 0);
3387 memset(&servaddr, 0,
sizeof(servaddr));
3388 FAIL_IF(inet_pton(AF_INET,
"177.168.1.15", &servaddr.sin_addr) <= 0);
3393 FAIL_IF(*((uint32_t *)user_data) != 200);
3396 memset(&servaddr, 0,
sizeof(servaddr));
3397 FAIL_IF(inet_pton(AF_INET,
"178.168.1.15", &servaddr.sin_addr) <= 0);
3402 FAIL_IF(*((uint32_t *)user_data) != 100);
3405 memset(&servaddr, 0,
sizeof(servaddr));
3406 FAIL_IF(inet_pton(AF_INET,
"177.160.0.0", &servaddr.sin_addr) <= 0);
3413 memset(&servaddr, 0,
sizeof(servaddr));
3414 FAIL_IF(inet_pton(AF_INET,
"177.168.1.15", &servaddr.sin_addr) <= 0);
3419 FAIL_IF(*((uint32_t *)user_data) != 300);
3422 memset(&servaddr, 0,
sizeof(servaddr));
3423 FAIL_IF(inet_pton(AF_INET,
"177.167.1.15", &servaddr.sin_addr) <= 0);
3428 FAIL_IF(*((uint32_t *)user_data) != 300);
3431 memset(&servaddr, 0,
sizeof(servaddr));
3432 FAIL_IF(inet_pton(AF_INET,
"177.178.1.15", &servaddr.sin_addr) <= 0);
3437 FAIL_IF(*((uint32_t *)user_data) != 200);
3440 memset(&servaddr, 0,
sizeof(servaddr));
3441 FAIL_IF(inet_pton(AF_INET,
"197.178.1.15", &servaddr.sin_addr) <= 0);
3446 FAIL_IF(*((uint32_t *)user_data) != 100);
3456 static int SCRadixTestIPV6NetBlocksAndBestSearch20(
void)
3461 struct sockaddr_in6 servaddr;
3462 memset(&servaddr, 0,
sizeof(servaddr));
3463 FAIL_IF(inet_pton(AF_INET6,
"ABAB:CDCD:ABAB:CDCD:1234:4321:1234:4321", &servaddr.sin6_addr) <=
3466 for (uint32_t i = 0; i <= 128; i++) {
3467 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3472 snprintf(
str,
sizeof(
str),
"ABAB:CDCD:ABAB:CDCD:1234:4321:1234:4321/%u", i);
3475 void *user_data = NULL;
3479 FAIL_IF(*((uint32_t *)user_data) != i);
3490 static int SCRadixTestIPV6NetBlocksAndBestSearch21(
void)
3495 struct sockaddr_in6 servaddr;
3496 memset(&servaddr, 0,
sizeof(servaddr));
3497 FAIL_IF(inet_pton(AF_INET6,
"ff00::1", &servaddr.sin6_addr) <= 0);
3499 for (uint32_t i = 0; i <= 128; i++) {
3500 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3505 snprintf(
str,
sizeof(
str),
"ff00::1/%u", i);
3508 void *user_data = NULL;
3512 FAIL_IF(*((uint32_t *)user_data) != i);
3523 static int SCRadixTestIPV6NetBlocksAndBestSearch22(
void)
3528 struct sockaddr_in6 servaddr;
3529 memset(&servaddr, 0,
sizeof(servaddr));
3530 FAIL_IF(inet_pton(AF_INET6,
"ff00::192:168:1:1", &servaddr.sin6_addr) <= 0);
3532 for (uint32_t i = 0; i <= 128; i++) {
3533 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3538 snprintf(
str,
sizeof(
str),
"ff00::192:168:1:1/%u", i);
3541 void *user_data = NULL;
3545 FAIL_IF(*((uint32_t *)user_data) != i);
3556 static int SCRadixTestIPV6NetBlocksAndBestSearch23(
void)
3561 struct sockaddr_in6 servaddr;
3562 memset(&servaddr, 0,
sizeof(servaddr));
3563 FAIL_IF(inet_pton(AF_INET6,
"FF00:ABCD:BCDA::ABCD", &servaddr.sin6_addr) <= 0);
3565 for (uint32_t i = 0; i <= 128; i++) {
3566 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3571 snprintf(
str,
sizeof(
str),
"FF00:ABCD:BCDA::ABCD/%u", i);
3574 void *user_data = NULL;
3578 FAIL_IF(*((uint32_t *)user_data) != i);
3589 static int SCRadixTestIPV6NetBlocksAndBestSearch24(
void)
3591 struct sockaddr_in6 servaddr;
3592 void *user_data = NULL;
3597 uint32_t *user =
SCMalloc(
sizeof(uint32_t));
3602 memset(&servaddr, 0,
sizeof(servaddr));
3603 FAIL_IF(inet_pton(AF_INET6,
"ABCD::1", &servaddr.sin6_addr) <= 0);
3607 FAIL_IF(*((uint32_t *)user_data) != 100);
3615 memset(&servaddr, 0,
sizeof(servaddr));
3616 FAIL_IF(inet_pton(AF_INET6,
"ABCD::1", &servaddr.sin6_addr) <= 0);
3620 FAIL_IF(*((uint32_t *)user_data) != 200);
3623 memset(&servaddr, 0,
sizeof(servaddr));
3624 FAIL_IF(inet_pton(AF_INET6,
"DCBA::1", &servaddr.sin6_addr) <= 0);
3629 FAIL_IF(*((uint32_t *)user_data) != 100);
3637 memset(&servaddr, 0,
sizeof(servaddr));
3638 FAIL_IF(inet_pton(AF_INET6,
"ABCD:ABCD::1", &servaddr.sin6_addr) <= 0);
3642 FAIL_IF(*((uint32_t *)user_data) != 300);
3645 memset(&servaddr, 0,
sizeof(servaddr));
3646 FAIL_IF(inet_pton(AF_INET6,
"ABCD:AAAA::1", &servaddr.sin6_addr) <= 0);
3650 FAIL_IF(*((uint32_t *)user_data) != 300);
3653 memset(&servaddr, 0,
sizeof(servaddr));
3654 FAIL_IF(inet_pton(AF_INET6,
"ABAB::1", &servaddr.sin6_addr) <= 0);
3658 FAIL_IF(*((uint32_t *)user_data) != 200);
3661 memset(&servaddr, 0,
sizeof(servaddr));
3662 FAIL_IF(inet_pton(AF_INET6,
"CABD::1", &servaddr.sin6_addr) <= 0);
3666 FAIL_IF(*((uint32_t *)user_data) != 100);
3678 static int SCRadixTestIPV4NetblockInsertion25(
void)
3681 struct sockaddr_in servaddr;
3686 memset(&servaddr, 0,
sizeof(servaddr));
3687 if (inet_pton(AF_INET,
"192.168.0.0", &servaddr.sin_addr) <= 0)
3692 memset(&servaddr, 0,
sizeof(servaddr));
3693 if (inet_pton(AF_INET,
"192.168.128.53", &servaddr.sin_addr) <= 0)
3708 static int SCRadixTestIPV4NetblockInsertion26(
void)
3710 struct sockaddr_in servaddr;
3715 memset(&servaddr, 0,
sizeof(servaddr));
3716 FAIL_IF(inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0);
3726 memset(&servaddr, 0,
sizeof(servaddr));
3727 FAIL_IF(inet_pton(AF_INET,
"176.0.0.0", &servaddr.sin_addr) <= 0);
3735 memset(&servaddr, 0,
sizeof(servaddr));
3736 FAIL_IF(inet_pton(AF_INET,
"0.0.0.0", &servaddr.sin_addr) <= 0);
3755 UtRegisterTest(
"SCRadixTestIPV4Insertion03", SCRadixTestIPV4Insertion03);
3756 UtRegisterTest(
"SCRadixTestIPV4Removal04", SCRadixTestIPV4Removal04);
3757 UtRegisterTest(
"SCRadixTestIPV6Insertion07", SCRadixTestIPV6Insertion07);
3758 UtRegisterTest(
"SCRadixTestIPV6Removal08", SCRadixTestIPV6Removal08);
3760 SCRadixTestIPV4NetblockInsertion09);
3761 UtRegisterTest(
"SCRadixTestIPV4Bug5066", SCRadixTestIPV4Bug5066);
3762 UtRegisterTest(
"SCRadixTestIPV4Bug5066v2", SCRadixTestIPV4Bug5066v2);
3763 UtRegisterTest(
"SCRadixTestIPV6Bug5066", SCRadixTestIPV6Bug5066);
3765 SCRadixTestIPV4NetblockInsertion10);
3767 SCRadixTestIPV4NetblockInsertion11);
3769 SCRadixTestIPV4NetblockInsertion12);
3771 SCRadixTestIPV6NetblockInsertion13);
3773 SCRadixTestIPV6NetblockInsertion14);
3775 SCRadixTestIPV4NetBlocksAndBestSearch15);
3777 SCRadixTestIPV4NetBlocksAndBestSearch16);
3779 SCRadixTestIPV4NetBlocksAndBestSearch17);
3781 SCRadixTestIPV4NetBlocksAndBestSearch18);
3783 SCRadixTestIPV4NetBlocksAndBestSearch19);
3785 SCRadixTestIPV6NetBlocksAndBestSearch20);
3787 SCRadixTestIPV6NetBlocksAndBestSearch21);
3789 SCRadixTestIPV6NetBlocksAndBestSearch22);
3791 SCRadixTestIPV6NetBlocksAndBestSearch23);
3793 SCRadixTestIPV6NetBlocksAndBestSearch24);
3795 SCRadixTestIPV4NetblockInsertion25);
3797 SCRadixTestIPV4NetblockInsertion26);