51 #define DetectAddressPrint(...)
57 DetectAddressHead *ghn,
const char *s,
int negate, ResolvedVariablesList *var_list,
167 if (newhead->
ip.
family == AF_INET) {
169 }
else if (newhead->
ip.
family == AF_INET6) {
194 if (new->ip.family == AF_INET)
196 else if (new->ip.family == AF_INET6)
227 head = GetHeadPtr(gh,
new);
233 for (cur =
head; cur != NULL; cur = cur->
next) {
249 if (cur->
next == NULL) {
258 if (cur->
prev != NULL)
268 if (SetHeadPtr(gh,
head) < 0)
277 r = DetectAddressCut(
de_ctx, cur,
new, &c);
281 DetectAddressInsert(
de_ctx, gh,
new);
283 DetectAddressInsert(
de_ctx, gh, c);
288 r = DetectAddressCut(
de_ctx, cur,
new, &c);
292 DetectAddressInsert(
de_ctx, gh,
new);
294 DetectAddressInsert(
de_ctx, gh, c);
299 r = DetectAddressCut(
de_ctx, cur,
new, &c);
303 DetectAddressInsert(
de_ctx, gh,
new);
305 DetectAddressInsert(
de_ctx, gh, c);
310 r = DetectAddressCut(
de_ctx, cur,
new,&c);
314 DetectAddressInsert(
de_ctx, gh,
new);
316 DetectAddressInsert(
de_ctx, gh, c);
325 if (SetHeadPtr(gh,
head) < 0) {
353 while (item != NULL && it != NULL) {
363 return item == NULL && it == NULL;
403 if ((strchr(
str,
':')) == NULL) {
409 if ((mask = strchr(ip,
'/')) != NULL) {
411 ip[mask - ip] =
'\0';
413 uint32_t ip4addr = 0;
414 uint32_t netmask = 0;
416 if ((strchr (mask,
'.')) == NULL) {
419 for (
size_t u = 0; u < strlen(mask); u++) {
420 if(!isdigit((
unsigned char)mask[u]))
430 r = inet_pton(AF_INET, mask, &in);
440 "netmask \"%s\" is not usable. Only netmasks that are compatible with "
441 "CIDR notation are supported. See ticket #5168.",
447 r = inet_pton(AF_INET, ip, &in);
453 dd->
ip.addr_data32[0] = dd->
ip2.addr_data32[0] = ip4addr & netmask;
454 dd->
ip2.addr_data32[0] |=~ netmask;
455 }
else if ((ip2 = strchr(ip,
'-')) != NULL) {
460 r = inet_pton(AF_INET, ip, &in);
463 dd->
ip.addr_data32[0] = in.s_addr;
465 r = inet_pton(AF_INET, ip2, &in);
468 dd->
ip2.addr_data32[0] = in.s_addr;
475 r = inet_pton(AF_INET, ip, &in);
479 dd->
ip.addr_data32[0] = in.s_addr;
480 dd->
ip2.addr_data32[0] = in.s_addr;
484 struct in6_addr in6, mask6;
485 uint32_t ip6addr[4], netmask[4];
489 if ((mask = strchr(ip,
'/')) != NULL) {
490 ip[mask - ip] =
'\0';
497 r = inet_pton(AF_INET6, ip, &in6);
500 memcpy(&ip6addr, &in6.s6_addr,
sizeof(ip6addr));
503 memcpy(&netmask, &mask6.s6_addr,
sizeof(netmask));
505 dd->
ip2.addr_data32[0] = dd->
ip.addr_data32[0] = ip6addr[0] & netmask[0];
506 dd->
ip2.addr_data32[1] = dd->
ip.addr_data32[1] = ip6addr[1] & netmask[1];
507 dd->
ip2.addr_data32[2] = dd->
ip.addr_data32[2] = ip6addr[2] & netmask[2];
508 dd->
ip2.addr_data32[3] = dd->
ip.addr_data32[3] = ip6addr[3] & netmask[3];
510 dd->
ip2.addr_data32[0] |=~ netmask[0];
511 dd->
ip2.addr_data32[1] |=~ netmask[1];
512 dd->
ip2.addr_data32[2] |=~ netmask[2];
513 dd->
ip2.addr_data32[3] |=~ netmask[3];
514 }
else if ((ip2 = strchr(ip,
'-')) != NULL) {
520 r = inet_pton(AF_INET6, ip, &in6);
523 memcpy(&dd->
ip.
address, &in6.s6_addr,
sizeof(ip6addr));
525 r = inet_pton(AF_INET6, ip2, &in6);
528 memcpy(&dd->
ip2.
address, &in6.s6_addr,
sizeof(ip6addr));
534 r = inet_pton(AF_INET6, ip, &in6);
570 if (DetectAddressParseString(dd,
str) < 0) {
595 while (*s !=
'\0' && isspace(*s))
598 if (strcasecmp(s,
"any") == 0) {
599 SCLogDebug(
"adding 0.0.0.0/0 and ::/0 as we\'re handling \'any\'");
607 if (DetectAddressInsert(NULL, gh, ad) < 0) {
613 ad = DetectAddressParseSingle(
"::/0");
619 if (DetectAddressInsert(NULL, gh, ad) < 0) {
630 SCLogError(
"failed to parse address \"%s\"", s);
638 if (DetectAddressCutNot(ad, &ad2) < 0) {
647 if (DetectAddressInsert(NULL, gh, ad2) < 0) {
659 int r = DetectAddressInsert(NULL, gh, ad);
696 DetectAddressHead *ghn,
const char *s,
int negate, ResolvedVariablesList *var_list,
697 int recur,
char *
address,
size_t address_length)
701 int o_set = 0, n_set = 0, d_set = 0;
703 const char *rule_var_address = NULL;
704 char *temp_rule_var_address = NULL;
708 "limit reached (max 64)");
712 SCLogDebug(
"s %s negate %s", s, negate ?
"true" :
"false");
714 size_t size = strlen(s);
715 for (u = 0, x = 0; u < size && x < address_length; u++) {
716 if (x == (address_length - 1)) {
718 " limit for the supplied address. Invalidating sig. "
719 "Please file a bug report on this.");
725 if (!o_set && s[u] ==
'!') {
728 }
else if (s[u] ==
'[') {
734 }
else if (s[u] ==
']') {
739 if (((negate + n_set) % 2) == 0) {
743 if (DetectAddressParse2(
de_ctx, gh, ghn,
address, (negate + n_set) % 2, var_list, recur) < 0)
756 if (DetectAddressParse2(
de_ctx, &tmp_gh, &tmp_ghn,
address, 0, var_list, recur) < 0) {
766 for (tmp_ad = tmp_gh.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
770 for (tmp_ad = tmp_ghn.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
774 for (tmp_ad = tmp_gh.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
778 for (tmp_ad = tmp_ghn.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
792 for (tmp_ad = tmp_gh.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
795 if (tmp_ad2 == NULL) {
801 DetectAddressInsert(NULL, ghn, tmp_ad2);
805 for (tmp_ad = tmp_gh.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
808 if (tmp_ad2 == NULL) {
814 DetectAddressInsert(NULL, ghn, tmp_ad2);
822 }
else if (depth == 0 && s[u] ==
',') {
825 }
else if (d_set == 1) {
830 if (rule_var_address == NULL)
833 if (strlen(rule_var_address) == 0) {
835 "to nothing. This is likely a misconfiguration. "
836 "Note that a negated address needs to be quoted, "
837 "\"!$HOME_NET\" instead of !$HOME_NET. See issue #295.",
842 SCLogDebug(
"rule_var_address %s", rule_var_address);
843 if ((negate + n_set) % 2) {
845 const size_t str_size = strlen(rule_var_address) + 3 + 1;
846 temp_rule_var_address =
SCMalloc(str_size);
847 if (
unlikely(temp_rule_var_address == NULL))
849 snprintf(temp_rule_var_address, str_size,
"[%s]", rule_var_address);
851 temp_rule_var_address =
SCStrdup(rule_var_address);
852 if (
unlikely(temp_rule_var_address == NULL))
856 if (DetectAddressParse2(
de_ctx, gh, ghn, temp_rule_var_address,
857 (negate + n_set) % 2, var_list, recur) < 0) {
858 if (temp_rule_var_address != rule_var_address)
859 SCFree(temp_rule_var_address);
864 SCFree(temp_rule_var_address);
868 if (!((negate + n_set) % 2)) {
870 if (DetectAddressSetup(gh,
address) < 0)
874 if (DetectAddressSetup(ghn,
address) < 0)
880 }
else if (depth == 0 && s[u] ==
'$') {
882 }
else if (depth == 0 && u == size - 1) {
883 if (x == address_length) {
892 "groups declaration. This is likely a misconfiguration.");
899 if (rule_var_address == NULL)
902 if (strlen(rule_var_address) == 0) {
904 "to nothing. This is likely a misconfiguration. "
905 "Note that a negated address needs to be quoted, "
906 "\"!$HOME_NET\" instead of !$HOME_NET. See issue #295.",
911 SCLogDebug(
"rule_var_address %s", rule_var_address);
912 if ((negate + n_set) % 2) {
914 const size_t str_size = strlen(rule_var_address) + 3 + 1;
915 temp_rule_var_address =
SCMalloc(str_size);
916 if (
unlikely(temp_rule_var_address == NULL))
918 snprintf(temp_rule_var_address, str_size,
"[%s]", rule_var_address);
920 temp_rule_var_address =
SCStrdup(rule_var_address);
921 if (
unlikely(temp_rule_var_address == NULL))
925 if (DetectAddressParse2(
de_ctx, gh, ghn, temp_rule_var_address,
926 (negate + n_set) % 2, var_list, recur) < 0) {
928 if (temp_rule_var_address != rule_var_address)
929 SCFree(temp_rule_var_address);
933 SCFree(temp_rule_var_address);
935 if (!((negate + n_set) % 2)) {
937 if (DetectAddressSetup(gh,
address) < 0) {
943 if (DetectAddressSetup(ghn,
address) < 0) {
954 "properly closed in \"%s\", %d missing closing brackets (]). "
955 "Note: problem might be in a variable.",
958 }
else if (depth < 0) {
960 "properly opened in \"%s\", %d missing opening brackets ([). "
961 "Note: problem might be in a variable.",
980 DetectAddressHead *ghn,
const char *s,
int negate, ResolvedVariablesList *var_list,
984 #define MAX_ADDRESS_LENGTH 8192
986 size_t address_length = strlen(s);
991 " memory for address parsing.");
994 rc = DetectAddressParseInternal(
995 de_ctx, gh, ghn, s, negate, var_list, recur,
address, address_length);
999 rc = DetectAddressParseInternal(
1046 if (DetectAddressIsCompleteIPSpace(ghn) == 1) {
1048 "Rule address range is NIL. Probably have a !any or "
1049 "an address range that supplies a NULL address range");
1056 r = DetectAddressSetup(gh,
"0.0.0.0/0");
1058 SCLogDebug(
"DetectAddressSetup for 0.0.0.0/0 failed");
1064 r = DetectAddressSetup(gh,
"::/0");
1066 SCLogDebug(
"DetectAddressSetup for ::/0 failed");
1081 r = DetectAddressInsert(NULL, gh, ad);
1097 r = DetectAddressInsert(NULL, gh, ad);
1105 for (tmp_ad = gh->
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
1109 int ipv4_applied = 0;
1110 int ipv6_applied = 0;
1118 for (ag2 = gh->
ipv4_head; ag2 != NULL; ) {
1125 if (ag2->
prev != NULL)
1127 if (ag2->
next != NULL)
1148 for (ag2 = gh->
ipv6_head; ag2 != NULL; ) {
1151 if (ag2->
prev != NULL)
1153 if (ag2->
next != NULL)
1173 for (tmp_ad = gh->
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
1176 for (tmp_ad = ghn->
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
1185 if (ipv4_applied !=
cnt) {
1187 "could be applied: %d != %d",
1196 if (ipv6_applied !=
cnt) {
1198 "could be applied: %d != %d",
1207 "merging addresses and negated addresses");
1219 SCLogDebug(
"Testing address conf vars for any misconfigured values");
1221 ResolvedVariablesList var_list;
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);
1297 static uint32_t DetectAddressMapHashFunc(
HashListTable *ht,
void *data, uint16_t datalen)
1308 static char DetectAddressMapCompareFunc(
void *data1, uint16_t len1,
void *data2,
1318 static void DetectAddressMapFreeFunc(
void *data)
1322 DetectAddressHeadFree(map->
address);
1331 DetectAddressMapCompareFunc,
1332 DetectAddressMapFreeFunc);
1356 if (map->
string == NULL) {
1403 SCLogDebug(
"DetectAddressParse can not be run with NULL address");
1409 SCLogDebug(
"DetectAddressHeadInit for ghn failed");
1413 int r = DetectAddressParse2(
de_ctx, gh, ghn,
str, 0, NULL, 0);
1415 SCLogDebug(
"DetectAddressParse2 returned %d", r);
1416 DetectAddressHeadFree(ghn);
1424 if (contains_range != NULL) {
1431 DetectAddressHeadFree(ghn);
1436 DetectAddressHeadFree(ghn);
1437 return contains_negation ? 1 : 0;
1444 if (contains_range == NULL) {
1445 SCLogError(
"contain_range should not be NULL");
1465 DetectAddressHeadFree(
head);
1467 }
else if (r == 1) {
1468 *contains_negation =
true;
1470 *contains_negation =
false;
1473 if (!DetectAddressMapAdd(
1475 DetectAddressHeadFree(
head);
1604 uint16_t addrs_cnt,
const Address *a)
1608 if (addrs == NULL || addrs_cnt == 0) {
1612 uint32_t match_addr =
SCNtohl(a->addr_data32[0]);
1613 for (uint16_t idx = 0; idx < addrs_cnt; idx++) {
1614 if (match_addr >= addrs[idx].ip && match_addr <= addrs[idx].ip2) {
1637 uint16_t addrs_cnt,
const Address *a)
1641 if (addrs == NULL || addrs_cnt == 0) {
1645 uint32_t match_addr[4];
1646 match_addr[0] =
SCNtohl(a->addr_data32[0]);
1647 match_addr[1] =
SCNtohl(a->addr_data32[1]);
1648 match_addr[2] =
SCNtohl(a->addr_data32[2]);
1649 match_addr[3] =
SCNtohl(a->addr_data32[3]);
1654 for (uint16_t idx = 0; idx < addrs_cnt; idx++) {
1655 uint16_t result1 = 0, result2 = 0;
1658 if (0 == memcmp(match_addr, addrs[idx].ip,
sizeof(match_addr))) {
1661 if (0 == memcmp(match_addr, addrs[idx].ip2,
sizeof(match_addr))) {
1668 for (
int i = 0; i < 4; i++) {
1669 if (match_addr[i] > addrs[idx].ip[i]) {
1673 if (match_addr[i] < addrs[idx].ip[i]) {
1686 for (
int i = 0; i < 4; i++) {
1687 if (match_addr[i] < addrs[idx].ip2[i]) {
1691 if (match_addr[i] > addrs[idx].ip2[i]) {
1700 if (result1 == 1 && result2 == 1)
1756 SCLogDebug(
"What other address type can we have :-/");
1779 char ip[16], mask[16];
1781 memcpy(&in, &gr->
ip.addr_data32[0],
sizeof(in));
1782 PrintInet(AF_INET, &in, ip,
sizeof(ip));
1783 memcpy(&in, &gr->
ip2.addr_data32[0],
sizeof(in));
1784 PrintInet(AF_INET, &in, mask,
sizeof(mask));
1788 }
else if (gr->
ip.
family == AF_INET6) {
1789 struct in6_addr in6;
1790 char ip[66], mask[66];
1792 memcpy(&in6, &gr->
ip.addr_data32,
sizeof(in6));
1793 PrintInet(AF_INET6, &in6, ip,
sizeof(ip));
1794 memcpy(&in6, &gr->
ip2.addr_data32,
sizeof(in6));
1795 PrintInet(AF_INET6, &in6, mask,
sizeof(mask));
1823 if (a->
family == AF_INET) {
1826 }
else if (a->
family == AF_INET6) {
1831 for ( ; g != NULL; g = g->
next) {
1832 if (DetectAddressMatch(g,a) == 1) {
1844 static bool UTHValidateDetectAddress(
DetectAddress *ad,
const char *one,
const char *two)
1846 char str1[46] =
"", str2[46] =
"";
1853 PrintInet(AF_INET, (
const void *)&ad->
ip.addr_data32[0], str1,
sizeof(str1));
1855 PrintInet(AF_INET, (
const void *)&ad->
ip2.addr_data32[0], str2,
sizeof(str2));
1858 if (strcmp(str1, one) != 0) {
1863 if (strcmp(str2, two) != 0) {
1872 PrintInet(AF_INET6, (
const void *)&ad->
ip.addr_data32[0], str1,
sizeof(str1));
1874 PrintInet(AF_INET6, (
const void *)&ad->
ip2.addr_data32[0], str2,
sizeof(str2));
1877 if (strcmp(str1, one) != 0) {
1882 if (strcmp(str2, two) != 0) {
1901 int expect = nranges;
1911 while (have < expect) {
1913 printf(
"bad head: have %d ranges, expected %d: ", have, expect);
1917 if (!UTHValidateDetectAddress(ad, expectations[have].one, expectations[have].two))
1927 static int AddressTestParse01(
void)
1939 static int AddressTestParse02(
void)
1945 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909060) ||
1946 dd->
ip.addr_data32[0] !=
SCNtohl(16909060)) {
1950 printf(
"ip %"PRIu32
", ip2 %"PRIu32
"\n", dd->
ip.addr_data32[0], dd->
ip2.addr_data32[0]);
1958 static int AddressTestParse03(
void)
1960 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4/255.255.255.0");
1970 static int AddressTestParse04(
void)
1972 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4/255.255.255.0");
1975 char left[16], right[16];
1976 PrintInet(AF_INET, (
const void *)&dd->
ip.addr_data32[0], left,
sizeof(left));
1977 PrintInet(AF_INET, (
const void *)&dd->
ip2.addr_data32[0], right,
sizeof(right));
1989 static int AddressTestParse04bug5081(
void)
1991 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.64/26");
1994 char left[16], right[16];
1995 PrintInet(AF_INET, (
const void *)&dd->
ip.addr_data32[0], left,
sizeof(left));
1996 PrintInet(AF_INET, (
const void *)&dd->
ip2.addr_data32[0], right,
sizeof(right));
2005 static int AddressTestParse05(
void)
2017 static int AddressTestParse06(
void)
2023 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909311) ||
2024 dd->
ip.addr_data32[0] !=
SCNtohl(16909056)) {
2035 static int AddressTestParse07(
void)
2047 static int AddressTestParse08(
void)
2053 if (dd->
ip.addr_data32[0] !=
SCNtohl(536870912) || dd->
ip.addr_data32[1] != 0x00000000 ||
2054 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2056 dd->
ip2.addr_data32[0] !=
SCNtohl(1073741823) || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2057 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2069 static int AddressTestParse09(
void)
2071 DetectAddress *dd = DetectAddressParseSingle(
"2001::1/128");
2081 static int AddressTestParse10(
void)
2087 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2088 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2090 dd->
ip2.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip2.addr_data32[1] != 0x00000000 ||
2091 dd->
ip2.addr_data32[2] != 0x00000000 || dd->
ip2.addr_data32[3] != 0x00000000) {
2103 static int AddressTestParse11(
void)
2115 static int AddressTestParse12(
void)
2121 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2122 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2125 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2136 static int AddressTestParse13(
void)
2148 static int AddressTestParse14(
void)
2154 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2155 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2157 dd->
ip2.addr_data32[0] !=
SCNtohl(537001983) || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2158 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2169 static int AddressTestParse15(
void)
2181 static int AddressTestParse16(
void)
2187 if (dd->
ip.addr_data32[0] != 0x00000000 || dd->
ip.addr_data32[1] != 0x00000000 ||
2188 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2190 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2191 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2202 static int AddressTestParse17(
void)
2204 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4-1.2.3.6");
2214 static int AddressTestParse18(
void)
2217 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4-1.2.3.6");
2220 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909062) ||
2221 dd->
ip.addr_data32[0] !=
SCNtohl(16909060)) {
2232 static int AddressTestParse19(
void)
2234 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.6-1.2.3.4");
2244 static int AddressTestParse20(
void)
2246 DetectAddress *dd = DetectAddressParseSingle(
"2001::1-2001::4");
2256 static int AddressTestParse21(
void)
2259 DetectAddress *dd = DetectAddressParseSingle(
"2001::1-2001::4");
2262 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2263 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] !=
SCNtohl(1) ||
2265 dd->
ip2.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip2.addr_data32[1] != 0x00000000 ||
2266 dd->
ip2.addr_data32[2] != 0x00000000 || dd->
ip2.addr_data32[3] !=
SCNtohl(4)) {
2277 static int AddressTestParse22(
void)
2279 DetectAddress *dd = DetectAddressParseSingle(
"2001::4-2001::1");
2289 static int AddressTestParse23(
void)
2295 DetectAddressHeadFree(gh);
2299 static int AddressTestParse24(
void)
2305 DetectAddressHeadFree(gh);
2309 static int AddressTestParse25(
void)
2315 DetectAddressHeadFree(gh);
2320 static int AddressTestParse26(
void)
2326 "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["
2328 "]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]",
2331 DetectAddressHeadFree(gh);
2332 gh = DetectAddressHeadInit();
2336 "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["
2338 "]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]",
2341 DetectAddressHeadFree(gh);
2345 static int AddressTestParse27(
void)
2347 DetectAddress *dd = DetectAddressParseSingle(
"!192.168.0.1");
2357 static int AddressTestParse28(
void)
2364 dd->
ip.addr_data32[0] ==
SCNtohl(16909060)) {
2375 static int AddressTestParse29(
void)
2377 DetectAddress *dd = DetectAddressParseSingle(
"!1.2.3.0/24");
2387 static int AddressTestParse30(
void)
2390 DetectAddress *dd = DetectAddressParseSingle(
"!1.2.3.4/24");
2394 dd->
ip.addr_data32[0] ==
SCNtohl(16909056) &&
2395 dd->
ip2.addr_data32[0] ==
SCNtohl(16909311)) {
2409 static int AddressTestParse31(
void)
2421 static int AddressTestParse32(
void)
2433 static int AddressTestParse33(
void)
2440 dd->
ip.addr_data32[0] ==
SCNtohl(536936448) && dd->
ip.addr_data32[1] == 0x00000000 &&
2441 dd->
ip.addr_data32[2] == 0x00000000 && dd->
ip.addr_data32[3] ==
SCNtohl(1)) {
2452 static int AddressTestParse34(
void)
2464 static int AddressTestParse35(
void)
2471 dd->
ip.addr_data32[0] ==
SCNtohl(536936448) && dd->
ip.addr_data32[1] == 0x00000000 &&
2472 dd->
ip.addr_data32[2] == 0x00000000 && dd->
ip.addr_data32[3] == 0x00000000 &&
2474 dd->
ip2.addr_data32[0] ==
SCNtohl(537001983) && dd->
ip2.addr_data32[1] == 0xFFFFFFFF &&
2475 dd->
ip2.addr_data32[2] == 0xFFFFFFFF && dd->
ip2.addr_data32[3] == 0xFFFFFFFF) {
2486 static int AddressTestParse36(
void)
2492 if (dd->
ip.addr_data32[0] !=
SCNtohl(0xFFFF0000) || dd->
ip.addr_data32[1] != 0x00000000 ||
2493 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2495 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2496 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2510 static int AddressTestParse37(
void)
2516 if (dd->
ip.addr_data32[0] != 0x00000000 || dd->
ip.addr_data32[1] != 0x00000000 ||
2517 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2519 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2520 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2533 static int AddressTestMatch01(
void)
2540 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2542 memset(&a, 0,
sizeof(
Address));
2544 a.addr_data32[0] = in.s_addr;
2546 dd = DetectAddressParseSingle(
"1.2.3.4/24");
2548 if (DetectAddressMatch(dd, &a) == 0)
2558 static int AddressTestMatch02(
void)
2565 if (inet_pton(AF_INET,
"1.2.3.127", &in) != 1)
2567 memset(&a, 0,
sizeof(
Address));
2569 a.addr_data32[0] = in.s_addr;
2571 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2573 if (DetectAddressMatch(dd, &a) == 0)
2583 static int AddressTestMatch03(
void)
2590 if (inet_pton(AF_INET,
"1.2.3.128", &in) != 1)
2592 memset(&a, 0,
sizeof(
Address));
2594 a.addr_data32[0] = in.s_addr;
2596 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2598 if (DetectAddressMatch(dd, &a) == 1)
2608 static int AddressTestMatch04(
void)
2615 if (inet_pton(AF_INET,
"1.2.2.255", &in) != 1)
2617 memset(&a, 0,
sizeof(
Address));
2619 a.addr_data32[0] = in.s_addr;
2621 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2623 if (DetectAddressMatch(dd, &a) == 1)
2633 static int AddressTestMatch05(
void)
2640 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2642 memset(&a, 0,
sizeof(
Address));
2644 a.addr_data32[0] = in.s_addr;
2646 dd = DetectAddressParseSingle(
"1.2.3.4/32");
2648 if (DetectAddressMatch(dd, &a) == 0)
2658 static int AddressTestMatch06(
void)
2665 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2667 memset(&a, 0,
sizeof(
Address));
2669 a.addr_data32[0] = in.s_addr;
2671 dd = DetectAddressParseSingle(
"0.0.0.0/0.0.0.0");
2673 if (DetectAddressMatch(dd, &a) == 0)
2683 static int AddressTestMatch07(
void)
2687 struct in6_addr in6;
2690 if (inet_pton(AF_INET6,
"2001::1", &in6) != 1)
2692 memset(&a, 0,
sizeof(
Address));
2693 a.family = AF_INET6;
2694 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2696 dd = DetectAddressParseSingle(
"2001::/3");
2698 if (DetectAddressMatch(dd, &a) == 0)
2708 static int AddressTestMatch08(
void)
2712 struct in6_addr in6;
2715 if (inet_pton(AF_INET6,
"1999:ffff:ffff:ffff:ffff:ffff:ffff:ffff", &in6) != 1)
2717 memset(&a, 0,
sizeof(
Address));
2718 a.family = AF_INET6;
2719 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2721 dd = DetectAddressParseSingle(
"2001::/3");
2723 if (DetectAddressMatch(dd, &a) == 1)
2733 static int AddressTestMatch09(
void)
2737 struct in6_addr in6;
2740 if (inet_pton(AF_INET6,
"2001::2", &in6) != 1)
2742 memset(&a, 0,
sizeof(
Address));
2743 a.family = AF_INET6;
2744 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2746 dd = DetectAddressParseSingle(
"2001::1/128");
2748 if (DetectAddressMatch(dd, &a) == 1)
2758 static int AddressTestMatch10(
void)
2762 struct in6_addr in6;
2765 if (inet_pton(AF_INET6,
"2001::2", &in6) != 1)
2767 memset(&a, 0,
sizeof(
Address));
2768 a.family = AF_INET6;
2769 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2771 dd = DetectAddressParseSingle(
"2001::1/126");
2773 if (DetectAddressMatch(dd, &a) == 0)
2783 static int AddressTestMatch11(
void)
2787 struct in6_addr in6;
2790 if (inet_pton(AF_INET6,
"2001::3", &in6) != 1)
2792 memset(&a, 0,
sizeof(
Address));
2793 a.family = AF_INET6;
2794 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2796 dd = DetectAddressParseSingle(
"2001::1/127");
2798 if (DetectAddressMatch(dd, &a) == 1)
2808 static int AddressTestCmp01(
void)
2813 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2814 if (da == NULL)
goto error;
2815 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2816 if (db == NULL)
goto error;
2831 static int AddressTestCmp02(
void)
2836 da = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2837 if (da == NULL)
goto error;
2838 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2839 if (db == NULL)
goto error;
2854 static int AddressTestCmp03(
void)
2859 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2860 if (da == NULL)
goto error;
2861 db = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2862 if (db == NULL)
goto error;
2877 static int AddressTestCmp04(
void)
2882 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2883 if (da == NULL)
goto error;
2884 db = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2885 if (db == NULL)
goto error;
2900 static int AddressTestCmp05(
void)
2905 da = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2906 if (da == NULL)
goto error;
2907 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2908 if (db == NULL)
goto error;
2923 static int AddressTestCmp06(
void)
2928 da = DetectAddressParseSingle(
"192.168.1.0/255.255.0.0");
2929 if (da == NULL)
goto error;
2930 db = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2931 if (db == NULL)
goto error;
2946 static int AddressTestCmpIPv407(
void)
2951 da = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2952 if (da == NULL)
goto error;
2953 db = DetectAddressParseSingle(
"192.168.1.128-192.168.2.128");
2954 if (db == NULL)
goto error;
2969 static int AddressTestCmpIPv408(
void)
2974 da = DetectAddressParseSingle(
"192.168.1.128-192.168.2.128");
2975 if (da == NULL)
goto error;
2976 db = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2977 if (db == NULL)
goto error;
2992 static int AddressTestCmp07(
void)
2997 da = DetectAddressParseSingle(
"2001::/3");
2998 if (da == NULL)
goto error;
2999 db = DetectAddressParseSingle(
"2001::1/3");
3000 if (db == NULL)
goto error;
3015 static int AddressTestCmp08(
void)
3020 da = DetectAddressParseSingle(
"2001::/3");
3021 if (da == NULL)
goto error;
3022 db = DetectAddressParseSingle(
"2001::/8");
3023 if (db == NULL)
goto error;
3038 static int AddressTestCmp09(
void)
3043 da = DetectAddressParseSingle(
"2001::/8");
3044 if (da == NULL)
goto error;
3045 db = DetectAddressParseSingle(
"2001::/3");
3046 if (db == NULL)
goto error;
3061 static int AddressTestCmp10(
void)
3066 da = DetectAddressParseSingle(
"2001:1:2:3:0:0:0:0/64");
3067 if (da == NULL)
goto error;
3068 db = DetectAddressParseSingle(
"2001:1:2:4:0:0:0:0/64");
3069 if (db == NULL)
goto error;
3084 static int AddressTestCmp11(
void)
3089 da = DetectAddressParseSingle(
"2001:1:2:4:0:0:0:0/64");
3090 if (da == NULL)
goto error;
3091 db = DetectAddressParseSingle(
"2001:1:2:3:0:0:0:0/64");
3092 if (db == NULL)
goto error;
3107 static int AddressTestCmp12(
void)
3112 da = DetectAddressParseSingle(
"2001:1:2:3:1:0:0:0/64");
3113 if (da == NULL)
goto error;
3114 db = DetectAddressParseSingle(
"2001:1:2:3:2:0:0:0/64");
3115 if (db == NULL)
goto error;
3130 static int AddressTestAddressGroupSetup01(
void)
3140 DetectAddressHeadFree(gh);
3145 static int AddressTestAddressGroupSetup02(
void)
3155 DetectAddressHeadFree(gh);
3160 static int AddressTestAddressGroupSetup03(
void)
3171 if (r == 0 && gh->
ipv4_head != prev_head &&
3177 DetectAddressHeadFree(gh);
3182 static int AddressTestAddressGroupSetup04(
void)
3193 if (r == 0 && gh->
ipv4_head != prev_head &&
3205 DetectAddressHeadFree(gh);
3210 static int AddressTestAddressGroupSetup05(
void)
3221 if (r == 0 && gh->
ipv4_head == prev_head &&
3233 DetectAddressHeadFree(gh);
3238 static int AddressTestAddressGroupSetup06(
void)
3249 if (r == 0 && gh->
ipv4_head == prev_head &&
3255 DetectAddressHeadFree(gh);
3260 static int AddressTestAddressGroupSetup07(
void)
3276 DetectAddressHeadFree(gh);
3281 static int AddressTestAddressGroupSetup08(
void)
3297 DetectAddressHeadFree(gh);
3302 static int AddressTestAddressGroupSetup09(
void)
3318 DetectAddressHeadFree(gh);
3323 static int AddressTestAddressGroupSetup10(
void)
3339 DetectAddressHeadFree(gh);
3344 static int AddressTestAddressGroupSetup11(
void)
3357 *three = two->
next, *four = three->
next,
3367 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3368 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3369 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3370 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3371 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3378 DetectAddressHeadFree(gh);
3383 static int AddressTestAddressGroupSetup12 (
void)
3396 *three = two->
next, *four = three->
next,
3406 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3407 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3408 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3409 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3410 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3417 DetectAddressHeadFree(gh);
3422 static int AddressTestAddressGroupSetup13(
void)
3435 *three = two->
next, *four = three->
next,
3445 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3446 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3447 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3448 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3449 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3456 DetectAddressHeadFree(gh);
3461 static int AddressTestAddressGroupSetupIPv414(
void)
3482 DetectAddressHeadFree(gh);
3487 static int AddressTestAddressGroupSetupIPv415(
void)
3505 DetectAddressHeadFree(gh);
3509 static int AddressTestAddressGroupSetupIPv416(
void)
3527 DetectAddressHeadFree(gh);
3531 static int AddressTestAddressGroupSetup14(
void)
3541 DetectAddressHeadFree(gh);
3546 static int AddressTestAddressGroupSetup15(
void)
3556 DetectAddressHeadFree(gh);
3561 static int AddressTestAddressGroupSetup16(
void)
3572 if (r == 0 && gh->
ipv6_head != prev_head &&
3578 DetectAddressHeadFree(gh);
3583 static int AddressTestAddressGroupSetup17(
void)
3594 if (r == 0 && gh->
ipv6_head != prev_head &&
3606 DetectAddressHeadFree(gh);
3611 static int AddressTestAddressGroupSetup18(
void)
3622 if (r == 0 && gh->
ipv6_head == prev_head &&
3634 DetectAddressHeadFree(gh);
3639 static int AddressTestAddressGroupSetup19(
void)
3650 if (r == 0 && gh->
ipv6_head == prev_head &&
3656 DetectAddressHeadFree(gh);
3661 static int AddressTestAddressGroupSetup20(
void)
3677 DetectAddressHeadFree(gh);
3682 static int AddressTestAddressGroupSetup21(
void)
3698 DetectAddressHeadFree(gh);
3703 static int AddressTestAddressGroupSetup22(
void)
3719 DetectAddressHeadFree(gh);
3724 static int AddressTestAddressGroupSetup23(
void)
3740 DetectAddressHeadFree(gh);
3745 static int AddressTestAddressGroupSetup24(
void)
3758 *three = two->
next, *four = three->
next,
3760 if (one->
ip.addr_data32[0] == 0x00000000 &&
3761 one->
ip.addr_data32[1] == 0x00000000 &&
3762 one->
ip.addr_data32[2] == 0x00000000 &&
3763 one->
ip.addr_data32[3] == 0x00000000 &&
3764 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3765 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3766 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3767 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3769 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3770 two->
ip.addr_data32[1] == 0x00000000 &&
3771 two->
ip.addr_data32[2] == 0x00000000 &&
3772 two->
ip.addr_data32[3] == 0x00000000 &&
3773 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3774 two->
ip2.addr_data32[1] == 0x00000000 &&
3775 two->
ip2.addr_data32[2] == 0x00000000 &&
3778 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3779 three->ip.addr_data32[1] == 0x00000000 &&
3780 three->ip.addr_data32[2] == 0x00000000 &&
3781 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3782 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3783 three->ip2.addr_data32[1] == 0x00000000 &&
3784 three->ip2.addr_data32[2] == 0x00000000 &&
3785 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3787 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3788 four->ip.addr_data32[1] == 0x00000000 &&
3789 four->ip.addr_data32[2] == 0x00000000 &&
3790 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3791 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3792 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3793 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3794 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3796 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3797 five->ip.addr_data32[1] == 0x00000000 &&
3798 five->ip.addr_data32[2] == 0x00000000 &&
3799 five->ip.addr_data32[3] == 0x00000000 &&
3800 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3801 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3802 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3803 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3810 DetectAddressHeadFree(gh);
3815 static int AddressTestAddressGroupSetup25(
void)
3828 *three = two->
next, *four = three->
next,
3830 if (one->
ip.addr_data32[0] == 0x00000000 &&
3831 one->
ip.addr_data32[1] == 0x00000000 &&
3832 one->
ip.addr_data32[2] == 0x00000000 &&
3833 one->
ip.addr_data32[3] == 0x00000000 &&
3834 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3835 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3836 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3837 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3839 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3840 two->
ip.addr_data32[1] == 0x00000000 &&
3841 two->
ip.addr_data32[2] == 0x00000000 &&
3842 two->
ip.addr_data32[3] == 0x00000000 &&
3843 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3844 two->
ip2.addr_data32[1] == 0x00000000 &&
3845 two->
ip2.addr_data32[2] == 0x00000000 &&
3848 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3849 three->ip.addr_data32[1] == 0x00000000 &&
3850 three->ip.addr_data32[2] == 0x00000000 &&
3851 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3852 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3853 three->ip2.addr_data32[1] == 0x00000000 &&
3854 three->ip2.addr_data32[2] == 0x00000000 &&
3855 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3857 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3858 four->ip.addr_data32[1] == 0x00000000 &&
3859 four->ip.addr_data32[2] == 0x00000000 &&
3860 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3861 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3862 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3863 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3864 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3866 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3867 five->ip.addr_data32[1] == 0x00000000 &&
3868 five->ip.addr_data32[2] == 0x00000000 &&
3869 five->ip.addr_data32[3] == 0x00000000 &&
3870 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3871 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3872 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3873 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3880 DetectAddressHeadFree(gh);
3885 static int AddressTestAddressGroupSetup26(
void)
3898 *three = two->
next, *four = three->
next,
3900 if (one->
ip.addr_data32[0] == 0x00000000 &&
3901 one->
ip.addr_data32[1] == 0x00000000 &&
3902 one->
ip.addr_data32[2] == 0x00000000 &&
3903 one->
ip.addr_data32[3] == 0x00000000 &&
3904 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3905 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3906 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3907 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3909 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3910 two->
ip.addr_data32[1] == 0x00000000 &&
3911 two->
ip.addr_data32[2] == 0x00000000 &&
3912 two->
ip.addr_data32[3] == 0x00000000 &&
3913 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3914 two->
ip2.addr_data32[1] == 0x00000000 &&
3915 two->
ip2.addr_data32[2] == 0x00000000 &&
3918 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3919 three->ip.addr_data32[1] == 0x00000000 &&
3920 three->ip.addr_data32[2] == 0x00000000 &&
3921 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3922 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3923 three->ip2.addr_data32[1] == 0x00000000 &&
3924 three->ip2.addr_data32[2] == 0x00000000 &&
3925 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3927 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3928 four->ip.addr_data32[1] == 0x00000000 &&
3929 four->ip.addr_data32[2] == 0x00000000 &&
3930 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3931 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3932 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3933 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3934 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3936 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3937 five->ip.addr_data32[1] == 0x00000000 &&
3938 five->ip.addr_data32[2] == 0x00000000 &&
3939 five->ip.addr_data32[3] == 0x00000000 &&
3940 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3941 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3942 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3943 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3950 DetectAddressHeadFree(gh);
3955 static int AddressTestAddressGroupSetup27(
void)
3965 DetectAddressHeadFree(gh);
3970 static int AddressTestAddressGroupSetup28(
void)
3980 DetectAddressHeadFree(gh);
3985 static int AddressTestAddressGroupSetup29(
void)
3995 DetectAddressHeadFree(gh);
4000 static int AddressTestAddressGroupSetup30(
void)
4007 NULL, gh,
"[[1.2.3.4,2.3.4.5],4.3.2.1,[10.10.10.10,11.11.11.11]]", NULL);
4011 DetectAddressHeadFree(gh);
4016 static int AddressTestAddressGroupSetup31(
void)
4023 "[[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]]]",
4028 DetectAddressHeadFree(gh);
4033 static int AddressTestAddressGroupSetup32(
void)
4040 "[[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."
4041 "12.12,13.13.13.13]]]]",
4046 DetectAddressHeadFree(gh);
4051 static int AddressTestAddressGroupSetup33(
void)
4057 int r =
DetectAddressParse(NULL, gh,
"![1.1.1.1,[2.2.2.2,[3.3.3.3,4.4.4.4]]]", NULL);
4061 DetectAddressHeadFree(gh);
4066 static int AddressTestAddressGroupSetup34(
void)
4072 int r =
DetectAddressParse(NULL, gh,
"[1.0.0.0/8,![1.1.1.1,[1.2.1.1,1.3.1.1]]]", NULL);
4076 DetectAddressHeadFree(gh);
4081 static int AddressTestAddressGroupSetup35(
void)
4087 int r =
DetectAddressParse(NULL, gh,
"[1.0.0.0/8,[2.0.0.0/8,![1.1.1.1,2.2.2.2]]]", NULL);
4091 DetectAddressHeadFree(gh);
4096 static int AddressTestAddressGroupSetup36 (
void)
4102 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);
4106 DetectAddressHeadFree(gh);
4111 static int AddressTestAddressGroupSetup37(
void)
4121 DetectAddressHeadFree(gh);
4126 static int AddressTestAddressGroupSetup38(
void)
4129 {
"0.0.0.0",
"192.167.255.255" },
4130 {
"192.168.14.0",
"192.168.14.255" },
4131 {
"192.169.0.0",
"255.255.255.255" } };
4138 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4142 DetectAddressHeadFree(gh);
4147 static int AddressTestAddressGroupSetup39(
void)
4150 {
"0.0.0.0",
"192.167.255.255" },
4151 {
"192.168.14.0",
"192.168.14.255" },
4152 {
"192.169.0.0",
"255.255.255.255" } };
4159 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4163 DetectAddressHeadFree(gh);
4168 static int AddressTestAddressGroupSetup40(
void)
4171 {
"0.0.0.0",
"192.167.255.255" },
4172 {
"192.168.14.0",
"192.168.14.255" },
4173 {
"192.169.0.0",
"255.255.255.255" } };
4177 int r =
DetectAddressParse(NULL, gh,
"[![192.168.0.0/16,[!192.168.14.0/24]]]", NULL);
4179 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4183 DetectAddressHeadFree(gh);
4188 static int AddressTestAddressGroupSetup41(
void)
4191 {
"0.0.0.0",
"192.167.255.255" },
4192 {
"192.168.14.0",
"192.168.14.255" },
4193 {
"192.169.0.0",
"255.255.255.255" } };
4197 int r =
DetectAddressParse(NULL, gh,
"[![192.168.0.0/16,![192.168.14.0/24]]]", NULL);
4199 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4203 DetectAddressHeadFree(gh);
4208 static int AddressTestAddressGroupSetup42(
void)
4211 {
"2000:0000:0000:0000:0000:0000:0000:0000",
"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } };
4217 if (UTHValidateDetectAddressHead(gh, 1, expectations))
4221 DetectAddressHeadFree(gh);
4226 static int AddressTestAddressGroupSetup43(
void)
4229 {
"2000:0000:0000:0000:0000:0000:0000:0000",
"2fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" },
4230 {
"3800:0000:0000:0000:0000:0000:0000:0000",
"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } };
4236 if (UTHValidateDetectAddressHead(gh, 2, expectations))
4240 DetectAddressHeadFree(gh);
4245 static int AddressTestAddressGroupSetup44(
void)
4248 {
"3ffe:ffff:7654:feda:1245:ba98:0000:0000",
"3ffe:ffff:7654:feda:1245:ba98:ffff:ffff" }};
4252 int r =
DetectAddressParse(NULL, gh,
"3ffe:ffff:7654:feda:1245:ba98:3210:4562/96", NULL);
4254 if (UTHValidateDetectAddressHead(gh, 1, expectations))
4258 DetectAddressHeadFree(gh);
4263 static int AddressTestAddressGroupSetup45(
void)
4273 DetectAddressHeadFree(gh);
4278 static int AddressTestAddressGroupSetup46(
void)
4281 {
"0.0.0.0",
"192.167.255.255" },
4282 {
"192.168.1.0",
"192.168.1.255" },
4283 {
"192.168.3.0",
"192.168.3.255" },
4284 {
"192.169.0.0",
"255.255.255.255" } };
4289 NULL, gh,
"[![192.168.0.0/16,![192.168.1.0/24,192.168.3.0/24]]]", NULL);
4291 if (UTHValidateDetectAddressHead(gh, 4, expectations))
4295 DetectAddressHeadFree(gh);
4301 static int AddressTestAddressGroupSetup47(
void)
4304 {
"0.0.0.0",
"192.167.255.255" },
4305 {
"192.168.1.0",
"192.168.1.255" },
4306 {
"192.168.3.0",
"192.168.3.255" },
4307 {
"192.168.5.0",
"192.168.5.255" },
4308 {
"192.169.0.0",
"255.255.255.255" } };
4313 "[![192.168.0.0/16,![192.168.1.0/24,192.168.3.0/24],!192.168.5.0/24]]", NULL);
4315 if (UTHValidateDetectAddressHead(gh, 5, expectations))
4319 DetectAddressHeadFree(gh);
4325 static int AddressTestAddressGroupSetup48(
void)
4328 {
"192.168.0.0",
"192.168.0.255" },
4329 {
"192.168.2.0",
"192.168.2.255" },
4330 {
"192.168.4.0",
"192.168.4.255" },
4331 {
"192.168.6.0",
"192.168.255.255" } };
4336 "[192.168.0.0/16,![192.168.1.0/24,192.168.3.0/24],!192.168.5.0/24]", NULL);
4338 if (UTHValidateDetectAddressHead(gh, 4, expectations))
4342 DetectAddressHeadFree(gh);
4347 static int AddressTestCutIPv401(
void)
4350 DetectAddress *a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4352 DetectAddress *b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4355 FAIL_IF(DetectAddressCut(NULL, a, b, &c) == -1);
4363 static int AddressTestCutIPv402(
void)
4366 a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4367 b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4369 if (DetectAddressCut(NULL, a, b, &c) == -1)
4387 static int AddressTestCutIPv403(
void)
4390 a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4391 b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4393 if (DetectAddressCut(NULL, a, b, &c) == -1)
4399 if (a->
ip.addr_data32[0] !=
SCNtohl(16908800) || a->
ip2.addr_data32[0] !=
SCNtohl(16909055))
4401 if (b->
ip.addr_data32[0] !=
SCNtohl(16909056) || b->
ip2.addr_data32[0] !=
SCNtohl(16909060))
4403 if (c->
ip.addr_data32[0] !=
SCNtohl(16909061) || c->
ip2.addr_data32[0] !=
SCNtohl(16909311))
4418 static int AddressTestCutIPv404(
void)
4421 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4422 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.5");
4424 if (DetectAddressCut(NULL, a, b, &c) == -1)
4430 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4432 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909061))
4434 if (c->
ip.addr_data32[0] !=
SCNtohl(16909062) || c->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4450 static int AddressTestCutIPv405(
void)
4453 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4454 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4456 if (DetectAddressCut(NULL, a, b, &c) == -1)
4462 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4464 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4466 if (c->
ip.addr_data32[0] !=
SCNtohl(16909063) || c->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4481 static int AddressTestCutIPv406(
void)
4484 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4485 b = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4487 if (DetectAddressCut(NULL, a, b, &c) == -1)
4493 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4495 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4497 if (c->
ip.addr_data32[0] !=
SCNtohl(16909063) || c->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4512 static int AddressTestCutIPv407(
void)
4515 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.6");
4516 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4518 if (DetectAddressCut(NULL, a, b, &c) == -1)
4524 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4526 if (b->
ip.addr_data32[0] !=
SCNtohl(16909063) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4541 static int AddressTestCutIPv408(
void)
4544 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.9");
4545 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4547 if (DetectAddressCut(NULL, a, b, &c) == -1)
4553 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4555 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4570 static int AddressTestCutIPv409(
void)
4573 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4574 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.6");
4576 if (DetectAddressCut(NULL, a, b, &c) == -1)
4582 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4584 if (b->
ip.addr_data32[0] !=
SCNtohl(16909063) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4599 static int AddressTestCutIPv410(
void)
4602 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4603 b = DetectAddressParseSingle(
"1.2.3.3-1.2.3.9");
4605 if (DetectAddressCut(NULL, a, b, &c) == -1)
4611 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4613 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4616 printf(
"ip %u ip2 %u ", (uint32_t)htonl(a->
ip.addr_data32[0]), (uint32_t)htonl(a->
ip2.addr_data32[0]));
4630 static int AddressTestParseInvalidMask01(
void)
4635 dd = DetectAddressParseSingle(
"192.168.2.0/33");
4643 static int AddressTestParseInvalidMask02(
void)
4648 dd = DetectAddressParseSingle(
"192.168.2.0/255.255.257.0");
4656 static int AddressTestParseInvalidMask03(
void)
4661 dd = DetectAddressParseSingle(
"192.168.2.0/blue");
4669 static int AddressConfVarsTest01(
void)
4671 static const char *dummy_conf_string =
4677 " address-groups:\n"
4679 " HOME_NET: \"any\"\n"
4681 " EXTERNAL_NET: \"!any\"\n"
4685 " HTTP_PORTS: \"any\"\n"
4687 " SHELLCODE_PORTS: \"!any\"\n"
4705 static int AddressConfVarsTest02(
void)
4707 static const char *dummy_conf_string =
4713 " address-groups:\n"
4715 " HOME_NET: \"any\"\n"
4717 " EXTERNAL_NET: \"any\"\n"
4721 " HTTP_PORTS: \"any\"\n"
4723 " SHELLCODE_PORTS: \"!any\"\n"
4741 static int AddressConfVarsTest03(
void)
4743 static const char *dummy_conf_string =
4749 " address-groups:\n"
4751 " HOME_NET: \"any\"\n"
4753 " EXTERNAL_NET: \"!$HOME_NET\"\n"
4757 " HTTP_PORTS: \"any\"\n"
4759 " SHELLCODE_PORTS: \"!$HTTP_PORTS\"\n"
4777 static int AddressConfVarsTest04(
void)
4779 static const char *dummy_conf_string =
4785 " address-groups:\n"
4787 " HOME_NET: \"any\"\n"
4789 " EXTERNAL_NET: \"$HOME_NET\"\n"
4793 " HTTP_PORTS: \"any\"\n"
4795 " SHELLCODE_PORTS: \"$HTTP_PORTS\"\n"
4813 static int AddressConfVarsTest05(
void)
4815 static const char *dummy_conf_string =
4821 " address-groups:\n"
4823 " HOME_NET: \"any\"\n"
4825 " EXTERNAL_NET: [192.168.0.1]\n"
4829 " HTTP_PORTS: \"any\"\n"
4831 " SHELLCODE_PORTS: [80]\n"
4852 static int AddressConfVarsTest06(
void)
4855 static const char *dummy_conf_string =
4861 " address-groups:\n"
4864 "\"[2002:0000:3238:DFE1:63:0000:0000:FEFB,2002: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 "2004:0000:3238:DFE1:63:0000:0000:FEFB,2005:0000:3238:DFE1:63:0000:0000:FEFB,"
4867 "2006:0000:3238:DFE1:63:0000:0000:FEFB,2007: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,"
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]\"\n"
5000 " EXTERNAL_NET: \"any\"\n"
5027 UtRegisterTest(
"AddressTestParse04bug5081", AddressTestParse04bug5081);
5091 AddressTestAddressGroupSetup01);
5093 AddressTestAddressGroupSetup02);
5095 AddressTestAddressGroupSetup03);
5097 AddressTestAddressGroupSetup04);
5099 AddressTestAddressGroupSetup05);
5101 AddressTestAddressGroupSetup06);
5103 AddressTestAddressGroupSetup07);
5105 AddressTestAddressGroupSetup08);
5107 AddressTestAddressGroupSetup09);
5109 AddressTestAddressGroupSetup10);
5111 AddressTestAddressGroupSetup11);
5113 AddressTestAddressGroupSetup12);
5115 AddressTestAddressGroupSetup13);
5117 AddressTestAddressGroupSetupIPv414);
5119 AddressTestAddressGroupSetupIPv415);
5121 AddressTestAddressGroupSetupIPv416);
5124 AddressTestAddressGroupSetup14);
5126 AddressTestAddressGroupSetup15);
5128 AddressTestAddressGroupSetup16);
5130 AddressTestAddressGroupSetup17);
5132 AddressTestAddressGroupSetup18);
5134 AddressTestAddressGroupSetup19);
5136 AddressTestAddressGroupSetup20);
5138 AddressTestAddressGroupSetup21);
5140 AddressTestAddressGroupSetup22);
5142 AddressTestAddressGroupSetup23);
5144 AddressTestAddressGroupSetup24);
5146 AddressTestAddressGroupSetup25);
5148 AddressTestAddressGroupSetup26);
5151 AddressTestAddressGroupSetup27);
5153 AddressTestAddressGroupSetup28);
5155 AddressTestAddressGroupSetup29);
5157 AddressTestAddressGroupSetup30);
5159 AddressTestAddressGroupSetup31);
5161 AddressTestAddressGroupSetup32);
5163 AddressTestAddressGroupSetup33);
5165 AddressTestAddressGroupSetup34);
5167 AddressTestAddressGroupSetup35);
5169 AddressTestAddressGroupSetup36);
5171 AddressTestAddressGroupSetup37);
5173 AddressTestAddressGroupSetup38);
5175 AddressTestAddressGroupSetup39);
5177 AddressTestAddressGroupSetup40);
5179 AddressTestAddressGroupSetup41);
5181 AddressTestAddressGroupSetup42);
5183 AddressTestAddressGroupSetup43);
5185 AddressTestAddressGroupSetup44);
5187 AddressTestAddressGroupSetup45);
5189 AddressTestAddressGroupSetup46);
5191 AddressTestAddressGroupSetup47);
5193 AddressTestAddressGroupSetup48);
5207 AddressTestParseInvalidMask01);
5209 AddressTestParseInvalidMask02);
5211 AddressTestParseInvalidMask03);