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 if (!(item == NULL && it == NULL)) {
408 if ((strchr(
str,
':')) == NULL) {
414 if ((mask = strchr(ip,
'/')) != NULL) {
416 ip[mask - ip] =
'\0';
418 uint32_t ip4addr = 0;
419 uint32_t netmask = 0;
421 if ((strchr (mask,
'.')) == NULL) {
424 for (
size_t u = 0; u < strlen(mask); u++) {
425 if(!isdigit((
unsigned char)mask[u]))
435 r = inet_pton(AF_INET, mask, &in);
445 "netmask \"%s\" is not usable. Only netmasks that are compatible with "
446 "CIDR notation are supported. See ticket #5168.",
452 r = inet_pton(AF_INET, ip, &in);
458 dd->
ip.addr_data32[0] = dd->
ip2.addr_data32[0] = ip4addr & netmask;
459 dd->
ip2.addr_data32[0] |=~ netmask;
460 }
else if ((ip2 = strchr(ip,
'-')) != NULL) {
465 r = inet_pton(AF_INET, ip, &in);
468 dd->
ip.addr_data32[0] = in.s_addr;
470 r = inet_pton(AF_INET, ip2, &in);
473 dd->
ip2.addr_data32[0] = in.s_addr;
480 r = inet_pton(AF_INET, ip, &in);
484 dd->
ip.addr_data32[0] = in.s_addr;
485 dd->
ip2.addr_data32[0] = in.s_addr;
489 struct in6_addr in6, mask6;
490 uint32_t ip6addr[4], netmask[4];
494 if ((mask = strchr(ip,
'/')) != NULL) {
495 ip[mask - ip] =
'\0';
502 r = inet_pton(AF_INET6, ip, &in6);
505 memcpy(&ip6addr, &in6.s6_addr,
sizeof(ip6addr));
508 memcpy(&netmask, &mask6.s6_addr,
sizeof(netmask));
510 dd->
ip2.addr_data32[0] = dd->
ip.addr_data32[0] = ip6addr[0] & netmask[0];
511 dd->
ip2.addr_data32[1] = dd->
ip.addr_data32[1] = ip6addr[1] & netmask[1];
512 dd->
ip2.addr_data32[2] = dd->
ip.addr_data32[2] = ip6addr[2] & netmask[2];
513 dd->
ip2.addr_data32[3] = dd->
ip.addr_data32[3] = ip6addr[3] & netmask[3];
515 dd->
ip2.addr_data32[0] |=~ netmask[0];
516 dd->
ip2.addr_data32[1] |=~ netmask[1];
517 dd->
ip2.addr_data32[2] |=~ netmask[2];
518 dd->
ip2.addr_data32[3] |=~ netmask[3];
519 }
else if ((ip2 = strchr(ip,
'-')) != NULL) {
524 r = inet_pton(AF_INET6, ip, &in6);
527 memcpy(&dd->
ip.
address, &in6.s6_addr,
sizeof(ip6addr));
529 r = inet_pton(AF_INET6, ip2, &in6);
532 memcpy(&dd->
ip2.
address, &in6.s6_addr,
sizeof(ip6addr));
538 r = inet_pton(AF_INET6, ip, &in6);
574 if (DetectAddressParseString(dd,
str) < 0) {
599 while (*s !=
'\0' && isspace(*s))
602 if (strcasecmp(s,
"any") == 0) {
603 SCLogDebug(
"adding 0.0.0.0/0 and ::/0 as we\'re handling \'any\'");
611 if (DetectAddressInsert(NULL, gh, ad) < 0) {
617 ad = DetectAddressParseSingle(
"::/0");
623 if (DetectAddressInsert(NULL, gh, ad) < 0) {
634 SCLogError(
"failed to parse address \"%s\"", s);
642 if (DetectAddressCutNot(ad, &ad2) < 0) {
651 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");
1225 if (address_vars_node == NULL) {
1236 gh = DetectAddressHeadInit();
1240 ghn = DetectAddressHeadInit();
1245 if (seq_node->
val == NULL) {
1246 SCLogError(
"Address var \"%s\" probably has a sequence(something "
1247 "in brackets) value set without any quotes. Please "
1248 "quote it using \"..\".",
1253 int r = DetectAddressParse2(
1254 NULL, gh, ghn, seq_node->
val, 0, &var_list, 0);
1259 SCLogError(
"failed to parse address var \"%s\" with value \"%s\". "
1260 "Please check its syntax",
1261 seq_node->
name, seq_node->
val);
1265 if (DetectAddressIsCompleteIPSpace(ghn)) {
1266 SCLogError(
"address var - \"%s\" has the complete IP space negated "
1267 "with its value \"%s\". Rule address range is NIL. "
1268 "Probably have a !any or an address range that supplies "
1269 "a NULL address range",
1270 seq_node->
name, seq_node->
val);
1274 DetectAddressHeadFree(gh);
1275 DetectAddressHeadFree(ghn);
1282 DetectAddressHeadFree(gh);
1284 DetectAddressHeadFree(ghn);
1296 static uint32_t DetectAddressMapHashFunc(
HashListTable *ht,
void *data, uint16_t datalen)
1307 static char DetectAddressMapCompareFunc(
void *data1, uint16_t len1,
void *data2,
1317 static void DetectAddressMapFreeFunc(
void *data)
1321 DetectAddressHeadFree(map->
address);
1330 DetectAddressMapCompareFunc,
1331 DetectAddressMapFreeFunc);
1355 if (map->
string == NULL) {
1401 SCLogDebug(
"DetectAddressParse can not be run with NULL address");
1407 SCLogDebug(
"DetectAddressHeadInit for ghn failed");
1411 int r = DetectAddressParse2(
de_ctx, gh, ghn,
str, 0, NULL, 0);
1413 SCLogDebug(
"DetectAddressParse2 returned %d", r);
1414 DetectAddressHeadFree(ghn);
1426 DetectAddressHeadFree(ghn);
1431 DetectAddressHeadFree(ghn);
1432 return contains_negation ? 1 : 0;
1436 const char *
string,
bool *contains_negation)
1453 DetectAddressHeadFree(
head);
1455 }
else if (r == 1) {
1456 *contains_negation =
true;
1458 *contains_negation =
false;
1462 DetectAddressHeadFree(
head);
1591 uint16_t addrs_cnt,
const Address *a)
1595 if (addrs == NULL || addrs_cnt == 0) {
1599 uint32_t match_addr =
SCNtohl(a->addr_data32[0]);
1600 for (uint16_t idx = 0; idx < addrs_cnt; idx++) {
1601 if (match_addr >= addrs[idx].ip && match_addr <= addrs[idx].ip2) {
1624 uint16_t addrs_cnt,
const Address *a)
1628 if (addrs == NULL || addrs_cnt == 0) {
1632 uint32_t match_addr[4];
1633 match_addr[0] =
SCNtohl(a->addr_data32[0]);
1634 match_addr[1] =
SCNtohl(a->addr_data32[1]);
1635 match_addr[2] =
SCNtohl(a->addr_data32[2]);
1636 match_addr[3] =
SCNtohl(a->addr_data32[3]);
1641 for (uint16_t idx = 0; idx < addrs_cnt; idx++) {
1642 uint16_t result1 = 0, result2 = 0;
1645 if (0 == memcmp(match_addr, addrs[idx].ip,
sizeof(match_addr))) {
1648 if (0 == memcmp(match_addr, addrs[idx].ip2,
sizeof(match_addr))) {
1655 for (
int i = 0; i < 4; i++) {
1656 if (match_addr[i] > addrs[idx].ip[i]) {
1660 if (match_addr[i] < addrs[idx].ip[i]) {
1673 for (
int i = 0; i < 4; i++) {
1674 if (match_addr[i] < addrs[idx].ip2[i]) {
1678 if (match_addr[i] > addrs[idx].ip2[i]) {
1687 if (result1 == 1 && result2 == 1)
1743 SCLogDebug(
"What other address type can we have :-/");
1766 char ip[16], mask[16];
1768 memcpy(&in, &gr->
ip.addr_data32[0],
sizeof(in));
1769 PrintInet(AF_INET, &in, ip,
sizeof(ip));
1770 memcpy(&in, &gr->
ip2.addr_data32[0],
sizeof(in));
1771 PrintInet(AF_INET, &in, mask,
sizeof(mask));
1775 }
else if (gr->
ip.
family == AF_INET6) {
1776 struct in6_addr in6;
1777 char ip[66], mask[66];
1779 memcpy(&in6, &gr->
ip.addr_data32,
sizeof(in6));
1780 PrintInet(AF_INET6, &in6, ip,
sizeof(ip));
1781 memcpy(&in6, &gr->
ip2.addr_data32,
sizeof(in6));
1782 PrintInet(AF_INET6, &in6, mask,
sizeof(mask));
1810 if (a->
family == AF_INET) {
1813 }
else if (a->
family == AF_INET6) {
1818 for ( ; g != NULL; g = g->
next) {
1819 if (DetectAddressMatch(g,a) == 1) {
1831 static bool UTHValidateDetectAddress(
DetectAddress *ad,
const char *one,
const char *two)
1833 char str1[46] =
"", str2[46] =
"";
1840 PrintInet(AF_INET, (
const void *)&ad->
ip.addr_data32[0], str1,
sizeof(str1));
1842 PrintInet(AF_INET, (
const void *)&ad->
ip2.addr_data32[0], str2,
sizeof(str2));
1845 if (strcmp(str1, one) != 0) {
1850 if (strcmp(str2, two) != 0) {
1859 PrintInet(AF_INET6, (
const void *)&ad->
ip.addr_data32[0], str1,
sizeof(str1));
1861 PrintInet(AF_INET6, (
const void *)&ad->
ip2.addr_data32[0], str2,
sizeof(str2));
1864 if (strcmp(str1, one) != 0) {
1869 if (strcmp(str2, two) != 0) {
1888 int expect = nranges;
1898 while (have < expect) {
1900 printf(
"bad head: have %d ranges, expected %d: ", have, expect);
1904 if (!UTHValidateDetectAddress(ad, expectations[have].one, expectations[have].two))
1914 static int AddressTestParse01(
void)
1926 static int AddressTestParse02(
void)
1932 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909060) ||
1933 dd->
ip.addr_data32[0] !=
SCNtohl(16909060)) {
1937 printf(
"ip %"PRIu32
", ip2 %"PRIu32
"\n", dd->
ip.addr_data32[0], dd->
ip2.addr_data32[0]);
1945 static int AddressTestParse03(
void)
1947 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4/255.255.255.0");
1957 static int AddressTestParse04(
void)
1959 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4/255.255.255.0");
1962 char left[16], right[16];
1963 PrintInet(AF_INET, (
const void *)&dd->
ip.addr_data32[0], left,
sizeof(left));
1964 PrintInet(AF_INET, (
const void *)&dd->
ip2.addr_data32[0], right,
sizeof(right));
1976 static int AddressTestParse04bug5081(
void)
1978 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.64/26");
1981 char left[16], right[16];
1982 PrintInet(AF_INET, (
const void *)&dd->
ip.addr_data32[0], left,
sizeof(left));
1983 PrintInet(AF_INET, (
const void *)&dd->
ip2.addr_data32[0], right,
sizeof(right));
1992 static int AddressTestParse05(
void)
2004 static int AddressTestParse06(
void)
2010 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909311) ||
2011 dd->
ip.addr_data32[0] !=
SCNtohl(16909056)) {
2022 static int AddressTestParse07(
void)
2034 static int AddressTestParse08(
void)
2040 if (dd->
ip.addr_data32[0] !=
SCNtohl(536870912) || dd->
ip.addr_data32[1] != 0x00000000 ||
2041 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2043 dd->
ip2.addr_data32[0] !=
SCNtohl(1073741823) || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2044 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2056 static int AddressTestParse09(
void)
2058 DetectAddress *dd = DetectAddressParseSingle(
"2001::1/128");
2068 static int AddressTestParse10(
void)
2074 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2075 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2077 dd->
ip2.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip2.addr_data32[1] != 0x00000000 ||
2078 dd->
ip2.addr_data32[2] != 0x00000000 || dd->
ip2.addr_data32[3] != 0x00000000) {
2090 static int AddressTestParse11(
void)
2102 static int AddressTestParse12(
void)
2108 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2109 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2112 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2123 static int AddressTestParse13(
void)
2135 static int AddressTestParse14(
void)
2141 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2142 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2144 dd->
ip2.addr_data32[0] !=
SCNtohl(537001983) || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2145 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2156 static int AddressTestParse15(
void)
2168 static int AddressTestParse16(
void)
2174 if (dd->
ip.addr_data32[0] != 0x00000000 || dd->
ip.addr_data32[1] != 0x00000000 ||
2175 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2177 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2178 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2189 static int AddressTestParse17(
void)
2191 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4-1.2.3.6");
2201 static int AddressTestParse18(
void)
2204 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4-1.2.3.6");
2207 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909062) ||
2208 dd->
ip.addr_data32[0] !=
SCNtohl(16909060)) {
2219 static int AddressTestParse19(
void)
2221 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.6-1.2.3.4");
2231 static int AddressTestParse20(
void)
2233 DetectAddress *dd = DetectAddressParseSingle(
"2001::1-2001::4");
2243 static int AddressTestParse21(
void)
2246 DetectAddress *dd = DetectAddressParseSingle(
"2001::1-2001::4");
2249 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2250 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] !=
SCNtohl(1) ||
2252 dd->
ip2.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip2.addr_data32[1] != 0x00000000 ||
2253 dd->
ip2.addr_data32[2] != 0x00000000 || dd->
ip2.addr_data32[3] !=
SCNtohl(4)) {
2264 static int AddressTestParse22(
void)
2266 DetectAddress *dd = DetectAddressParseSingle(
"2001::4-2001::1");
2276 static int AddressTestParse23(
void)
2282 DetectAddressHeadFree(gh);
2286 static int AddressTestParse24(
void)
2292 DetectAddressHeadFree(gh);
2296 static int AddressTestParse25(
void)
2302 DetectAddressHeadFree(gh);
2307 static int AddressTestParse26(
void)
2313 "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["
2315 "]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]"
2318 DetectAddressHeadFree(gh);
2319 gh = DetectAddressHeadInit();
2323 "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["
2325 "]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]"
2328 DetectAddressHeadFree(gh);
2332 static int AddressTestParse27(
void)
2334 DetectAddress *dd = DetectAddressParseSingle(
"!192.168.0.1");
2344 static int AddressTestParse28(
void)
2351 dd->
ip.addr_data32[0] ==
SCNtohl(16909060)) {
2362 static int AddressTestParse29(
void)
2364 DetectAddress *dd = DetectAddressParseSingle(
"!1.2.3.0/24");
2374 static int AddressTestParse30(
void)
2377 DetectAddress *dd = DetectAddressParseSingle(
"!1.2.3.4/24");
2381 dd->
ip.addr_data32[0] ==
SCNtohl(16909056) &&
2382 dd->
ip2.addr_data32[0] ==
SCNtohl(16909311)) {
2396 static int AddressTestParse31(
void)
2408 static int AddressTestParse32(
void)
2420 static int AddressTestParse33(
void)
2427 dd->
ip.addr_data32[0] ==
SCNtohl(536936448) && dd->
ip.addr_data32[1] == 0x00000000 &&
2428 dd->
ip.addr_data32[2] == 0x00000000 && dd->
ip.addr_data32[3] ==
SCNtohl(1)) {
2439 static int AddressTestParse34(
void)
2451 static int AddressTestParse35(
void)
2458 dd->
ip.addr_data32[0] ==
SCNtohl(536936448) && dd->
ip.addr_data32[1] == 0x00000000 &&
2459 dd->
ip.addr_data32[2] == 0x00000000 && dd->
ip.addr_data32[3] == 0x00000000 &&
2461 dd->
ip2.addr_data32[0] ==
SCNtohl(537001983) && dd->
ip2.addr_data32[1] == 0xFFFFFFFF &&
2462 dd->
ip2.addr_data32[2] == 0xFFFFFFFF && dd->
ip2.addr_data32[3] == 0xFFFFFFFF) {
2473 static int AddressTestParse36(
void)
2479 if (dd->
ip.addr_data32[0] !=
SCNtohl(0xFFFF0000) || dd->
ip.addr_data32[1] != 0x00000000 ||
2480 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2482 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2483 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2497 static int AddressTestParse37(
void)
2503 if (dd->
ip.addr_data32[0] != 0x00000000 || dd->
ip.addr_data32[1] != 0x00000000 ||
2504 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2506 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2507 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2520 static int AddressTestMatch01(
void)
2527 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2529 memset(&a, 0,
sizeof(
Address));
2531 a.addr_data32[0] = in.s_addr;
2533 dd = DetectAddressParseSingle(
"1.2.3.4/24");
2535 if (DetectAddressMatch(dd, &a) == 0)
2545 static int AddressTestMatch02(
void)
2552 if (inet_pton(AF_INET,
"1.2.3.127", &in) != 1)
2554 memset(&a, 0,
sizeof(
Address));
2556 a.addr_data32[0] = in.s_addr;
2558 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2560 if (DetectAddressMatch(dd, &a) == 0)
2570 static int AddressTestMatch03(
void)
2577 if (inet_pton(AF_INET,
"1.2.3.128", &in) != 1)
2579 memset(&a, 0,
sizeof(
Address));
2581 a.addr_data32[0] = in.s_addr;
2583 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2585 if (DetectAddressMatch(dd, &a) == 1)
2595 static int AddressTestMatch04(
void)
2602 if (inet_pton(AF_INET,
"1.2.2.255", &in) != 1)
2604 memset(&a, 0,
sizeof(
Address));
2606 a.addr_data32[0] = in.s_addr;
2608 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2610 if (DetectAddressMatch(dd, &a) == 1)
2620 static int AddressTestMatch05(
void)
2627 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2629 memset(&a, 0,
sizeof(
Address));
2631 a.addr_data32[0] = in.s_addr;
2633 dd = DetectAddressParseSingle(
"1.2.3.4/32");
2635 if (DetectAddressMatch(dd, &a) == 0)
2645 static int AddressTestMatch06(
void)
2652 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2654 memset(&a, 0,
sizeof(
Address));
2656 a.addr_data32[0] = in.s_addr;
2658 dd = DetectAddressParseSingle(
"0.0.0.0/0.0.0.0");
2660 if (DetectAddressMatch(dd, &a) == 0)
2670 static int AddressTestMatch07(
void)
2674 struct in6_addr in6;
2677 if (inet_pton(AF_INET6,
"2001::1", &in6) != 1)
2679 memset(&a, 0,
sizeof(
Address));
2680 a.family = AF_INET6;
2681 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2683 dd = DetectAddressParseSingle(
"2001::/3");
2685 if (DetectAddressMatch(dd, &a) == 0)
2695 static int AddressTestMatch08(
void)
2699 struct in6_addr in6;
2702 if (inet_pton(AF_INET6,
"1999:ffff:ffff:ffff:ffff:ffff:ffff:ffff", &in6) != 1)
2704 memset(&a, 0,
sizeof(
Address));
2705 a.family = AF_INET6;
2706 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2708 dd = DetectAddressParseSingle(
"2001::/3");
2710 if (DetectAddressMatch(dd, &a) == 1)
2720 static int AddressTestMatch09(
void)
2724 struct in6_addr in6;
2727 if (inet_pton(AF_INET6,
"2001::2", &in6) != 1)
2729 memset(&a, 0,
sizeof(
Address));
2730 a.family = AF_INET6;
2731 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2733 dd = DetectAddressParseSingle(
"2001::1/128");
2735 if (DetectAddressMatch(dd, &a) == 1)
2745 static int AddressTestMatch10(
void)
2749 struct in6_addr in6;
2752 if (inet_pton(AF_INET6,
"2001::2", &in6) != 1)
2754 memset(&a, 0,
sizeof(
Address));
2755 a.family = AF_INET6;
2756 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2758 dd = DetectAddressParseSingle(
"2001::1/126");
2760 if (DetectAddressMatch(dd, &a) == 0)
2770 static int AddressTestMatch11(
void)
2774 struct in6_addr in6;
2777 if (inet_pton(AF_INET6,
"2001::3", &in6) != 1)
2779 memset(&a, 0,
sizeof(
Address));
2780 a.family = AF_INET6;
2781 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2783 dd = DetectAddressParseSingle(
"2001::1/127");
2785 if (DetectAddressMatch(dd, &a) == 1)
2795 static int AddressTestCmp01(
void)
2800 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2801 if (da == NULL)
goto error;
2802 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2803 if (db == NULL)
goto error;
2818 static int AddressTestCmp02(
void)
2823 da = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2824 if (da == NULL)
goto error;
2825 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2826 if (db == NULL)
goto error;
2841 static int AddressTestCmp03(
void)
2846 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2847 if (da == NULL)
goto error;
2848 db = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2849 if (db == NULL)
goto error;
2864 static int AddressTestCmp04(
void)
2869 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2870 if (da == NULL)
goto error;
2871 db = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2872 if (db == NULL)
goto error;
2887 static int AddressTestCmp05(
void)
2892 da = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2893 if (da == NULL)
goto error;
2894 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2895 if (db == NULL)
goto error;
2910 static int AddressTestCmp06(
void)
2915 da = DetectAddressParseSingle(
"192.168.1.0/255.255.0.0");
2916 if (da == NULL)
goto error;
2917 db = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2918 if (db == NULL)
goto error;
2933 static int AddressTestCmpIPv407(
void)
2938 da = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2939 if (da == NULL)
goto error;
2940 db = DetectAddressParseSingle(
"192.168.1.128-192.168.2.128");
2941 if (db == NULL)
goto error;
2956 static int AddressTestCmpIPv408(
void)
2961 da = DetectAddressParseSingle(
"192.168.1.128-192.168.2.128");
2962 if (da == NULL)
goto error;
2963 db = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2964 if (db == NULL)
goto error;
2979 static int AddressTestCmp07(
void)
2984 da = DetectAddressParseSingle(
"2001::/3");
2985 if (da == NULL)
goto error;
2986 db = DetectAddressParseSingle(
"2001::1/3");
2987 if (db == NULL)
goto error;
3002 static int AddressTestCmp08(
void)
3007 da = DetectAddressParseSingle(
"2001::/3");
3008 if (da == NULL)
goto error;
3009 db = DetectAddressParseSingle(
"2001::/8");
3010 if (db == NULL)
goto error;
3025 static int AddressTestCmp09(
void)
3030 da = DetectAddressParseSingle(
"2001::/8");
3031 if (da == NULL)
goto error;
3032 db = DetectAddressParseSingle(
"2001::/3");
3033 if (db == NULL)
goto error;
3048 static int AddressTestCmp10(
void)
3053 da = DetectAddressParseSingle(
"2001:1:2:3:0:0:0:0/64");
3054 if (da == NULL)
goto error;
3055 db = DetectAddressParseSingle(
"2001:1:2:4:0:0:0:0/64");
3056 if (db == NULL)
goto error;
3071 static int AddressTestCmp11(
void)
3076 da = DetectAddressParseSingle(
"2001:1:2:4:0:0:0:0/64");
3077 if (da == NULL)
goto error;
3078 db = DetectAddressParseSingle(
"2001:1:2:3:0:0:0:0/64");
3079 if (db == NULL)
goto error;
3094 static int AddressTestCmp12(
void)
3099 da = DetectAddressParseSingle(
"2001:1:2:3:1:0:0:0/64");
3100 if (da == NULL)
goto error;
3101 db = DetectAddressParseSingle(
"2001:1:2:3:2:0:0:0/64");
3102 if (db == NULL)
goto error;
3117 static int AddressTestAddressGroupSetup01(
void)
3127 DetectAddressHeadFree(gh);
3132 static int AddressTestAddressGroupSetup02(
void)
3142 DetectAddressHeadFree(gh);
3147 static int AddressTestAddressGroupSetup03(
void)
3158 if (r == 0 && gh->
ipv4_head != prev_head &&
3164 DetectAddressHeadFree(gh);
3169 static int AddressTestAddressGroupSetup04(
void)
3180 if (r == 0 && gh->
ipv4_head != prev_head &&
3192 DetectAddressHeadFree(gh);
3197 static int AddressTestAddressGroupSetup05(
void)
3208 if (r == 0 && gh->
ipv4_head == prev_head &&
3220 DetectAddressHeadFree(gh);
3225 static int AddressTestAddressGroupSetup06(
void)
3236 if (r == 0 && gh->
ipv4_head == prev_head &&
3242 DetectAddressHeadFree(gh);
3247 static int AddressTestAddressGroupSetup07(
void)
3263 DetectAddressHeadFree(gh);
3268 static int AddressTestAddressGroupSetup08(
void)
3284 DetectAddressHeadFree(gh);
3289 static int AddressTestAddressGroupSetup09(
void)
3305 DetectAddressHeadFree(gh);
3310 static int AddressTestAddressGroupSetup10(
void)
3326 DetectAddressHeadFree(gh);
3331 static int AddressTestAddressGroupSetup11(
void)
3344 *three = two->
next, *four = three->
next,
3354 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3355 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3356 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3357 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3358 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3365 DetectAddressHeadFree(gh);
3370 static int AddressTestAddressGroupSetup12 (
void)
3383 *three = two->
next, *four = three->
next,
3393 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3394 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3395 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3396 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3397 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3404 DetectAddressHeadFree(gh);
3409 static int AddressTestAddressGroupSetup13(
void)
3422 *three = two->
next, *four = three->
next,
3432 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3433 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3434 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3435 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3436 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3443 DetectAddressHeadFree(gh);
3448 static int AddressTestAddressGroupSetupIPv414(
void)
3469 DetectAddressHeadFree(gh);
3474 static int AddressTestAddressGroupSetupIPv415(
void)
3492 DetectAddressHeadFree(gh);
3496 static int AddressTestAddressGroupSetupIPv416(
void)
3514 DetectAddressHeadFree(gh);
3518 static int AddressTestAddressGroupSetup14(
void)
3528 DetectAddressHeadFree(gh);
3533 static int AddressTestAddressGroupSetup15(
void)
3543 DetectAddressHeadFree(gh);
3548 static int AddressTestAddressGroupSetup16(
void)
3559 if (r == 0 && gh->
ipv6_head != prev_head &&
3565 DetectAddressHeadFree(gh);
3570 static int AddressTestAddressGroupSetup17(
void)
3581 if (r == 0 && gh->
ipv6_head != prev_head &&
3593 DetectAddressHeadFree(gh);
3598 static int AddressTestAddressGroupSetup18(
void)
3609 if (r == 0 && gh->
ipv6_head == prev_head &&
3621 DetectAddressHeadFree(gh);
3626 static int AddressTestAddressGroupSetup19(
void)
3637 if (r == 0 && gh->
ipv6_head == prev_head &&
3643 DetectAddressHeadFree(gh);
3648 static int AddressTestAddressGroupSetup20(
void)
3664 DetectAddressHeadFree(gh);
3669 static int AddressTestAddressGroupSetup21(
void)
3685 DetectAddressHeadFree(gh);
3690 static int AddressTestAddressGroupSetup22(
void)
3706 DetectAddressHeadFree(gh);
3711 static int AddressTestAddressGroupSetup23(
void)
3727 DetectAddressHeadFree(gh);
3732 static int AddressTestAddressGroupSetup24(
void)
3745 *three = two->
next, *four = three->
next,
3747 if (one->
ip.addr_data32[0] == 0x00000000 &&
3748 one->
ip.addr_data32[1] == 0x00000000 &&
3749 one->
ip.addr_data32[2] == 0x00000000 &&
3750 one->
ip.addr_data32[3] == 0x00000000 &&
3751 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3752 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3753 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3754 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3756 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3757 two->
ip.addr_data32[1] == 0x00000000 &&
3758 two->
ip.addr_data32[2] == 0x00000000 &&
3759 two->
ip.addr_data32[3] == 0x00000000 &&
3760 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3761 two->
ip2.addr_data32[1] == 0x00000000 &&
3762 two->
ip2.addr_data32[2] == 0x00000000 &&
3765 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3766 three->ip.addr_data32[1] == 0x00000000 &&
3767 three->ip.addr_data32[2] == 0x00000000 &&
3768 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3769 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3770 three->ip2.addr_data32[1] == 0x00000000 &&
3771 three->ip2.addr_data32[2] == 0x00000000 &&
3772 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3774 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3775 four->ip.addr_data32[1] == 0x00000000 &&
3776 four->ip.addr_data32[2] == 0x00000000 &&
3777 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3778 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3779 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3780 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3781 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3783 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3784 five->ip.addr_data32[1] == 0x00000000 &&
3785 five->ip.addr_data32[2] == 0x00000000 &&
3786 five->ip.addr_data32[3] == 0x00000000 &&
3787 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3788 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3789 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3790 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3797 DetectAddressHeadFree(gh);
3802 static int AddressTestAddressGroupSetup25(
void)
3815 *three = two->
next, *four = three->
next,
3817 if (one->
ip.addr_data32[0] == 0x00000000 &&
3818 one->
ip.addr_data32[1] == 0x00000000 &&
3819 one->
ip.addr_data32[2] == 0x00000000 &&
3820 one->
ip.addr_data32[3] == 0x00000000 &&
3821 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3822 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3823 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3824 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3826 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3827 two->
ip.addr_data32[1] == 0x00000000 &&
3828 two->
ip.addr_data32[2] == 0x00000000 &&
3829 two->
ip.addr_data32[3] == 0x00000000 &&
3830 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3831 two->
ip2.addr_data32[1] == 0x00000000 &&
3832 two->
ip2.addr_data32[2] == 0x00000000 &&
3835 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3836 three->ip.addr_data32[1] == 0x00000000 &&
3837 three->ip.addr_data32[2] == 0x00000000 &&
3838 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3839 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3840 three->ip2.addr_data32[1] == 0x00000000 &&
3841 three->ip2.addr_data32[2] == 0x00000000 &&
3842 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3844 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3845 four->ip.addr_data32[1] == 0x00000000 &&
3846 four->ip.addr_data32[2] == 0x00000000 &&
3847 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3848 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3849 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3850 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3851 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3853 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3854 five->ip.addr_data32[1] == 0x00000000 &&
3855 five->ip.addr_data32[2] == 0x00000000 &&
3856 five->ip.addr_data32[3] == 0x00000000 &&
3857 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3858 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3859 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3860 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3867 DetectAddressHeadFree(gh);
3872 static int AddressTestAddressGroupSetup26(
void)
3885 *three = two->
next, *four = three->
next,
3887 if (one->
ip.addr_data32[0] == 0x00000000 &&
3888 one->
ip.addr_data32[1] == 0x00000000 &&
3889 one->
ip.addr_data32[2] == 0x00000000 &&
3890 one->
ip.addr_data32[3] == 0x00000000 &&
3891 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3892 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3893 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3894 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3896 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3897 two->
ip.addr_data32[1] == 0x00000000 &&
3898 two->
ip.addr_data32[2] == 0x00000000 &&
3899 two->
ip.addr_data32[3] == 0x00000000 &&
3900 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3901 two->
ip2.addr_data32[1] == 0x00000000 &&
3902 two->
ip2.addr_data32[2] == 0x00000000 &&
3905 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3906 three->ip.addr_data32[1] == 0x00000000 &&
3907 three->ip.addr_data32[2] == 0x00000000 &&
3908 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3909 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3910 three->ip2.addr_data32[1] == 0x00000000 &&
3911 three->ip2.addr_data32[2] == 0x00000000 &&
3912 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3914 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3915 four->ip.addr_data32[1] == 0x00000000 &&
3916 four->ip.addr_data32[2] == 0x00000000 &&
3917 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3918 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3919 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3920 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3921 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3923 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3924 five->ip.addr_data32[1] == 0x00000000 &&
3925 five->ip.addr_data32[2] == 0x00000000 &&
3926 five->ip.addr_data32[3] == 0x00000000 &&
3927 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3928 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3929 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3930 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3937 DetectAddressHeadFree(gh);
3942 static int AddressTestAddressGroupSetup27(
void)
3952 DetectAddressHeadFree(gh);
3957 static int AddressTestAddressGroupSetup28(
void)
3967 DetectAddressHeadFree(gh);
3972 static int AddressTestAddressGroupSetup29(
void)
3982 DetectAddressHeadFree(gh);
3987 static int AddressTestAddressGroupSetup30(
void)
3993 int r =
DetectAddressParse(NULL, gh,
"[[1.2.3.4,2.3.4.5],4.3.2.1,[10.10.10.10,11.11.11.11]]");
3997 DetectAddressHeadFree(gh);
4002 static int AddressTestAddressGroupSetup31(
void)
4008 int r =
DetectAddressParse(NULL, gh,
"[[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]]]");
4012 DetectAddressHeadFree(gh);
4017 static int AddressTestAddressGroupSetup32(
void)
4023 int r =
DetectAddressParse(NULL, gh,
"[[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.12.12,13.13.13.13]]]]");
4027 DetectAddressHeadFree(gh);
4032 static int AddressTestAddressGroupSetup33(
void)
4042 DetectAddressHeadFree(gh);
4047 static int AddressTestAddressGroupSetup34(
void)
4057 DetectAddressHeadFree(gh);
4062 static int AddressTestAddressGroupSetup35(
void)
4072 DetectAddressHeadFree(gh);
4077 static int AddressTestAddressGroupSetup36 (
void)
4083 int r =
DetectAddressParse(NULL, gh,
"[1.0.0.0/8,[2.0.0.0/8,[3.0.0.0/8,!1.1.1.1]]]");
4087 DetectAddressHeadFree(gh);
4092 static int AddressTestAddressGroupSetup37(
void)
4102 DetectAddressHeadFree(gh);
4107 static int AddressTestAddressGroupSetup38(
void)
4110 {
"0.0.0.0",
"192.167.255.255" },
4111 {
"192.168.14.0",
"192.168.14.255" },
4112 {
"192.169.0.0",
"255.255.255.255" } };
4119 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4123 DetectAddressHeadFree(gh);
4128 static int AddressTestAddressGroupSetup39(
void)
4131 {
"0.0.0.0",
"192.167.255.255" },
4132 {
"192.168.14.0",
"192.168.14.255" },
4133 {
"192.169.0.0",
"255.255.255.255" } };
4140 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4144 DetectAddressHeadFree(gh);
4149 static int AddressTestAddressGroupSetup40(
void)
4152 {
"0.0.0.0",
"192.167.255.255" },
4153 {
"192.168.14.0",
"192.168.14.255" },
4154 {
"192.169.0.0",
"255.255.255.255" } };
4160 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4164 DetectAddressHeadFree(gh);
4169 static int AddressTestAddressGroupSetup41(
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" } };
4180 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4184 DetectAddressHeadFree(gh);
4189 static int AddressTestAddressGroupSetup42(
void)
4192 {
"2000:0000:0000:0000:0000:0000:0000:0000",
"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } };
4198 if (UTHValidateDetectAddressHead(gh, 1, expectations))
4202 DetectAddressHeadFree(gh);
4207 static int AddressTestAddressGroupSetup43(
void)
4210 {
"2000:0000:0000:0000:0000:0000:0000:0000",
"2fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" },
4211 {
"3800:0000:0000:0000:0000:0000:0000:0000",
"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } };
4217 if (UTHValidateDetectAddressHead(gh, 2, expectations))
4221 DetectAddressHeadFree(gh);
4226 static int AddressTestAddressGroupSetup44(
void)
4229 {
"3ffe:ffff:7654:feda:1245:ba98:0000:0000",
"3ffe:ffff:7654:feda:1245:ba98:ffff:ffff" }};
4235 if (UTHValidateDetectAddressHead(gh, 1, expectations))
4239 DetectAddressHeadFree(gh);
4244 static int AddressTestAddressGroupSetup45(
void)
4254 DetectAddressHeadFree(gh);
4259 static int AddressTestAddressGroupSetup46(
void)
4262 {
"0.0.0.0",
"192.167.255.255" },
4263 {
"192.168.1.0",
"192.168.1.255" },
4264 {
"192.168.3.0",
"192.168.3.255" },
4265 {
"192.169.0.0",
"255.255.255.255" } };
4269 int r =
DetectAddressParse(NULL, gh,
"[![192.168.0.0/16,![192.168.1.0/24,192.168.3.0/24]]]");
4271 if (UTHValidateDetectAddressHead(gh, 4, expectations))
4275 DetectAddressHeadFree(gh);
4281 static int AddressTestAddressGroupSetup47(
void)
4284 {
"0.0.0.0",
"192.167.255.255" },
4285 {
"192.168.1.0",
"192.168.1.255" },
4286 {
"192.168.3.0",
"192.168.3.255" },
4287 {
"192.168.5.0",
"192.168.5.255" },
4288 {
"192.169.0.0",
"255.255.255.255" } };
4292 int r =
DetectAddressParse(NULL, gh,
"[![192.168.0.0/16,![192.168.1.0/24,192.168.3.0/24],!192.168.5.0/24]]");
4294 if (UTHValidateDetectAddressHead(gh, 5, expectations))
4298 DetectAddressHeadFree(gh);
4304 static int AddressTestAddressGroupSetup48(
void)
4307 {
"192.168.0.0",
"192.168.0.255" },
4308 {
"192.168.2.0",
"192.168.2.255" },
4309 {
"192.168.4.0",
"192.168.4.255" },
4310 {
"192.168.6.0",
"192.168.255.255" } };
4314 int r =
DetectAddressParse(NULL, gh,
"[192.168.0.0/16,![192.168.1.0/24,192.168.3.0/24],!192.168.5.0/24]");
4316 if (UTHValidateDetectAddressHead(gh, 4, expectations))
4320 DetectAddressHeadFree(gh);
4325 static int AddressTestCutIPv401(
void)
4328 DetectAddress *a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4330 DetectAddress *b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4333 FAIL_IF(DetectAddressCut(NULL, a, b, &c) == -1);
4341 static int AddressTestCutIPv402(
void)
4344 a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4345 b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4347 if (DetectAddressCut(NULL, a, b, &c) == -1)
4365 static int AddressTestCutIPv403(
void)
4368 a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4369 b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4371 if (DetectAddressCut(NULL, a, b, &c) == -1)
4377 if (a->
ip.addr_data32[0] !=
SCNtohl(16908800) || a->
ip2.addr_data32[0] !=
SCNtohl(16909055))
4379 if (b->
ip.addr_data32[0] !=
SCNtohl(16909056) || b->
ip2.addr_data32[0] !=
SCNtohl(16909060))
4381 if (c->
ip.addr_data32[0] !=
SCNtohl(16909061) || c->
ip2.addr_data32[0] !=
SCNtohl(16909311))
4396 static int AddressTestCutIPv404(
void)
4399 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4400 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.5");
4402 if (DetectAddressCut(NULL, a, b, &c) == -1)
4408 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4410 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909061))
4412 if (c->
ip.addr_data32[0] !=
SCNtohl(16909062) || c->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4428 static int AddressTestCutIPv405(
void)
4431 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4432 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4434 if (DetectAddressCut(NULL, a, b, &c) == -1)
4440 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4442 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4444 if (c->
ip.addr_data32[0] !=
SCNtohl(16909063) || c->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4459 static int AddressTestCutIPv406(
void)
4462 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4463 b = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4465 if (DetectAddressCut(NULL, a, b, &c) == -1)
4471 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4473 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4475 if (c->
ip.addr_data32[0] !=
SCNtohl(16909063) || c->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4490 static int AddressTestCutIPv407(
void)
4493 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.6");
4494 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4496 if (DetectAddressCut(NULL, a, b, &c) == -1)
4502 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4504 if (b->
ip.addr_data32[0] !=
SCNtohl(16909063) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4519 static int AddressTestCutIPv408(
void)
4522 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.9");
4523 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4525 if (DetectAddressCut(NULL, a, b, &c) == -1)
4531 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4533 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4548 static int AddressTestCutIPv409(
void)
4551 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4552 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.6");
4554 if (DetectAddressCut(NULL, a, b, &c) == -1)
4560 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4562 if (b->
ip.addr_data32[0] !=
SCNtohl(16909063) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4577 static int AddressTestCutIPv410(
void)
4580 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4581 b = DetectAddressParseSingle(
"1.2.3.3-1.2.3.9");
4583 if (DetectAddressCut(NULL, a, b, &c) == -1)
4589 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4591 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4594 printf(
"ip %u ip2 %u ", (uint32_t)htonl(a->
ip.addr_data32[0]), (uint32_t)htonl(a->
ip2.addr_data32[0]));
4608 static int AddressTestParseInvalidMask01(
void)
4613 dd = DetectAddressParseSingle(
"192.168.2.0/33");
4621 static int AddressTestParseInvalidMask02(
void)
4626 dd = DetectAddressParseSingle(
"192.168.2.0/255.255.257.0");
4634 static int AddressTestParseInvalidMask03(
void)
4639 dd = DetectAddressParseSingle(
"192.168.2.0/blue");
4647 static int AddressConfVarsTest01(
void)
4649 static const char *dummy_conf_string =
4655 " address-groups:\n"
4657 " HOME_NET: \"any\"\n"
4659 " EXTERNAL_NET: \"!any\"\n"
4663 " HTTP_PORTS: \"any\"\n"
4665 " SHELLCODE_PORTS: \"!any\"\n"
4683 static int AddressConfVarsTest02(
void)
4685 static const char *dummy_conf_string =
4691 " address-groups:\n"
4693 " HOME_NET: \"any\"\n"
4695 " EXTERNAL_NET: \"any\"\n"
4699 " HTTP_PORTS: \"any\"\n"
4701 " SHELLCODE_PORTS: \"!any\"\n"
4719 static int AddressConfVarsTest03(
void)
4721 static const char *dummy_conf_string =
4727 " address-groups:\n"
4729 " HOME_NET: \"any\"\n"
4731 " EXTERNAL_NET: \"!$HOME_NET\"\n"
4735 " HTTP_PORTS: \"any\"\n"
4737 " SHELLCODE_PORTS: \"!$HTTP_PORTS\"\n"
4755 static int AddressConfVarsTest04(
void)
4757 static const char *dummy_conf_string =
4763 " address-groups:\n"
4765 " HOME_NET: \"any\"\n"
4767 " EXTERNAL_NET: \"$HOME_NET\"\n"
4771 " HTTP_PORTS: \"any\"\n"
4773 " SHELLCODE_PORTS: \"$HTTP_PORTS\"\n"
4791 static int AddressConfVarsTest05(
void)
4793 static const char *dummy_conf_string =
4799 " address-groups:\n"
4801 " HOME_NET: \"any\"\n"
4803 " EXTERNAL_NET: [192.168.0.1]\n"
4807 " HTTP_PORTS: \"any\"\n"
4809 " SHELLCODE_PORTS: [80]\n"
4830 static int AddressConfVarsTest06(
void)
4833 static const char *dummy_conf_string =
4839 " address-groups:\n"
4842 "\"[2002:0000:3238:DFE1:63:0000:0000:FEFB,2002:0000:3238:DFE1:63:0000:0000:FEFB,"
4843 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4844 "2004:0000:3238:DFE1:63:0000:0000:FEFB,2005:0000:3238:DFE1:63:0000:0000:FEFB,"
4845 "2006:0000:3238:DFE1:63:0000:0000:FEFB,2007:0000:3238:DFE1:63:0000:0000:FEFB,"
4846 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4847 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4848 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4849 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4850 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4851 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4852 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4853 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4854 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4855 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4856 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4857 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4858 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4859 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4860 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4861 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4862 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4863 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4864 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4865 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003: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 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4868 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003: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]\"\n"
4978 " EXTERNAL_NET: \"any\"\n"
5005 UtRegisterTest(
"AddressTestParse04bug5081", AddressTestParse04bug5081);
5069 AddressTestAddressGroupSetup01);
5071 AddressTestAddressGroupSetup02);
5073 AddressTestAddressGroupSetup03);
5075 AddressTestAddressGroupSetup04);
5077 AddressTestAddressGroupSetup05);
5079 AddressTestAddressGroupSetup06);
5081 AddressTestAddressGroupSetup07);
5083 AddressTestAddressGroupSetup08);
5085 AddressTestAddressGroupSetup09);
5087 AddressTestAddressGroupSetup10);
5089 AddressTestAddressGroupSetup11);
5091 AddressTestAddressGroupSetup12);
5093 AddressTestAddressGroupSetup13);
5095 AddressTestAddressGroupSetupIPv414);
5097 AddressTestAddressGroupSetupIPv415);
5099 AddressTestAddressGroupSetupIPv416);
5102 AddressTestAddressGroupSetup14);
5104 AddressTestAddressGroupSetup15);
5106 AddressTestAddressGroupSetup16);
5108 AddressTestAddressGroupSetup17);
5110 AddressTestAddressGroupSetup18);
5112 AddressTestAddressGroupSetup19);
5114 AddressTestAddressGroupSetup20);
5116 AddressTestAddressGroupSetup21);
5118 AddressTestAddressGroupSetup22);
5120 AddressTestAddressGroupSetup23);
5122 AddressTestAddressGroupSetup24);
5124 AddressTestAddressGroupSetup25);
5126 AddressTestAddressGroupSetup26);
5129 AddressTestAddressGroupSetup27);
5131 AddressTestAddressGroupSetup28);
5133 AddressTestAddressGroupSetup29);
5135 AddressTestAddressGroupSetup30);
5137 AddressTestAddressGroupSetup31);
5139 AddressTestAddressGroupSetup32);
5141 AddressTestAddressGroupSetup33);
5143 AddressTestAddressGroupSetup34);
5145 AddressTestAddressGroupSetup35);
5147 AddressTestAddressGroupSetup36);
5149 AddressTestAddressGroupSetup37);
5151 AddressTestAddressGroupSetup38);
5153 AddressTestAddressGroupSetup39);
5155 AddressTestAddressGroupSetup40);
5157 AddressTestAddressGroupSetup41);
5159 AddressTestAddressGroupSetup42);
5161 AddressTestAddressGroupSetup43);
5163 AddressTestAddressGroupSetup44);
5165 AddressTestAddressGroupSetup45);
5167 AddressTestAddressGroupSetup46);
5169 AddressTestAddressGroupSetup47);
5171 AddressTestAddressGroupSetup48);
5185 AddressTestParseInvalidMask01);
5187 AddressTestParseInvalidMask02);
5189 AddressTestParseInvalidMask03);