52 #define DetectAddressPrint(...)
58 DetectAddressHead *ghn,
const char *s,
int negate, ResolvedVariablesList *var_list,
168 if (newhead->
ip.
family == AF_INET) {
170 }
else if (newhead->
ip.
family == AF_INET6) {
195 if (new->ip.family == AF_INET)
197 else if (new->ip.family == AF_INET6)
228 head = GetHeadPtr(gh,
new);
234 for (cur =
head; cur != NULL; cur = cur->
next) {
250 if (cur->
next == NULL) {
259 if (cur->
prev != NULL)
269 if (SetHeadPtr(gh,
head) < 0)
278 r = DetectAddressCut(
de_ctx, cur,
new, &c);
282 DetectAddressInsert(
de_ctx, gh,
new);
284 DetectAddressInsert(
de_ctx, gh, c);
289 r = DetectAddressCut(
de_ctx, cur,
new, &c);
293 DetectAddressInsert(
de_ctx, gh,
new);
295 DetectAddressInsert(
de_ctx, gh, c);
300 r = DetectAddressCut(
de_ctx, cur,
new, &c);
304 DetectAddressInsert(
de_ctx, gh,
new);
306 DetectAddressInsert(
de_ctx, gh, c);
311 r = DetectAddressCut(
de_ctx, cur,
new,&c);
315 DetectAddressInsert(
de_ctx, gh,
new);
317 DetectAddressInsert(
de_ctx, gh, c);
326 if (SetHeadPtr(gh,
head) < 0) {
354 while (item != NULL && it != NULL) {
364 return item == NULL && it == NULL;
404 if ((strchr(
str,
':')) == NULL) {
410 if ((mask = strchr(ip,
'/')) != NULL) {
412 ip[mask - ip] =
'\0';
414 uint32_t ip4addr = 0;
415 uint32_t netmask = 0;
417 if ((strchr (mask,
'.')) == NULL) {
420 for (
size_t u = 0; u < strlen(mask); u++) {
421 if(!isdigit((
unsigned char)mask[u]))
431 r = inet_pton(AF_INET, mask, &in);
441 "netmask \"%s\" is not usable. Only netmasks that are compatible with "
442 "CIDR notation are supported. See ticket #5168.",
448 r = inet_pton(AF_INET, ip, &in);
454 dd->
ip.addr_data32[0] = dd->
ip2.addr_data32[0] = ip4addr & netmask;
455 dd->
ip2.addr_data32[0] |=~ netmask;
456 }
else if ((ip2 = strchr(ip,
'-')) != NULL) {
461 r = inet_pton(AF_INET, ip, &in);
464 dd->
ip.addr_data32[0] = in.s_addr;
466 r = inet_pton(AF_INET, ip2, &in);
469 dd->
ip2.addr_data32[0] = in.s_addr;
476 r = inet_pton(AF_INET, ip, &in);
480 dd->
ip.addr_data32[0] = in.s_addr;
481 dd->
ip2.addr_data32[0] = in.s_addr;
485 struct in6_addr in6, mask6;
486 uint32_t ip6addr[4], netmask[4];
490 if ((mask = strchr(ip,
'/')) != NULL) {
491 ip[mask - ip] =
'\0';
498 r = inet_pton(AF_INET6, ip, &in6);
501 memcpy(&ip6addr, &in6.s6_addr,
sizeof(ip6addr));
504 memcpy(&netmask, &mask6.s6_addr,
sizeof(netmask));
506 dd->
ip2.addr_data32[0] = dd->
ip.addr_data32[0] = ip6addr[0] & netmask[0];
507 dd->
ip2.addr_data32[1] = dd->
ip.addr_data32[1] = ip6addr[1] & netmask[1];
508 dd->
ip2.addr_data32[2] = dd->
ip.addr_data32[2] = ip6addr[2] & netmask[2];
509 dd->
ip2.addr_data32[3] = dd->
ip.addr_data32[3] = ip6addr[3] & netmask[3];
511 dd->
ip2.addr_data32[0] |=~ netmask[0];
512 dd->
ip2.addr_data32[1] |=~ netmask[1];
513 dd->
ip2.addr_data32[2] |=~ netmask[2];
514 dd->
ip2.addr_data32[3] |=~ netmask[3];
515 }
else if ((ip2 = strchr(ip,
'-')) != NULL) {
521 r = inet_pton(AF_INET6, ip, &in6);
524 memcpy(&dd->
ip.
address, &in6.s6_addr,
sizeof(ip6addr));
526 r = inet_pton(AF_INET6, ip2, &in6);
529 memcpy(&dd->
ip2.
address, &in6.s6_addr,
sizeof(ip6addr));
535 r = inet_pton(AF_INET6, ip, &in6);
571 if (DetectAddressParseString(dd,
str) < 0) {
596 while (*s !=
'\0' && isspace(*s))
599 if (strcasecmp(s,
"any") == 0) {
600 SCLogDebug(
"adding 0.0.0.0/0 and ::/0 as we\'re handling \'any\'");
608 if (DetectAddressInsert(NULL, gh, ad) < 0) {
614 ad = DetectAddressParseSingle(
"::/0");
620 if (DetectAddressInsert(NULL, gh, ad) < 0) {
631 SCLogError(
"failed to parse address \"%s\"", s);
639 if (DetectAddressCutNot(ad, &ad2) < 0) {
648 if (DetectAddressInsert(NULL, gh, ad2) < 0) {
660 int r = DetectAddressInsert(NULL, gh, ad);
697 DetectAddressHead *ghn,
const char *s,
int negate, ResolvedVariablesList *var_list,
698 int recur,
char *
address,
size_t address_length)
702 int o_set = 0, n_set = 0, d_set = 0;
704 const char *rule_var_address = NULL;
705 char *temp_rule_var_address = NULL;
709 "limit reached (max 64)");
713 SCLogDebug(
"s %s negate %s", s, negate ?
"true" :
"false");
715 size_t size = strlen(s);
716 for (u = 0, x = 0; u < size && x < address_length; u++) {
717 if (x == (address_length - 1)) {
719 " limit for the supplied address. Invalidating sig. "
720 "Please file a bug report on this.");
726 if (!o_set && s[u] ==
'!') {
729 }
else if (s[u] ==
'[') {
735 }
else if (s[u] ==
']') {
740 if (((negate + n_set) % 2) == 0) {
744 if (DetectAddressParse2(
de_ctx, gh, ghn,
address, (negate + n_set) % 2, var_list, recur) < 0)
757 if (DetectAddressParse2(
de_ctx, &tmp_gh, &tmp_ghn,
address, 0, var_list, recur) < 0) {
767 for (tmp_ad = tmp_gh.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
771 for (tmp_ad = tmp_ghn.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
775 for (tmp_ad = tmp_gh.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
779 for (tmp_ad = tmp_ghn.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
793 for (tmp_ad = tmp_gh.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
796 if (tmp_ad2 == NULL) {
802 DetectAddressInsert(NULL, ghn, tmp_ad2);
806 for (tmp_ad = tmp_gh.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
809 if (tmp_ad2 == NULL) {
815 DetectAddressInsert(NULL, ghn, tmp_ad2);
823 }
else if (depth == 0 && s[u] ==
',') {
826 }
else if (d_set == 1) {
831 if (rule_var_address == NULL)
834 if (strlen(rule_var_address) == 0) {
836 "to nothing. This is likely a misconfiguration. "
837 "Note that a negated address needs to be quoted, "
838 "\"!$HOME_NET\" instead of !$HOME_NET. See issue #295.",
843 SCLogDebug(
"rule_var_address %s", rule_var_address);
844 if ((negate + n_set) % 2) {
846 const size_t str_size = strlen(rule_var_address) + 3 + 1;
847 temp_rule_var_address =
SCMalloc(str_size);
848 if (
unlikely(temp_rule_var_address == NULL))
850 snprintf(temp_rule_var_address, str_size,
"[%s]", rule_var_address);
852 temp_rule_var_address =
SCStrdup(rule_var_address);
853 if (
unlikely(temp_rule_var_address == NULL))
857 if (DetectAddressParse2(
de_ctx, gh, ghn, temp_rule_var_address,
858 (negate + n_set) % 2, var_list, recur) < 0) {
859 if (temp_rule_var_address != rule_var_address)
860 SCFree(temp_rule_var_address);
865 SCFree(temp_rule_var_address);
869 if (!((negate + n_set) % 2)) {
871 if (DetectAddressSetup(gh,
address) < 0)
875 if (DetectAddressSetup(ghn,
address) < 0)
881 }
else if (depth == 0 && s[u] ==
'$') {
883 }
else if (depth == 0 && u == size - 1) {
884 if (x == address_length) {
893 "groups declaration. This is likely a misconfiguration.");
900 if (rule_var_address == NULL)
903 if (strlen(rule_var_address) == 0) {
905 "to nothing. This is likely a misconfiguration. "
906 "Note that a negated address needs to be quoted, "
907 "\"!$HOME_NET\" instead of !$HOME_NET. See issue #295.",
912 SCLogDebug(
"rule_var_address %s", rule_var_address);
913 if ((negate + n_set) % 2) {
915 const size_t str_size = strlen(rule_var_address) + 3 + 1;
916 temp_rule_var_address =
SCMalloc(str_size);
917 if (
unlikely(temp_rule_var_address == NULL))
919 snprintf(temp_rule_var_address, str_size,
"[%s]", rule_var_address);
921 temp_rule_var_address =
SCStrdup(rule_var_address);
922 if (
unlikely(temp_rule_var_address == NULL))
926 if (DetectAddressParse2(
de_ctx, gh, ghn, temp_rule_var_address,
927 (negate + n_set) % 2, var_list, recur) < 0) {
929 if (temp_rule_var_address != rule_var_address)
930 SCFree(temp_rule_var_address);
934 SCFree(temp_rule_var_address);
936 if (!((negate + n_set) % 2)) {
938 if (DetectAddressSetup(gh,
address) < 0) {
944 if (DetectAddressSetup(ghn,
address) < 0) {
955 "properly closed in \"%s\", %d missing closing brackets (]). "
956 "Note: problem might be in a variable.",
959 }
else if (depth < 0) {
961 "properly opened in \"%s\", %d missing opening brackets ([). "
962 "Note: problem might be in a variable.",
981 DetectAddressHead *ghn,
const char *s,
int negate, ResolvedVariablesList *var_list,
985 #define MAX_ADDRESS_LENGTH 8192
987 size_t address_length = strlen(s);
992 " memory for address parsing.");
995 rc = DetectAddressParseInternal(
996 de_ctx, gh, ghn, s, negate, var_list, recur,
address, address_length);
1000 rc = DetectAddressParseInternal(
1047 if (DetectAddressIsCompleteIPSpace(ghn) == 1) {
1049 "Rule address range is NIL. Probably have a !any or "
1050 "an address range that supplies a NULL address range");
1057 r = DetectAddressSetup(gh,
"0.0.0.0/0");
1059 SCLogDebug(
"DetectAddressSetup for 0.0.0.0/0 failed");
1065 r = DetectAddressSetup(gh,
"::/0");
1067 SCLogDebug(
"DetectAddressSetup for ::/0 failed");
1082 r = DetectAddressInsert(NULL, gh, ad);
1098 r = DetectAddressInsert(NULL, gh, ad);
1106 for (tmp_ad = gh->
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
1110 int ipv4_applied = 0;
1111 int ipv6_applied = 0;
1119 for (ag2 = gh->
ipv4_head; ag2 != NULL; ) {
1126 if (ag2->
prev != NULL)
1128 if (ag2->
next != NULL)
1149 for (ag2 = gh->
ipv6_head; ag2 != NULL; ) {
1152 if (ag2->
prev != NULL)
1154 if (ag2->
next != NULL)
1174 for (tmp_ad = gh->
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
1177 for (tmp_ad = ghn->
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
1186 if (ipv4_applied !=
cnt) {
1188 "could be applied: %d != %d",
1197 if (ipv6_applied !=
cnt) {
1199 "could be applied: %d != %d",
1208 "merging addresses and negated addresses");
1220 SCLogDebug(
"Testing address conf vars for any misconfigured values");
1222 ResolvedVariablesList var_list;
1226 if (address_vars_node == NULL) {
1237 gh = DetectAddressHeadInit();
1241 ghn = DetectAddressHeadInit();
1246 if (seq_node->
val == NULL) {
1247 SCLogError(
"Address var \"%s\" probably has a sequence(something "
1248 "in brackets) value set without any quotes. Please "
1249 "quote it using \"..\".",
1254 int r = DetectAddressParse2(
1255 NULL, gh, ghn, seq_node->
val, 0, &var_list, 0);
1260 SCLogError(
"failed to parse address var \"%s\" with value \"%s\". "
1261 "Please check its syntax",
1262 seq_node->
name, seq_node->
val);
1266 if (DetectAddressIsCompleteIPSpace(ghn)) {
1267 SCLogError(
"address var - \"%s\" has the complete IP space negated "
1268 "with its value \"%s\". Rule address range is NIL. "
1269 "Probably have a !any or an address range that supplies "
1270 "a NULL address range",
1271 seq_node->
name, seq_node->
val);
1275 DetectAddressHeadFree(gh);
1276 DetectAddressHeadFree(ghn);
1283 DetectAddressHeadFree(gh);
1285 DetectAddressHeadFree(ghn);
1298 static uint32_t DetectAddressMapHashFunc(
HashListTable *ht,
void *data, uint16_t datalen)
1309 static char DetectAddressMapCompareFunc(
void *data1, uint16_t len1,
void *data2,
1319 static void DetectAddressMapFreeFunc(
void *data)
1323 DetectAddressHeadFree(map->
address);
1332 DetectAddressMapCompareFunc,
1333 DetectAddressMapFreeFunc);
1357 if (map->
string == NULL) {
1404 SCLogDebug(
"DetectAddressParse can not be run with NULL address");
1410 SCLogDebug(
"DetectAddressHeadInit for ghn failed");
1414 int r = DetectAddressParse2(
de_ctx, gh, ghn,
str, 0, NULL, 0);
1416 SCLogDebug(
"DetectAddressParse2 returned %d", r);
1417 DetectAddressHeadFree(ghn);
1425 if (contains_range != NULL) {
1432 DetectAddressHeadFree(ghn);
1437 DetectAddressHeadFree(ghn);
1438 return contains_negation ? 1 : 0;
1445 if (contains_range == NULL) {
1446 SCLogError(
"contain_range should not be NULL");
1466 DetectAddressHeadFree(
head);
1468 }
else if (r == 1) {
1469 *contains_negation =
true;
1471 *contains_negation =
false;
1474 if (!DetectAddressMapAdd(
1476 DetectAddressHeadFree(
head);
1605 uint16_t addrs_cnt,
const Address *a)
1609 if (addrs == NULL || addrs_cnt == 0) {
1613 uint32_t match_addr =
SCNtohl(a->addr_data32[0]);
1614 for (uint16_t idx = 0; idx < addrs_cnt; idx++) {
1615 if (match_addr >= addrs[idx].ip && match_addr <= addrs[idx].ip2) {
1638 uint16_t addrs_cnt,
const Address *a)
1642 if (addrs == NULL || addrs_cnt == 0) {
1646 uint32_t match_addr[4];
1647 match_addr[0] =
SCNtohl(a->addr_data32[0]);
1648 match_addr[1] =
SCNtohl(a->addr_data32[1]);
1649 match_addr[2] =
SCNtohl(a->addr_data32[2]);
1650 match_addr[3] =
SCNtohl(a->addr_data32[3]);
1655 for (uint16_t idx = 0; idx < addrs_cnt; idx++) {
1656 uint16_t result1 = 0, result2 = 0;
1659 if (0 == memcmp(match_addr, addrs[idx].ip,
sizeof(match_addr))) {
1662 if (0 == memcmp(match_addr, addrs[idx].ip2,
sizeof(match_addr))) {
1669 for (
int i = 0; i < 4; i++) {
1670 if (match_addr[i] > addrs[idx].ip[i]) {
1674 if (match_addr[i] < addrs[idx].ip[i]) {
1687 for (
int i = 0; i < 4; i++) {
1688 if (match_addr[i] < addrs[idx].ip2[i]) {
1692 if (match_addr[i] > addrs[idx].ip2[i]) {
1701 if (result1 == 1 && result2 == 1)
1757 SCLogDebug(
"What other address type can we have :-/");
1780 char ip[16], mask[16];
1782 memcpy(&in, &gr->
ip.addr_data32[0],
sizeof(in));
1783 PrintInet(AF_INET, &in, ip,
sizeof(ip));
1784 memcpy(&in, &gr->
ip2.addr_data32[0],
sizeof(in));
1785 PrintInet(AF_INET, &in, mask,
sizeof(mask));
1789 }
else if (gr->
ip.
family == AF_INET6) {
1790 struct in6_addr in6;
1791 char ip[66], mask[66];
1793 memcpy(&in6, &gr->
ip.addr_data32,
sizeof(in6));
1794 PrintInet(AF_INET6, &in6, ip,
sizeof(ip));
1795 memcpy(&in6, &gr->
ip2.addr_data32,
sizeof(in6));
1796 PrintInet(AF_INET6, &in6, mask,
sizeof(mask));
1824 if (a->
family == AF_INET) {
1827 }
else if (a->
family == AF_INET6) {
1832 for ( ; g != NULL; g = g->
next) {
1833 if (DetectAddressMatch(g,a) == 1) {
1845 static bool UTHValidateDetectAddress(
DetectAddress *ad,
const char *one,
const char *two)
1847 char str1[46] =
"", str2[46] =
"";
1854 PrintInet(AF_INET, (
const void *)&ad->
ip.addr_data32[0], str1,
sizeof(str1));
1856 PrintInet(AF_INET, (
const void *)&ad->
ip2.addr_data32[0], str2,
sizeof(str2));
1859 if (strcmp(str1, one) != 0) {
1864 if (strcmp(str2, two) != 0) {
1873 PrintInet(AF_INET6, (
const void *)&ad->
ip.addr_data32[0], str1,
sizeof(str1));
1875 PrintInet(AF_INET6, (
const void *)&ad->
ip2.addr_data32[0], str2,
sizeof(str2));
1878 if (strcmp(str1, one) != 0) {
1883 if (strcmp(str2, two) != 0) {
1902 int expect = nranges;
1912 while (have < expect) {
1914 printf(
"bad head: have %d ranges, expected %d: ", have, expect);
1918 if (!UTHValidateDetectAddress(ad, expectations[have].one, expectations[have].two))
1928 static int AddressTestParse01(
void)
1940 static int AddressTestParse02(
void)
1946 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909060) ||
1947 dd->
ip.addr_data32[0] !=
SCNtohl(16909060)) {
1951 printf(
"ip %"PRIu32
", ip2 %"PRIu32
"\n", dd->
ip.addr_data32[0], dd->
ip2.addr_data32[0]);
1959 static int AddressTestParse03(
void)
1961 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4/255.255.255.0");
1971 static int AddressTestParse04(
void)
1973 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4/255.255.255.0");
1976 char left[16], right[16];
1977 PrintInet(AF_INET, (
const void *)&dd->
ip.addr_data32[0], left,
sizeof(left));
1978 PrintInet(AF_INET, (
const void *)&dd->
ip2.addr_data32[0], right,
sizeof(right));
1990 static int AddressTestParse04bug5081(
void)
1992 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.64/26");
1995 char left[16], right[16];
1996 PrintInet(AF_INET, (
const void *)&dd->
ip.addr_data32[0], left,
sizeof(left));
1997 PrintInet(AF_INET, (
const void *)&dd->
ip2.addr_data32[0], right,
sizeof(right));
2006 static int AddressTestParse05(
void)
2018 static int AddressTestParse06(
void)
2024 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909311) ||
2025 dd->
ip.addr_data32[0] !=
SCNtohl(16909056)) {
2036 static int AddressTestParse07(
void)
2048 static int AddressTestParse08(
void)
2054 if (dd->
ip.addr_data32[0] !=
SCNtohl(536870912) || dd->
ip.addr_data32[1] != 0x00000000 ||
2055 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2057 dd->
ip2.addr_data32[0] !=
SCNtohl(1073741823) || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2058 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2070 static int AddressTestParse09(
void)
2072 DetectAddress *dd = DetectAddressParseSingle(
"2001::1/128");
2082 static int AddressTestParse10(
void)
2088 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2089 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2091 dd->
ip2.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip2.addr_data32[1] != 0x00000000 ||
2092 dd->
ip2.addr_data32[2] != 0x00000000 || dd->
ip2.addr_data32[3] != 0x00000000) {
2104 static int AddressTestParse11(
void)
2116 static int AddressTestParse12(
void)
2122 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2123 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2126 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2137 static int AddressTestParse13(
void)
2149 static int AddressTestParse14(
void)
2155 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2156 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2158 dd->
ip2.addr_data32[0] !=
SCNtohl(537001983) || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2159 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2170 static int AddressTestParse15(
void)
2182 static int AddressTestParse16(
void)
2188 if (dd->
ip.addr_data32[0] != 0x00000000 || dd->
ip.addr_data32[1] != 0x00000000 ||
2189 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2191 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2192 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2203 static int AddressTestParse17(
void)
2205 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4-1.2.3.6");
2215 static int AddressTestParse18(
void)
2218 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4-1.2.3.6");
2221 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909062) ||
2222 dd->
ip.addr_data32[0] !=
SCNtohl(16909060)) {
2233 static int AddressTestParse19(
void)
2235 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.6-1.2.3.4");
2245 static int AddressTestParse20(
void)
2247 DetectAddress *dd = DetectAddressParseSingle(
"2001::1-2001::4");
2257 static int AddressTestParse21(
void)
2260 DetectAddress *dd = DetectAddressParseSingle(
"2001::1-2001::4");
2263 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2264 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] !=
SCNtohl(1) ||
2266 dd->
ip2.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip2.addr_data32[1] != 0x00000000 ||
2267 dd->
ip2.addr_data32[2] != 0x00000000 || dd->
ip2.addr_data32[3] !=
SCNtohl(4)) {
2278 static int AddressTestParse22(
void)
2280 DetectAddress *dd = DetectAddressParseSingle(
"2001::4-2001::1");
2290 static int AddressTestParse23(
void)
2296 DetectAddressHeadFree(gh);
2300 static int AddressTestParse24(
void)
2306 DetectAddressHeadFree(gh);
2310 static int AddressTestParse25(
void)
2316 DetectAddressHeadFree(gh);
2321 static int AddressTestParse26(
void)
2327 "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["
2329 "]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]",
2332 DetectAddressHeadFree(gh);
2333 gh = DetectAddressHeadInit();
2337 "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["
2339 "]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]",
2342 DetectAddressHeadFree(gh);
2346 static int AddressTestParse27(
void)
2348 DetectAddress *dd = DetectAddressParseSingle(
"!192.168.0.1");
2358 static int AddressTestParse28(
void)
2365 dd->
ip.addr_data32[0] ==
SCNtohl(16909060)) {
2376 static int AddressTestParse29(
void)
2378 DetectAddress *dd = DetectAddressParseSingle(
"!1.2.3.0/24");
2388 static int AddressTestParse30(
void)
2391 DetectAddress *dd = DetectAddressParseSingle(
"!1.2.3.4/24");
2395 dd->
ip.addr_data32[0] ==
SCNtohl(16909056) &&
2396 dd->
ip2.addr_data32[0] ==
SCNtohl(16909311)) {
2410 static int AddressTestParse31(
void)
2422 static int AddressTestParse32(
void)
2434 static int AddressTestParse33(
void)
2441 dd->
ip.addr_data32[0] ==
SCNtohl(536936448) && dd->
ip.addr_data32[1] == 0x00000000 &&
2442 dd->
ip.addr_data32[2] == 0x00000000 && dd->
ip.addr_data32[3] ==
SCNtohl(1)) {
2453 static int AddressTestParse34(
void)
2465 static int AddressTestParse35(
void)
2472 dd->
ip.addr_data32[0] ==
SCNtohl(536936448) && dd->
ip.addr_data32[1] == 0x00000000 &&
2473 dd->
ip.addr_data32[2] == 0x00000000 && dd->
ip.addr_data32[3] == 0x00000000 &&
2475 dd->
ip2.addr_data32[0] ==
SCNtohl(537001983) && dd->
ip2.addr_data32[1] == 0xFFFFFFFF &&
2476 dd->
ip2.addr_data32[2] == 0xFFFFFFFF && dd->
ip2.addr_data32[3] == 0xFFFFFFFF) {
2487 static int AddressTestParse36(
void)
2493 if (dd->
ip.addr_data32[0] !=
SCNtohl(0xFFFF0000) || dd->
ip.addr_data32[1] != 0x00000000 ||
2494 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2496 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2497 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2511 static int AddressTestParse37(
void)
2517 if (dd->
ip.addr_data32[0] != 0x00000000 || dd->
ip.addr_data32[1] != 0x00000000 ||
2518 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2520 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2521 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2534 static int AddressTestMatch01(
void)
2541 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2543 memset(&a, 0,
sizeof(
Address));
2545 a.addr_data32[0] = in.s_addr;
2547 dd = DetectAddressParseSingle(
"1.2.3.4/24");
2549 if (DetectAddressMatch(dd, &a) == 0)
2559 static int AddressTestMatch02(
void)
2566 if (inet_pton(AF_INET,
"1.2.3.127", &in) != 1)
2568 memset(&a, 0,
sizeof(
Address));
2570 a.addr_data32[0] = in.s_addr;
2572 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2574 if (DetectAddressMatch(dd, &a) == 0)
2584 static int AddressTestMatch03(
void)
2591 if (inet_pton(AF_INET,
"1.2.3.128", &in) != 1)
2593 memset(&a, 0,
sizeof(
Address));
2595 a.addr_data32[0] = in.s_addr;
2597 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2599 if (DetectAddressMatch(dd, &a) == 1)
2609 static int AddressTestMatch04(
void)
2616 if (inet_pton(AF_INET,
"1.2.2.255", &in) != 1)
2618 memset(&a, 0,
sizeof(
Address));
2620 a.addr_data32[0] = in.s_addr;
2622 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2624 if (DetectAddressMatch(dd, &a) == 1)
2634 static int AddressTestMatch05(
void)
2641 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2643 memset(&a, 0,
sizeof(
Address));
2645 a.addr_data32[0] = in.s_addr;
2647 dd = DetectAddressParseSingle(
"1.2.3.4/32");
2649 if (DetectAddressMatch(dd, &a) == 0)
2659 static int AddressTestMatch06(
void)
2666 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2668 memset(&a, 0,
sizeof(
Address));
2670 a.addr_data32[0] = in.s_addr;
2672 dd = DetectAddressParseSingle(
"0.0.0.0/0.0.0.0");
2674 if (DetectAddressMatch(dd, &a) == 0)
2684 static int AddressTestMatch07(
void)
2688 struct in6_addr in6;
2691 if (inet_pton(AF_INET6,
"2001::1", &in6) != 1)
2693 memset(&a, 0,
sizeof(
Address));
2694 a.family = AF_INET6;
2695 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2697 dd = DetectAddressParseSingle(
"2001::/3");
2699 if (DetectAddressMatch(dd, &a) == 0)
2709 static int AddressTestMatch08(
void)
2713 struct in6_addr in6;
2716 if (inet_pton(AF_INET6,
"1999:ffff:ffff:ffff:ffff:ffff:ffff:ffff", &in6) != 1)
2718 memset(&a, 0,
sizeof(
Address));
2719 a.family = AF_INET6;
2720 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2722 dd = DetectAddressParseSingle(
"2001::/3");
2724 if (DetectAddressMatch(dd, &a) == 1)
2734 static int AddressTestMatch09(
void)
2738 struct in6_addr in6;
2741 if (inet_pton(AF_INET6,
"2001::2", &in6) != 1)
2743 memset(&a, 0,
sizeof(
Address));
2744 a.family = AF_INET6;
2745 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2747 dd = DetectAddressParseSingle(
"2001::1/128");
2749 if (DetectAddressMatch(dd, &a) == 1)
2759 static int AddressTestMatch10(
void)
2763 struct in6_addr in6;
2766 if (inet_pton(AF_INET6,
"2001::2", &in6) != 1)
2768 memset(&a, 0,
sizeof(
Address));
2769 a.family = AF_INET6;
2770 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2772 dd = DetectAddressParseSingle(
"2001::1/126");
2774 if (DetectAddressMatch(dd, &a) == 0)
2784 static int AddressTestMatch11(
void)
2788 struct in6_addr in6;
2791 if (inet_pton(AF_INET6,
"2001::3", &in6) != 1)
2793 memset(&a, 0,
sizeof(
Address));
2794 a.family = AF_INET6;
2795 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2797 dd = DetectAddressParseSingle(
"2001::1/127");
2799 if (DetectAddressMatch(dd, &a) == 1)
2809 static int AddressTestCmp01(
void)
2814 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2815 if (da == NULL)
goto error;
2816 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2817 if (db == NULL)
goto error;
2832 static int AddressTestCmp02(
void)
2837 da = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2838 if (da == NULL)
goto error;
2839 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2840 if (db == NULL)
goto error;
2855 static int AddressTestCmp03(
void)
2860 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2861 if (da == NULL)
goto error;
2862 db = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2863 if (db == NULL)
goto error;
2878 static int AddressTestCmp04(
void)
2883 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2884 if (da == NULL)
goto error;
2885 db = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2886 if (db == NULL)
goto error;
2901 static int AddressTestCmp05(
void)
2906 da = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2907 if (da == NULL)
goto error;
2908 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2909 if (db == NULL)
goto error;
2924 static int AddressTestCmp06(
void)
2929 da = DetectAddressParseSingle(
"192.168.1.0/255.255.0.0");
2930 if (da == NULL)
goto error;
2931 db = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2932 if (db == NULL)
goto error;
2947 static int AddressTestCmpIPv407(
void)
2952 da = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2953 if (da == NULL)
goto error;
2954 db = DetectAddressParseSingle(
"192.168.1.128-192.168.2.128");
2955 if (db == NULL)
goto error;
2970 static int AddressTestCmpIPv408(
void)
2975 da = DetectAddressParseSingle(
"192.168.1.128-192.168.2.128");
2976 if (da == NULL)
goto error;
2977 db = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2978 if (db == NULL)
goto error;
2993 static int AddressTestCmp07(
void)
2998 da = DetectAddressParseSingle(
"2001::/3");
2999 if (da == NULL)
goto error;
3000 db = DetectAddressParseSingle(
"2001::1/3");
3001 if (db == NULL)
goto error;
3016 static int AddressTestCmp08(
void)
3021 da = DetectAddressParseSingle(
"2001::/3");
3022 if (da == NULL)
goto error;
3023 db = DetectAddressParseSingle(
"2001::/8");
3024 if (db == NULL)
goto error;
3039 static int AddressTestCmp09(
void)
3044 da = DetectAddressParseSingle(
"2001::/8");
3045 if (da == NULL)
goto error;
3046 db = DetectAddressParseSingle(
"2001::/3");
3047 if (db == NULL)
goto error;
3062 static int AddressTestCmp10(
void)
3067 da = DetectAddressParseSingle(
"2001:1:2:3:0:0:0:0/64");
3068 if (da == NULL)
goto error;
3069 db = DetectAddressParseSingle(
"2001:1:2:4:0:0:0:0/64");
3070 if (db == NULL)
goto error;
3085 static int AddressTestCmp11(
void)
3090 da = DetectAddressParseSingle(
"2001:1:2:4:0:0:0:0/64");
3091 if (da == NULL)
goto error;
3092 db = DetectAddressParseSingle(
"2001:1:2:3:0:0:0:0/64");
3093 if (db == NULL)
goto error;
3108 static int AddressTestCmp12(
void)
3113 da = DetectAddressParseSingle(
"2001:1:2:3:1:0:0:0/64");
3114 if (da == NULL)
goto error;
3115 db = DetectAddressParseSingle(
"2001:1:2:3:2:0:0:0/64");
3116 if (db == NULL)
goto error;
3131 static int AddressTestAddressGroupSetup01(
void)
3141 DetectAddressHeadFree(gh);
3146 static int AddressTestAddressGroupSetup02(
void)
3156 DetectAddressHeadFree(gh);
3161 static int AddressTestAddressGroupSetup03(
void)
3172 if (r == 0 && gh->
ipv4_head != prev_head &&
3178 DetectAddressHeadFree(gh);
3183 static int AddressTestAddressGroupSetup04(
void)
3194 if (r == 0 && gh->
ipv4_head != prev_head &&
3206 DetectAddressHeadFree(gh);
3211 static int AddressTestAddressGroupSetup05(
void)
3222 if (r == 0 && gh->
ipv4_head == prev_head &&
3234 DetectAddressHeadFree(gh);
3239 static int AddressTestAddressGroupSetup06(
void)
3250 if (r == 0 && gh->
ipv4_head == prev_head &&
3256 DetectAddressHeadFree(gh);
3261 static int AddressTestAddressGroupSetup07(
void)
3277 DetectAddressHeadFree(gh);
3282 static int AddressTestAddressGroupSetup08(
void)
3298 DetectAddressHeadFree(gh);
3303 static int AddressTestAddressGroupSetup09(
void)
3319 DetectAddressHeadFree(gh);
3324 static int AddressTestAddressGroupSetup10(
void)
3340 DetectAddressHeadFree(gh);
3345 static int AddressTestAddressGroupSetup11(
void)
3358 *three = two->
next, *four = three->
next,
3368 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3369 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3370 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3371 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3372 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3379 DetectAddressHeadFree(gh);
3384 static int AddressTestAddressGroupSetup12 (
void)
3397 *three = two->
next, *four = three->
next,
3407 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3408 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3409 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3410 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3411 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3418 DetectAddressHeadFree(gh);
3423 static int AddressTestAddressGroupSetup13(
void)
3436 *three = two->
next, *four = three->
next,
3446 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3447 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3448 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3449 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3450 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3457 DetectAddressHeadFree(gh);
3462 static int AddressTestAddressGroupSetupIPv414(
void)
3483 DetectAddressHeadFree(gh);
3488 static int AddressTestAddressGroupSetupIPv415(
void)
3506 DetectAddressHeadFree(gh);
3510 static int AddressTestAddressGroupSetupIPv416(
void)
3528 DetectAddressHeadFree(gh);
3532 static int AddressTestAddressGroupSetup14(
void)
3542 DetectAddressHeadFree(gh);
3547 static int AddressTestAddressGroupSetup15(
void)
3557 DetectAddressHeadFree(gh);
3562 static int AddressTestAddressGroupSetup16(
void)
3573 if (r == 0 && gh->
ipv6_head != prev_head &&
3579 DetectAddressHeadFree(gh);
3584 static int AddressTestAddressGroupSetup17(
void)
3595 if (r == 0 && gh->
ipv6_head != prev_head &&
3607 DetectAddressHeadFree(gh);
3612 static int AddressTestAddressGroupSetup18(
void)
3623 if (r == 0 && gh->
ipv6_head == prev_head &&
3635 DetectAddressHeadFree(gh);
3640 static int AddressTestAddressGroupSetup19(
void)
3651 if (r == 0 && gh->
ipv6_head == prev_head &&
3657 DetectAddressHeadFree(gh);
3662 static int AddressTestAddressGroupSetup20(
void)
3678 DetectAddressHeadFree(gh);
3683 static int AddressTestAddressGroupSetup21(
void)
3699 DetectAddressHeadFree(gh);
3704 static int AddressTestAddressGroupSetup22(
void)
3720 DetectAddressHeadFree(gh);
3725 static int AddressTestAddressGroupSetup23(
void)
3741 DetectAddressHeadFree(gh);
3746 static int AddressTestAddressGroupSetup24(
void)
3759 *three = two->
next, *four = three->
next,
3761 if (one->
ip.addr_data32[0] == 0x00000000 &&
3762 one->
ip.addr_data32[1] == 0x00000000 &&
3763 one->
ip.addr_data32[2] == 0x00000000 &&
3764 one->
ip.addr_data32[3] == 0x00000000 &&
3765 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3766 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3767 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3768 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3770 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3771 two->
ip.addr_data32[1] == 0x00000000 &&
3772 two->
ip.addr_data32[2] == 0x00000000 &&
3773 two->
ip.addr_data32[3] == 0x00000000 &&
3774 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3775 two->
ip2.addr_data32[1] == 0x00000000 &&
3776 two->
ip2.addr_data32[2] == 0x00000000 &&
3779 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3780 three->ip.addr_data32[1] == 0x00000000 &&
3781 three->ip.addr_data32[2] == 0x00000000 &&
3782 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3783 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3784 three->ip2.addr_data32[1] == 0x00000000 &&
3785 three->ip2.addr_data32[2] == 0x00000000 &&
3786 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3788 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3789 four->ip.addr_data32[1] == 0x00000000 &&
3790 four->ip.addr_data32[2] == 0x00000000 &&
3791 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3792 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3793 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3794 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3795 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3797 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3798 five->ip.addr_data32[1] == 0x00000000 &&
3799 five->ip.addr_data32[2] == 0x00000000 &&
3800 five->ip.addr_data32[3] == 0x00000000 &&
3801 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3802 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3803 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3804 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3811 DetectAddressHeadFree(gh);
3816 static int AddressTestAddressGroupSetup25(
void)
3829 *three = two->
next, *four = three->
next,
3831 if (one->
ip.addr_data32[0] == 0x00000000 &&
3832 one->
ip.addr_data32[1] == 0x00000000 &&
3833 one->
ip.addr_data32[2] == 0x00000000 &&
3834 one->
ip.addr_data32[3] == 0x00000000 &&
3835 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3836 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3837 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3838 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3840 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3841 two->
ip.addr_data32[1] == 0x00000000 &&
3842 two->
ip.addr_data32[2] == 0x00000000 &&
3843 two->
ip.addr_data32[3] == 0x00000000 &&
3844 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3845 two->
ip2.addr_data32[1] == 0x00000000 &&
3846 two->
ip2.addr_data32[2] == 0x00000000 &&
3849 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3850 three->ip.addr_data32[1] == 0x00000000 &&
3851 three->ip.addr_data32[2] == 0x00000000 &&
3852 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3853 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3854 three->ip2.addr_data32[1] == 0x00000000 &&
3855 three->ip2.addr_data32[2] == 0x00000000 &&
3856 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3858 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3859 four->ip.addr_data32[1] == 0x00000000 &&
3860 four->ip.addr_data32[2] == 0x00000000 &&
3861 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3862 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3863 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3864 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3865 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3867 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3868 five->ip.addr_data32[1] == 0x00000000 &&
3869 five->ip.addr_data32[2] == 0x00000000 &&
3870 five->ip.addr_data32[3] == 0x00000000 &&
3871 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3872 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3873 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3874 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3881 DetectAddressHeadFree(gh);
3886 static int AddressTestAddressGroupSetup26(
void)
3899 *three = two->
next, *four = three->
next,
3901 if (one->
ip.addr_data32[0] == 0x00000000 &&
3902 one->
ip.addr_data32[1] == 0x00000000 &&
3903 one->
ip.addr_data32[2] == 0x00000000 &&
3904 one->
ip.addr_data32[3] == 0x00000000 &&
3905 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3906 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3907 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3908 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3910 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3911 two->
ip.addr_data32[1] == 0x00000000 &&
3912 two->
ip.addr_data32[2] == 0x00000000 &&
3913 two->
ip.addr_data32[3] == 0x00000000 &&
3914 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3915 two->
ip2.addr_data32[1] == 0x00000000 &&
3916 two->
ip2.addr_data32[2] == 0x00000000 &&
3919 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3920 three->ip.addr_data32[1] == 0x00000000 &&
3921 three->ip.addr_data32[2] == 0x00000000 &&
3922 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3923 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3924 three->ip2.addr_data32[1] == 0x00000000 &&
3925 three->ip2.addr_data32[2] == 0x00000000 &&
3926 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3928 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3929 four->ip.addr_data32[1] == 0x00000000 &&
3930 four->ip.addr_data32[2] == 0x00000000 &&
3931 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3932 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3933 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3934 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3935 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3937 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3938 five->ip.addr_data32[1] == 0x00000000 &&
3939 five->ip.addr_data32[2] == 0x00000000 &&
3940 five->ip.addr_data32[3] == 0x00000000 &&
3941 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3942 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3943 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3944 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3951 DetectAddressHeadFree(gh);
3956 static int AddressTestAddressGroupSetup27(
void)
3966 DetectAddressHeadFree(gh);
3971 static int AddressTestAddressGroupSetup28(
void)
3981 DetectAddressHeadFree(gh);
3986 static int AddressTestAddressGroupSetup29(
void)
3996 DetectAddressHeadFree(gh);
4001 static int AddressTestAddressGroupSetup30(
void)
4008 NULL, gh,
"[[1.2.3.4,2.3.4.5],4.3.2.1,[10.10.10.10,11.11.11.11]]", NULL);
4012 DetectAddressHeadFree(gh);
4017 static int AddressTestAddressGroupSetup31(
void)
4024 "[[1.2.3.4,[2.3.4.5,3.4.5.6]],4.3.2.1,[10.10.10.10,[11.11.11.11,12.12.12.12]]]",
4029 DetectAddressHeadFree(gh);
4034 static int AddressTestAddressGroupSetup32(
void)
4041 "[[1.2.3.4,[2.3.4.5,[3.4.5.6,4.5.6.7]]],4.3.2.1,[10.10.10.10,[11.11.11.11,[12.12."
4042 "12.12,13.13.13.13]]]]",
4047 DetectAddressHeadFree(gh);
4052 static int AddressTestAddressGroupSetup33(
void)
4058 int r =
DetectAddressParse(NULL, gh,
"![1.1.1.1,[2.2.2.2,[3.3.3.3,4.4.4.4]]]", NULL);
4062 DetectAddressHeadFree(gh);
4067 static int AddressTestAddressGroupSetup34(
void)
4073 int r =
DetectAddressParse(NULL, gh,
"[1.0.0.0/8,![1.1.1.1,[1.2.1.1,1.3.1.1]]]", NULL);
4077 DetectAddressHeadFree(gh);
4082 static int AddressTestAddressGroupSetup35(
void)
4088 int r =
DetectAddressParse(NULL, gh,
"[1.0.0.0/8,[2.0.0.0/8,![1.1.1.1,2.2.2.2]]]", NULL);
4092 DetectAddressHeadFree(gh);
4097 static int AddressTestAddressGroupSetup36 (
void)
4103 int r =
DetectAddressParse(NULL, gh,
"[1.0.0.0/8,[2.0.0.0/8,[3.0.0.0/8,!1.1.1.1]]]", NULL);
4107 DetectAddressHeadFree(gh);
4112 static int AddressTestAddressGroupSetup37(
void)
4122 DetectAddressHeadFree(gh);
4127 static int AddressTestAddressGroupSetup38(
void)
4130 {
"0.0.0.0",
"192.167.255.255" },
4131 {
"192.168.14.0",
"192.168.14.255" },
4132 {
"192.169.0.0",
"255.255.255.255" } };
4139 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4143 DetectAddressHeadFree(gh);
4148 static int AddressTestAddressGroupSetup39(
void)
4151 {
"0.0.0.0",
"192.167.255.255" },
4152 {
"192.168.14.0",
"192.168.14.255" },
4153 {
"192.169.0.0",
"255.255.255.255" } };
4160 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4164 DetectAddressHeadFree(gh);
4169 static int AddressTestAddressGroupSetup40(
void)
4172 {
"0.0.0.0",
"192.167.255.255" },
4173 {
"192.168.14.0",
"192.168.14.255" },
4174 {
"192.169.0.0",
"255.255.255.255" } };
4178 int r =
DetectAddressParse(NULL, gh,
"[![192.168.0.0/16,[!192.168.14.0/24]]]", NULL);
4180 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4184 DetectAddressHeadFree(gh);
4189 static int AddressTestAddressGroupSetup41(
void)
4192 {
"0.0.0.0",
"192.167.255.255" },
4193 {
"192.168.14.0",
"192.168.14.255" },
4194 {
"192.169.0.0",
"255.255.255.255" } };
4198 int r =
DetectAddressParse(NULL, gh,
"[![192.168.0.0/16,![192.168.14.0/24]]]", NULL);
4200 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4204 DetectAddressHeadFree(gh);
4209 static int AddressTestAddressGroupSetup42(
void)
4212 {
"2000:0000:0000:0000:0000:0000:0000:0000",
"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } };
4218 if (UTHValidateDetectAddressHead(gh, 1, expectations))
4222 DetectAddressHeadFree(gh);
4227 static int AddressTestAddressGroupSetup43(
void)
4230 {
"2000:0000:0000:0000:0000:0000:0000:0000",
"2fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" },
4231 {
"3800:0000:0000:0000:0000:0000:0000:0000",
"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } };
4237 if (UTHValidateDetectAddressHead(gh, 2, expectations))
4241 DetectAddressHeadFree(gh);
4246 static int AddressTestAddressGroupSetup44(
void)
4249 {
"3ffe:ffff:7654:feda:1245:ba98:0000:0000",
"3ffe:ffff:7654:feda:1245:ba98:ffff:ffff" }};
4253 int r =
DetectAddressParse(NULL, gh,
"3ffe:ffff:7654:feda:1245:ba98:3210:4562/96", NULL);
4255 if (UTHValidateDetectAddressHead(gh, 1, expectations))
4259 DetectAddressHeadFree(gh);
4264 static int AddressTestAddressGroupSetup45(
void)
4274 DetectAddressHeadFree(gh);
4279 static int AddressTestAddressGroupSetup46(
void)
4282 {
"0.0.0.0",
"192.167.255.255" },
4283 {
"192.168.1.0",
"192.168.1.255" },
4284 {
"192.168.3.0",
"192.168.3.255" },
4285 {
"192.169.0.0",
"255.255.255.255" } };
4290 NULL, gh,
"[![192.168.0.0/16,![192.168.1.0/24,192.168.3.0/24]]]", NULL);
4292 if (UTHValidateDetectAddressHead(gh, 4, expectations))
4296 DetectAddressHeadFree(gh);
4302 static int AddressTestAddressGroupSetup47(
void)
4305 {
"0.0.0.0",
"192.167.255.255" },
4306 {
"192.168.1.0",
"192.168.1.255" },
4307 {
"192.168.3.0",
"192.168.3.255" },
4308 {
"192.168.5.0",
"192.168.5.255" },
4309 {
"192.169.0.0",
"255.255.255.255" } };
4314 "[![192.168.0.0/16,![192.168.1.0/24,192.168.3.0/24],!192.168.5.0/24]]", NULL);
4316 if (UTHValidateDetectAddressHead(gh, 5, expectations))
4320 DetectAddressHeadFree(gh);
4326 static int AddressTestAddressGroupSetup48(
void)
4329 {
"192.168.0.0",
"192.168.0.255" },
4330 {
"192.168.2.0",
"192.168.2.255" },
4331 {
"192.168.4.0",
"192.168.4.255" },
4332 {
"192.168.6.0",
"192.168.255.255" } };
4337 "[192.168.0.0/16,![192.168.1.0/24,192.168.3.0/24],!192.168.5.0/24]", NULL);
4339 if (UTHValidateDetectAddressHead(gh, 4, expectations))
4343 DetectAddressHeadFree(gh);
4348 static int AddressTestCutIPv401(
void)
4351 DetectAddress *a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4353 DetectAddress *b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4356 FAIL_IF(DetectAddressCut(NULL, a, b, &c) == -1);
4364 static int AddressTestCutIPv402(
void)
4367 a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4368 b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4370 if (DetectAddressCut(NULL, a, b, &c) == -1)
4388 static int AddressTestCutIPv403(
void)
4391 a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4392 b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4394 if (DetectAddressCut(NULL, a, b, &c) == -1)
4400 if (a->
ip.addr_data32[0] !=
SCNtohl(16908800) || a->
ip2.addr_data32[0] !=
SCNtohl(16909055))
4402 if (b->
ip.addr_data32[0] !=
SCNtohl(16909056) || b->
ip2.addr_data32[0] !=
SCNtohl(16909060))
4404 if (c->
ip.addr_data32[0] !=
SCNtohl(16909061) || c->
ip2.addr_data32[0] !=
SCNtohl(16909311))
4419 static int AddressTestCutIPv404(
void)
4422 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4423 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.5");
4425 if (DetectAddressCut(NULL, a, b, &c) == -1)
4431 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4433 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909061))
4435 if (c->
ip.addr_data32[0] !=
SCNtohl(16909062) || c->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4451 static int AddressTestCutIPv405(
void)
4454 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4455 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4457 if (DetectAddressCut(NULL, a, b, &c) == -1)
4463 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4465 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4467 if (c->
ip.addr_data32[0] !=
SCNtohl(16909063) || c->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4482 static int AddressTestCutIPv406(
void)
4485 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4486 b = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4488 if (DetectAddressCut(NULL, a, b, &c) == -1)
4494 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4496 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4498 if (c->
ip.addr_data32[0] !=
SCNtohl(16909063) || c->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4513 static int AddressTestCutIPv407(
void)
4516 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.6");
4517 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4519 if (DetectAddressCut(NULL, a, b, &c) == -1)
4525 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4527 if (b->
ip.addr_data32[0] !=
SCNtohl(16909063) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4542 static int AddressTestCutIPv408(
void)
4545 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.9");
4546 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4548 if (DetectAddressCut(NULL, a, b, &c) == -1)
4554 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4556 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4571 static int AddressTestCutIPv409(
void)
4574 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4575 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.6");
4577 if (DetectAddressCut(NULL, a, b, &c) == -1)
4583 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4585 if (b->
ip.addr_data32[0] !=
SCNtohl(16909063) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4600 static int AddressTestCutIPv410(
void)
4603 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4604 b = DetectAddressParseSingle(
"1.2.3.3-1.2.3.9");
4606 if (DetectAddressCut(NULL, a, b, &c) == -1)
4612 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4614 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4617 printf(
"ip %u ip2 %u ", (uint32_t)htonl(a->
ip.addr_data32[0]), (uint32_t)htonl(a->
ip2.addr_data32[0]));
4631 static int AddressTestParseInvalidMask01(
void)
4636 dd = DetectAddressParseSingle(
"192.168.2.0/33");
4644 static int AddressTestParseInvalidMask02(
void)
4649 dd = DetectAddressParseSingle(
"192.168.2.0/255.255.257.0");
4657 static int AddressTestParseInvalidMask03(
void)
4662 dd = DetectAddressParseSingle(
"192.168.2.0/blue");
4670 static int AddressConfVarsTest01(
void)
4672 static const char *dummy_conf_string =
4678 " address-groups:\n"
4680 " HOME_NET: \"any\"\n"
4682 " EXTERNAL_NET: \"!any\"\n"
4686 " HTTP_PORTS: \"any\"\n"
4688 " SHELLCODE_PORTS: \"!any\"\n"
4706 static int AddressConfVarsTest02(
void)
4708 static const char *dummy_conf_string =
4714 " address-groups:\n"
4716 " HOME_NET: \"any\"\n"
4718 " EXTERNAL_NET: \"any\"\n"
4722 " HTTP_PORTS: \"any\"\n"
4724 " SHELLCODE_PORTS: \"!any\"\n"
4742 static int AddressConfVarsTest03(
void)
4744 static const char *dummy_conf_string =
4750 " address-groups:\n"
4752 " HOME_NET: \"any\"\n"
4754 " EXTERNAL_NET: \"!$HOME_NET\"\n"
4758 " HTTP_PORTS: \"any\"\n"
4760 " SHELLCODE_PORTS: \"!$HTTP_PORTS\"\n"
4778 static int AddressConfVarsTest04(
void)
4780 static const char *dummy_conf_string =
4786 " address-groups:\n"
4788 " HOME_NET: \"any\"\n"
4790 " EXTERNAL_NET: \"$HOME_NET\"\n"
4794 " HTTP_PORTS: \"any\"\n"
4796 " SHELLCODE_PORTS: \"$HTTP_PORTS\"\n"
4814 static int AddressConfVarsTest05(
void)
4816 static const char *dummy_conf_string =
4822 " address-groups:\n"
4824 " HOME_NET: \"any\"\n"
4826 " EXTERNAL_NET: [192.168.0.1]\n"
4830 " HTTP_PORTS: \"any\"\n"
4832 " SHELLCODE_PORTS: [80]\n"
4853 static int AddressConfVarsTest06(
void)
4856 static const char *dummy_conf_string =
4862 " address-groups:\n"
4865 "\"[2002:0000:3238:DFE1:63:0000:0000:FEFB,2002:0000:3238:DFE1:63:0000:0000:FEFB,"
4866 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4867 "2004:0000:3238:DFE1:63:0000:0000:FEFB,2005:0000:3238:DFE1:63:0000:0000:FEFB,"
4868 "2006:0000:3238:DFE1:63:0000:0000:FEFB,2007:0000:3238:DFE1:63:0000:0000:FEFB,"
4869 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4870 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4871 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4872 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4873 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4874 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4875 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4876 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4877 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4878 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4879 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4880 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4881 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4882 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4883 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4884 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4885 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4886 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4887 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4888 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4889 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4890 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4891 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4892 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4893 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4894 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4895 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4896 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4897 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4898 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4899 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4900 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4901 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4902 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4903 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4904 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4905 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4906 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4907 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4908 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4909 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4910 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4911 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4912 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4913 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4914 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4915 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4916 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4917 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4918 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4919 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4920 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4921 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4922 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4923 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4924 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4925 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4926 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4927 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4928 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4929 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4930 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4931 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4932 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4933 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4934 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4935 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4936 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4937 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4938 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4939 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4940 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4941 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4942 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4943 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4944 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4945 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4946 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4947 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4948 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4949 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4950 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4951 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4952 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4953 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4954 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4955 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4956 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4957 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4958 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4959 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4960 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4961 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4962 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4963 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4964 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4965 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4966 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4967 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4968 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4969 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4970 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4971 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4972 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4973 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4974 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4975 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4976 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4977 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4978 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4979 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4980 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4981 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4982 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4983 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4984 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4985 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4986 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4987 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4988 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4989 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4990 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4991 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4992 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4993 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4994 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4995 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4996 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4997 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4998 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4999 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB]\"\n"
5001 " EXTERNAL_NET: \"any\"\n"
5028 UtRegisterTest(
"AddressTestParse04bug5081", AddressTestParse04bug5081);
5092 AddressTestAddressGroupSetup01);
5094 AddressTestAddressGroupSetup02);
5096 AddressTestAddressGroupSetup03);
5098 AddressTestAddressGroupSetup04);
5100 AddressTestAddressGroupSetup05);
5102 AddressTestAddressGroupSetup06);
5104 AddressTestAddressGroupSetup07);
5106 AddressTestAddressGroupSetup08);
5108 AddressTestAddressGroupSetup09);
5110 AddressTestAddressGroupSetup10);
5112 AddressTestAddressGroupSetup11);
5114 AddressTestAddressGroupSetup12);
5116 AddressTestAddressGroupSetup13);
5118 AddressTestAddressGroupSetupIPv414);
5120 AddressTestAddressGroupSetupIPv415);
5122 AddressTestAddressGroupSetupIPv416);
5125 AddressTestAddressGroupSetup14);
5127 AddressTestAddressGroupSetup15);
5129 AddressTestAddressGroupSetup16);
5131 AddressTestAddressGroupSetup17);
5133 AddressTestAddressGroupSetup18);
5135 AddressTestAddressGroupSetup19);
5137 AddressTestAddressGroupSetup20);
5139 AddressTestAddressGroupSetup21);
5141 AddressTestAddressGroupSetup22);
5143 AddressTestAddressGroupSetup23);
5145 AddressTestAddressGroupSetup24);
5147 AddressTestAddressGroupSetup25);
5149 AddressTestAddressGroupSetup26);
5152 AddressTestAddressGroupSetup27);
5154 AddressTestAddressGroupSetup28);
5156 AddressTestAddressGroupSetup29);
5158 AddressTestAddressGroupSetup30);
5160 AddressTestAddressGroupSetup31);
5162 AddressTestAddressGroupSetup32);
5164 AddressTestAddressGroupSetup33);
5166 AddressTestAddressGroupSetup34);
5168 AddressTestAddressGroupSetup35);
5170 AddressTestAddressGroupSetup36);
5172 AddressTestAddressGroupSetup37);
5174 AddressTestAddressGroupSetup38);
5176 AddressTestAddressGroupSetup39);
5178 AddressTestAddressGroupSetup40);
5180 AddressTestAddressGroupSetup41);
5182 AddressTestAddressGroupSetup42);
5184 AddressTestAddressGroupSetup43);
5186 AddressTestAddressGroupSetup44);
5188 AddressTestAddressGroupSetup45);
5190 AddressTestAddressGroupSetup46);
5192 AddressTestAddressGroupSetup47);
5194 AddressTestAddressGroupSetup48);
5208 AddressTestParseInvalidMask01);
5210 AddressTestParseInvalidMask02);
5212 AddressTestParseInvalidMask03);