52 #define DetectAddressPrint(...)
58 DetectAddressHead *ghn,
const char *s,
int negate, ResolvedVariablesList *var_list,
170 if (newhead->
ip.
family == AF_INET) {
172 }
else if (newhead->
ip.
family == AF_INET6) {
197 if (new->ip.family == AF_INET)
199 else if (new->ip.family == AF_INET6)
230 head = GetHeadPtr(gh,
new);
236 for (cur =
head; cur != NULL; cur = cur->
next) {
252 if (cur->
next == NULL) {
261 if (cur->
prev != NULL)
271 if (SetHeadPtr(gh,
head) < 0)
280 r = DetectAddressCut(
de_ctx, cur,
new, &c);
284 DetectAddressInsert(
de_ctx, gh,
new);
286 DetectAddressInsert(
de_ctx, gh, c);
291 r = DetectAddressCut(
de_ctx, cur,
new, &c);
295 DetectAddressInsert(
de_ctx, gh,
new);
297 DetectAddressInsert(
de_ctx, gh, c);
302 r = DetectAddressCut(
de_ctx, cur,
new, &c);
306 DetectAddressInsert(
de_ctx, gh,
new);
308 DetectAddressInsert(
de_ctx, gh, c);
313 r = DetectAddressCut(
de_ctx, cur,
new,&c);
317 DetectAddressInsert(
de_ctx, gh,
new);
319 DetectAddressInsert(
de_ctx, gh, c);
328 if (SetHeadPtr(gh,
head) < 0) {
356 while (item != NULL && it != NULL) {
366 if (!(item == NULL && it == NULL)) {
410 if ((strchr(
str,
':')) == NULL) {
416 if ((mask = strchr(ip,
'/')) != NULL) {
418 ip[mask - ip] =
'\0';
420 uint32_t ip4addr = 0;
421 uint32_t netmask = 0;
423 if ((strchr (mask,
'.')) == NULL) {
426 for (
size_t u = 0; u < strlen(mask); u++) {
427 if(!isdigit((
unsigned char)mask[u]))
437 r = inet_pton(AF_INET, mask, &in);
447 "netmask \"%s\" is not usable. Only netmasks that are compatible with "
448 "CIDR notation are supported. See ticket #5168.",
454 r = inet_pton(AF_INET, ip, &in);
460 dd->
ip.addr_data32[0] = dd->
ip2.addr_data32[0] = ip4addr & netmask;
461 dd->
ip2.addr_data32[0] |=~ netmask;
462 }
else if ((ip2 = strchr(ip,
'-')) != NULL) {
467 r = inet_pton(AF_INET, ip, &in);
470 dd->
ip.addr_data32[0] = in.s_addr;
472 r = inet_pton(AF_INET, ip2, &in);
475 dd->
ip2.addr_data32[0] = in.s_addr;
482 r = inet_pton(AF_INET, ip, &in);
486 dd->
ip.addr_data32[0] = in.s_addr;
487 dd->
ip2.addr_data32[0] = in.s_addr;
491 struct in6_addr in6, mask6;
492 uint32_t ip6addr[4], netmask[4];
496 if ((mask = strchr(ip,
'/')) != NULL) {
497 ip[mask - ip] =
'\0';
504 r = inet_pton(AF_INET6, ip, &in6);
507 memcpy(&ip6addr, &in6.s6_addr,
sizeof(ip6addr));
510 memcpy(&netmask, &mask6.s6_addr,
sizeof(netmask));
512 dd->
ip2.addr_data32[0] = dd->
ip.addr_data32[0] = ip6addr[0] & netmask[0];
513 dd->
ip2.addr_data32[1] = dd->
ip.addr_data32[1] = ip6addr[1] & netmask[1];
514 dd->
ip2.addr_data32[2] = dd->
ip.addr_data32[2] = ip6addr[2] & netmask[2];
515 dd->
ip2.addr_data32[3] = dd->
ip.addr_data32[3] = ip6addr[3] & netmask[3];
517 dd->
ip2.addr_data32[0] |=~ netmask[0];
518 dd->
ip2.addr_data32[1] |=~ netmask[1];
519 dd->
ip2.addr_data32[2] |=~ netmask[2];
520 dd->
ip2.addr_data32[3] |=~ netmask[3];
521 }
else if ((ip2 = strchr(ip,
'-')) != NULL) {
526 r = inet_pton(AF_INET6, ip, &in6);
529 memcpy(&dd->
ip.
address, &in6.s6_addr,
sizeof(ip6addr));
531 r = inet_pton(AF_INET6, ip2, &in6);
534 memcpy(&dd->
ip2.
address, &in6.s6_addr,
sizeof(ip6addr));
540 r = inet_pton(AF_INET6, ip, &in6);
576 if (DetectAddressParseString(dd,
str) < 0) {
601 while (*s !=
'\0' && isspace(*s))
604 if (strcasecmp(s,
"any") == 0) {
605 SCLogDebug(
"adding 0.0.0.0/0 and ::/0 as we\'re handling \'any\'");
613 if (DetectAddressInsert(NULL, gh, ad) < 0) {
619 ad = DetectAddressParseSingle(
"::/0");
625 if (DetectAddressInsert(NULL, gh, ad) < 0) {
636 SCLogError(
"failed to parse address \"%s\"", s);
644 if (DetectAddressCutNot(ad, &ad2) < 0) {
653 if (DetectAddressInsert(NULL, gh, ad2) < 0) {
662 int r = DetectAddressInsert(NULL, gh, ad);
699 DetectAddressHead *ghn,
const char *s,
int negate, ResolvedVariablesList *var_list,
700 int recur,
char *
address,
size_t address_length)
704 int o_set = 0, n_set = 0, d_set = 0;
706 const char *rule_var_address = NULL;
707 char *temp_rule_var_address = NULL;
711 "limit reached (max 64)");
715 SCLogDebug(
"s %s negate %s", s, negate ?
"true" :
"false");
717 size_t size = strlen(s);
718 for (u = 0, x = 0; u < size && x < address_length; u++) {
719 if (x == (address_length - 1)) {
721 " limit for the supplied address. Invalidating sig. "
722 "Please file a bug report on this.");
728 if (!o_set && s[u] ==
'!') {
731 }
else if (s[u] ==
'[') {
737 }
else if (s[u] ==
']') {
742 if (((negate + n_set) % 2) == 0) {
746 if (DetectAddressParse2(
de_ctx, gh, ghn,
address, (negate + n_set) % 2, var_list, recur) < 0)
759 if (DetectAddressParse2(
de_ctx, &tmp_gh, &tmp_ghn,
address, 0, var_list, recur) < 0) {
769 for (tmp_ad = tmp_gh.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
773 for (tmp_ad = tmp_ghn.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
777 for (tmp_ad = tmp_gh.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
781 for (tmp_ad = tmp_ghn.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
795 for (tmp_ad = tmp_gh.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
798 if (tmp_ad2 == NULL) {
804 DetectAddressInsert(NULL, ghn, tmp_ad2);
808 for (tmp_ad = tmp_gh.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
811 if (tmp_ad2 == NULL) {
817 DetectAddressInsert(NULL, ghn, tmp_ad2);
825 }
else if (depth == 0 && s[u] ==
',') {
828 }
else if (d_set == 1) {
833 if (rule_var_address == NULL)
836 if (strlen(rule_var_address) == 0) {
838 "to nothing. This is likely a misconfiguration. "
839 "Note that a negated address needs to be quoted, "
840 "\"!$HOME_NET\" instead of !$HOME_NET. See issue #295.",
845 SCLogDebug(
"rule_var_address %s", rule_var_address);
846 if ((negate + n_set) % 2) {
847 temp_rule_var_address =
SCMalloc(strlen(rule_var_address) + 3);
848 if (
unlikely(temp_rule_var_address == NULL))
850 snprintf(temp_rule_var_address, strlen(rule_var_address) + 3,
851 "[%s]", rule_var_address);
853 temp_rule_var_address =
SCStrdup(rule_var_address);
854 if (
unlikely(temp_rule_var_address == NULL))
858 if (DetectAddressParse2(
de_ctx, gh, ghn, temp_rule_var_address,
859 (negate + n_set) % 2, var_list, recur) < 0) {
860 if (temp_rule_var_address != rule_var_address)
861 SCFree(temp_rule_var_address);
866 SCFree(temp_rule_var_address);
870 if (!((negate + n_set) % 2)) {
872 if (DetectAddressSetup(gh,
address) < 0)
876 if (DetectAddressSetup(ghn,
address) < 0)
882 }
else if (depth == 0 && s[u] ==
'$') {
884 }
else if (depth == 0 && u == size - 1) {
885 if (x == address_length) {
894 "groups declaration. This is likely a misconfiguration.");
901 if (rule_var_address == NULL)
904 if (strlen(rule_var_address) == 0) {
906 "to nothing. This is likely a misconfiguration. "
907 "Note that a negated address needs to be quoted, "
908 "\"!$HOME_NET\" instead of !$HOME_NET. See issue #295.",
913 SCLogDebug(
"rule_var_address %s", rule_var_address);
914 if ((negate + n_set) % 2) {
915 temp_rule_var_address =
SCMalloc(strlen(rule_var_address) + 3);
916 if (
unlikely(temp_rule_var_address == NULL))
918 snprintf(temp_rule_var_address, strlen(rule_var_address) + 3,
919 "[%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);
1356 if (map->
string == NULL) {
1402 SCLogDebug(
"DetectAddressParse can not be run with NULL address");
1408 SCLogDebug(
"DetectAddressHeadInit for ghn failed");
1412 int r = DetectAddressParse2(
de_ctx, gh, ghn,
str, 0, NULL, 0);
1414 SCLogDebug(
"DetectAddressParse2 returned %d", r);
1415 DetectAddressHeadFree(ghn);
1427 DetectAddressHeadFree(ghn);
1432 DetectAddressHeadFree(ghn);
1433 return contains_negation ? 1 : 0;
1437 const char *
string,
bool *contains_negation)
1454 DetectAddressHeadFree(
head);
1456 }
else if (r == 1) {
1457 *contains_negation =
true;
1459 *contains_negation =
false;
1463 DetectAddressHeadFree(
head);
1482 DetectAddressCleanupList(gh->
ipv4_head);
1486 DetectAddressCleanupList(gh->
ipv6_head);
1594 uint16_t addrs_cnt,
const Address *a)
1598 if (addrs == NULL || addrs_cnt == 0) {
1602 uint32_t match_addr =
SCNtohl(a->addr_data32[0]);
1603 for (uint16_t idx = 0; idx < addrs_cnt; idx++) {
1604 if (match_addr >= addrs[idx].ip && match_addr <= addrs[idx].ip2) {
1627 uint16_t addrs_cnt,
const Address *a)
1631 if (addrs == NULL || addrs_cnt == 0) {
1635 uint32_t match_addr[4];
1636 match_addr[0] =
SCNtohl(a->addr_data32[0]);
1637 match_addr[1] =
SCNtohl(a->addr_data32[1]);
1638 match_addr[2] =
SCNtohl(a->addr_data32[2]);
1639 match_addr[3] =
SCNtohl(a->addr_data32[3]);
1644 for (uint16_t idx = 0; idx < addrs_cnt; idx++) {
1645 uint16_t result1 = 0, result2 = 0;
1648 if (0 == memcmp(match_addr, addrs[idx].ip,
sizeof(match_addr))) {
1651 if (0 == memcmp(match_addr, addrs[idx].ip2,
sizeof(match_addr))) {
1658 for (
int i = 0; i < 4; i++) {
1659 if (match_addr[i] > addrs[idx].ip[i]) {
1663 if (match_addr[i] < addrs[idx].ip[i]) {
1676 for (
int i = 0; i < 4; i++) {
1677 if (match_addr[i] < addrs[idx].ip2[i]) {
1681 if (match_addr[i] > addrs[idx].ip2[i]) {
1690 if (result1 == 1 && result2 == 1)
1746 SCLogDebug(
"What other address type can we have :-/");
1769 char ip[16], mask[16];
1771 memcpy(&in, &gr->
ip.addr_data32[0],
sizeof(in));
1772 PrintInet(AF_INET, &in, ip,
sizeof(ip));
1773 memcpy(&in, &gr->
ip2.addr_data32[0],
sizeof(in));
1774 PrintInet(AF_INET, &in, mask,
sizeof(mask));
1778 }
else if (gr->
ip.
family == AF_INET6) {
1779 struct in6_addr in6;
1780 char ip[66], mask[66];
1782 memcpy(&in6, &gr->
ip.addr_data32,
sizeof(in6));
1783 PrintInet(AF_INET6, &in6, ip,
sizeof(ip));
1784 memcpy(&in6, &gr->
ip2.addr_data32,
sizeof(in6));
1785 PrintInet(AF_INET6, &in6, mask,
sizeof(mask));
1815 if (a->
family == AF_INET) {
1818 }
else if (a->
family == AF_INET6) {
1823 for ( ; g != NULL; g = g->
next) {
1824 if (DetectAddressMatch(g,a) == 1) {
1836 static bool UTHValidateDetectAddress(
DetectAddress *ad,
const char *one,
const char *two)
1838 char str1[46] =
"", str2[46] =
"";
1845 PrintInet(AF_INET, (
const void *)&ad->
ip.addr_data32[0], str1,
sizeof(str1));
1847 PrintInet(AF_INET, (
const void *)&ad->
ip2.addr_data32[0], str2,
sizeof(str2));
1850 if (strcmp(str1, one) != 0) {
1855 if (strcmp(str2, two) != 0) {
1864 PrintInet(AF_INET6, (
const void *)&ad->
ip.addr_data32[0], str1,
sizeof(str1));
1866 PrintInet(AF_INET6, (
const void *)&ad->
ip2.addr_data32[0], str2,
sizeof(str2));
1869 if (strcmp(str1, one) != 0) {
1874 if (strcmp(str2, two) != 0) {
1893 int expect = nranges;
1903 while (have < expect) {
1905 printf(
"bad head: have %d ranges, expected %d: ", have, expect);
1909 if (!UTHValidateDetectAddress(ad, expectations[have].one, expectations[have].two))
1919 static int AddressTestParse01(
void)
1931 static int AddressTestParse02(
void)
1937 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909060) ||
1938 dd->
ip.addr_data32[0] !=
SCNtohl(16909060)) {
1942 printf(
"ip %"PRIu32
", ip2 %"PRIu32
"\n", dd->
ip.addr_data32[0], dd->
ip2.addr_data32[0]);
1950 static int AddressTestParse03(
void)
1952 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4/255.255.255.0");
1962 static int AddressTestParse04(
void)
1964 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4/255.255.255.0");
1967 char left[16], right[16];
1968 PrintInet(AF_INET, (
const void *)&dd->
ip.addr_data32[0], left,
sizeof(left));
1969 PrintInet(AF_INET, (
const void *)&dd->
ip2.addr_data32[0], right,
sizeof(right));
1981 static int AddressTestParse04bug5081(
void)
1983 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.64/26");
1986 char left[16], right[16];
1987 PrintInet(AF_INET, (
const void *)&dd->
ip.addr_data32[0], left,
sizeof(left));
1988 PrintInet(AF_INET, (
const void *)&dd->
ip2.addr_data32[0], right,
sizeof(right));
1997 static int AddressTestParse05(
void)
2009 static int AddressTestParse06(
void)
2015 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909311) ||
2016 dd->
ip.addr_data32[0] !=
SCNtohl(16909056)) {
2027 static int AddressTestParse07(
void)
2039 static int AddressTestParse08(
void)
2045 if (dd->
ip.addr_data32[0] !=
SCNtohl(536870912) || dd->
ip.addr_data32[1] != 0x00000000 ||
2046 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2048 dd->
ip2.addr_data32[0] !=
SCNtohl(1073741823) || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2049 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2061 static int AddressTestParse09(
void)
2063 DetectAddress *dd = DetectAddressParseSingle(
"2001::1/128");
2073 static int AddressTestParse10(
void)
2079 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2080 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2082 dd->
ip2.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip2.addr_data32[1] != 0x00000000 ||
2083 dd->
ip2.addr_data32[2] != 0x00000000 || dd->
ip2.addr_data32[3] != 0x00000000) {
2095 static int AddressTestParse11(
void)
2107 static int AddressTestParse12(
void)
2113 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2114 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2117 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2128 static int AddressTestParse13(
void)
2140 static int AddressTestParse14(
void)
2146 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2147 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2149 dd->
ip2.addr_data32[0] !=
SCNtohl(537001983) || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2150 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2161 static int AddressTestParse15(
void)
2173 static int AddressTestParse16(
void)
2179 if (dd->
ip.addr_data32[0] != 0x00000000 || dd->
ip.addr_data32[1] != 0x00000000 ||
2180 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2182 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2183 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2194 static int AddressTestParse17(
void)
2196 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4-1.2.3.6");
2206 static int AddressTestParse18(
void)
2209 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4-1.2.3.6");
2212 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909062) ||
2213 dd->
ip.addr_data32[0] !=
SCNtohl(16909060)) {
2224 static int AddressTestParse19(
void)
2226 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.6-1.2.3.4");
2236 static int AddressTestParse20(
void)
2238 DetectAddress *dd = DetectAddressParseSingle(
"2001::1-2001::4");
2248 static int AddressTestParse21(
void)
2251 DetectAddress *dd = DetectAddressParseSingle(
"2001::1-2001::4");
2254 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2255 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] !=
SCNtohl(1) ||
2257 dd->
ip2.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip2.addr_data32[1] != 0x00000000 ||
2258 dd->
ip2.addr_data32[2] != 0x00000000 || dd->
ip2.addr_data32[3] !=
SCNtohl(4)) {
2269 static int AddressTestParse22(
void)
2271 DetectAddress *dd = DetectAddressParseSingle(
"2001::4-2001::1");
2281 static int AddressTestParse23(
void)
2287 DetectAddressHeadFree(gh);
2291 static int AddressTestParse24(
void)
2297 DetectAddressHeadFree(gh);
2301 static int AddressTestParse25(
void)
2307 DetectAddressHeadFree(gh);
2312 static int AddressTestParse26(
void)
2318 "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["
2320 "]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]"
2323 DetectAddressHeadFree(gh);
2324 gh = DetectAddressHeadInit();
2328 "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["
2330 "]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]"
2333 DetectAddressHeadFree(gh);
2337 static int AddressTestParse27(
void)
2339 DetectAddress *dd = DetectAddressParseSingle(
"!192.168.0.1");
2349 static int AddressTestParse28(
void)
2356 dd->
ip.addr_data32[0] ==
SCNtohl(16909060)) {
2367 static int AddressTestParse29(
void)
2369 DetectAddress *dd = DetectAddressParseSingle(
"!1.2.3.0/24");
2379 static int AddressTestParse30(
void)
2382 DetectAddress *dd = DetectAddressParseSingle(
"!1.2.3.4/24");
2386 dd->
ip.addr_data32[0] ==
SCNtohl(16909056) &&
2387 dd->
ip2.addr_data32[0] ==
SCNtohl(16909311)) {
2401 static int AddressTestParse31(
void)
2413 static int AddressTestParse32(
void)
2425 static int AddressTestParse33(
void)
2432 dd->
ip.addr_data32[0] ==
SCNtohl(536936448) && dd->
ip.addr_data32[1] == 0x00000000 &&
2433 dd->
ip.addr_data32[2] == 0x00000000 && dd->
ip.addr_data32[3] ==
SCNtohl(1)) {
2444 static int AddressTestParse34(
void)
2456 static int AddressTestParse35(
void)
2463 dd->
ip.addr_data32[0] ==
SCNtohl(536936448) && dd->
ip.addr_data32[1] == 0x00000000 &&
2464 dd->
ip.addr_data32[2] == 0x00000000 && dd->
ip.addr_data32[3] == 0x00000000 &&
2466 dd->
ip2.addr_data32[0] ==
SCNtohl(537001983) && dd->
ip2.addr_data32[1] == 0xFFFFFFFF &&
2467 dd->
ip2.addr_data32[2] == 0xFFFFFFFF && dd->
ip2.addr_data32[3] == 0xFFFFFFFF) {
2478 static int AddressTestParse36(
void)
2484 if (dd->
ip.addr_data32[0] !=
SCNtohl(0xFFFF0000) || dd->
ip.addr_data32[1] != 0x00000000 ||
2485 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2487 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2488 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2502 static int AddressTestParse37(
void)
2508 if (dd->
ip.addr_data32[0] != 0x00000000 || dd->
ip.addr_data32[1] != 0x00000000 ||
2509 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2511 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2512 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2525 static int AddressTestMatch01(
void)
2532 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2534 memset(&a, 0,
sizeof(
Address));
2536 a.addr_data32[0] = in.s_addr;
2538 dd = DetectAddressParseSingle(
"1.2.3.4/24");
2540 if (DetectAddressMatch(dd, &a) == 0)
2550 static int AddressTestMatch02(
void)
2557 if (inet_pton(AF_INET,
"1.2.3.127", &in) != 1)
2559 memset(&a, 0,
sizeof(
Address));
2561 a.addr_data32[0] = in.s_addr;
2563 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2565 if (DetectAddressMatch(dd, &a) == 0)
2575 static int AddressTestMatch03(
void)
2582 if (inet_pton(AF_INET,
"1.2.3.128", &in) != 1)
2584 memset(&a, 0,
sizeof(
Address));
2586 a.addr_data32[0] = in.s_addr;
2588 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2590 if (DetectAddressMatch(dd, &a) == 1)
2600 static int AddressTestMatch04(
void)
2607 if (inet_pton(AF_INET,
"1.2.2.255", &in) != 1)
2609 memset(&a, 0,
sizeof(
Address));
2611 a.addr_data32[0] = in.s_addr;
2613 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2615 if (DetectAddressMatch(dd, &a) == 1)
2625 static int AddressTestMatch05(
void)
2632 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2634 memset(&a, 0,
sizeof(
Address));
2636 a.addr_data32[0] = in.s_addr;
2638 dd = DetectAddressParseSingle(
"1.2.3.4/32");
2640 if (DetectAddressMatch(dd, &a) == 0)
2650 static int AddressTestMatch06(
void)
2657 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2659 memset(&a, 0,
sizeof(
Address));
2661 a.addr_data32[0] = in.s_addr;
2663 dd = DetectAddressParseSingle(
"0.0.0.0/0.0.0.0");
2665 if (DetectAddressMatch(dd, &a) == 0)
2675 static int AddressTestMatch07(
void)
2679 struct in6_addr in6;
2682 if (inet_pton(AF_INET6,
"2001::1", &in6) != 1)
2684 memset(&a, 0,
sizeof(
Address));
2685 a.family = AF_INET6;
2686 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2688 dd = DetectAddressParseSingle(
"2001::/3");
2690 if (DetectAddressMatch(dd, &a) == 0)
2700 static int AddressTestMatch08(
void)
2704 struct in6_addr in6;
2707 if (inet_pton(AF_INET6,
"1999:ffff:ffff:ffff:ffff:ffff:ffff:ffff", &in6) != 1)
2709 memset(&a, 0,
sizeof(
Address));
2710 a.family = AF_INET6;
2711 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2713 dd = DetectAddressParseSingle(
"2001::/3");
2715 if (DetectAddressMatch(dd, &a) == 1)
2725 static int AddressTestMatch09(
void)
2729 struct in6_addr in6;
2732 if (inet_pton(AF_INET6,
"2001::2", &in6) != 1)
2734 memset(&a, 0,
sizeof(
Address));
2735 a.family = AF_INET6;
2736 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2738 dd = DetectAddressParseSingle(
"2001::1/128");
2740 if (DetectAddressMatch(dd, &a) == 1)
2750 static int AddressTestMatch10(
void)
2754 struct in6_addr in6;
2757 if (inet_pton(AF_INET6,
"2001::2", &in6) != 1)
2759 memset(&a, 0,
sizeof(
Address));
2760 a.family = AF_INET6;
2761 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2763 dd = DetectAddressParseSingle(
"2001::1/126");
2765 if (DetectAddressMatch(dd, &a) == 0)
2775 static int AddressTestMatch11(
void)
2779 struct in6_addr in6;
2782 if (inet_pton(AF_INET6,
"2001::3", &in6) != 1)
2784 memset(&a, 0,
sizeof(
Address));
2785 a.family = AF_INET6;
2786 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2788 dd = DetectAddressParseSingle(
"2001::1/127");
2790 if (DetectAddressMatch(dd, &a) == 1)
2800 static int AddressTestCmp01(
void)
2805 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2806 if (da == NULL)
goto error;
2807 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2808 if (db == NULL)
goto error;
2823 static int AddressTestCmp02(
void)
2828 da = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2829 if (da == NULL)
goto error;
2830 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2831 if (db == NULL)
goto error;
2846 static int AddressTestCmp03(
void)
2851 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2852 if (da == NULL)
goto error;
2853 db = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2854 if (db == NULL)
goto error;
2869 static int AddressTestCmp04(
void)
2874 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2875 if (da == NULL)
goto error;
2876 db = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2877 if (db == NULL)
goto error;
2892 static int AddressTestCmp05(
void)
2897 da = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2898 if (da == NULL)
goto error;
2899 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2900 if (db == NULL)
goto error;
2915 static int AddressTestCmp06(
void)
2920 da = DetectAddressParseSingle(
"192.168.1.0/255.255.0.0");
2921 if (da == NULL)
goto error;
2922 db = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2923 if (db == NULL)
goto error;
2938 static int AddressTestCmpIPv407(
void)
2943 da = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2944 if (da == NULL)
goto error;
2945 db = DetectAddressParseSingle(
"192.168.1.128-192.168.2.128");
2946 if (db == NULL)
goto error;
2961 static int AddressTestCmpIPv408(
void)
2966 da = DetectAddressParseSingle(
"192.168.1.128-192.168.2.128");
2967 if (da == NULL)
goto error;
2968 db = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2969 if (db == NULL)
goto error;
2984 static int AddressTestCmp07(
void)
2989 da = DetectAddressParseSingle(
"2001::/3");
2990 if (da == NULL)
goto error;
2991 db = DetectAddressParseSingle(
"2001::1/3");
2992 if (db == NULL)
goto error;
3007 static int AddressTestCmp08(
void)
3012 da = DetectAddressParseSingle(
"2001::/3");
3013 if (da == NULL)
goto error;
3014 db = DetectAddressParseSingle(
"2001::/8");
3015 if (db == NULL)
goto error;
3030 static int AddressTestCmp09(
void)
3035 da = DetectAddressParseSingle(
"2001::/8");
3036 if (da == NULL)
goto error;
3037 db = DetectAddressParseSingle(
"2001::/3");
3038 if (db == NULL)
goto error;
3053 static int AddressTestCmp10(
void)
3058 da = DetectAddressParseSingle(
"2001:1:2:3:0:0:0:0/64");
3059 if (da == NULL)
goto error;
3060 db = DetectAddressParseSingle(
"2001:1:2:4:0:0:0:0/64");
3061 if (db == NULL)
goto error;
3076 static int AddressTestCmp11(
void)
3081 da = DetectAddressParseSingle(
"2001:1:2:4:0:0:0:0/64");
3082 if (da == NULL)
goto error;
3083 db = DetectAddressParseSingle(
"2001:1:2:3:0:0:0:0/64");
3084 if (db == NULL)
goto error;
3099 static int AddressTestCmp12(
void)
3104 da = DetectAddressParseSingle(
"2001:1:2:3:1:0:0:0/64");
3105 if (da == NULL)
goto error;
3106 db = DetectAddressParseSingle(
"2001:1:2:3:2:0:0:0/64");
3107 if (db == NULL)
goto error;
3122 static int AddressTestAddressGroupSetup01(
void)
3132 DetectAddressHeadFree(gh);
3137 static int AddressTestAddressGroupSetup02(
void)
3147 DetectAddressHeadFree(gh);
3152 static int AddressTestAddressGroupSetup03(
void)
3163 if (r == 0 && gh->
ipv4_head != prev_head &&
3169 DetectAddressHeadFree(gh);
3174 static int AddressTestAddressGroupSetup04(
void)
3185 if (r == 0 && gh->
ipv4_head != prev_head &&
3197 DetectAddressHeadFree(gh);
3202 static int AddressTestAddressGroupSetup05(
void)
3213 if (r == 0 && gh->
ipv4_head == prev_head &&
3225 DetectAddressHeadFree(gh);
3230 static int AddressTestAddressGroupSetup06(
void)
3241 if (r == 0 && gh->
ipv4_head == prev_head &&
3247 DetectAddressHeadFree(gh);
3252 static int AddressTestAddressGroupSetup07(
void)
3268 DetectAddressHeadFree(gh);
3273 static int AddressTestAddressGroupSetup08(
void)
3289 DetectAddressHeadFree(gh);
3294 static int AddressTestAddressGroupSetup09(
void)
3310 DetectAddressHeadFree(gh);
3315 static int AddressTestAddressGroupSetup10(
void)
3331 DetectAddressHeadFree(gh);
3336 static int AddressTestAddressGroupSetup11(
void)
3349 *three = two->
next, *four = three->
next,
3359 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3360 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3361 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3362 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3363 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3370 DetectAddressHeadFree(gh);
3375 static int AddressTestAddressGroupSetup12 (
void)
3388 *three = two->
next, *four = three->
next,
3398 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3399 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3400 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3401 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3402 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3409 DetectAddressHeadFree(gh);
3414 static int AddressTestAddressGroupSetup13(
void)
3427 *three = two->
next, *four = three->
next,
3437 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3438 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3439 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3440 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3441 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3448 DetectAddressHeadFree(gh);
3453 static int AddressTestAddressGroupSetupIPv414(
void)
3474 DetectAddressHeadFree(gh);
3479 static int AddressTestAddressGroupSetupIPv415(
void)
3497 DetectAddressHeadFree(gh);
3501 static int AddressTestAddressGroupSetupIPv416(
void)
3519 DetectAddressHeadFree(gh);
3523 static int AddressTestAddressGroupSetup14(
void)
3533 DetectAddressHeadFree(gh);
3538 static int AddressTestAddressGroupSetup15(
void)
3548 DetectAddressHeadFree(gh);
3553 static int AddressTestAddressGroupSetup16(
void)
3564 if (r == 0 && gh->
ipv6_head != prev_head &&
3570 DetectAddressHeadFree(gh);
3575 static int AddressTestAddressGroupSetup17(
void)
3586 if (r == 0 && gh->
ipv6_head != prev_head &&
3598 DetectAddressHeadFree(gh);
3603 static int AddressTestAddressGroupSetup18(
void)
3614 if (r == 0 && gh->
ipv6_head == prev_head &&
3626 DetectAddressHeadFree(gh);
3631 static int AddressTestAddressGroupSetup19(
void)
3642 if (r == 0 && gh->
ipv6_head == prev_head &&
3648 DetectAddressHeadFree(gh);
3653 static int AddressTestAddressGroupSetup20(
void)
3669 DetectAddressHeadFree(gh);
3674 static int AddressTestAddressGroupSetup21(
void)
3690 DetectAddressHeadFree(gh);
3695 static int AddressTestAddressGroupSetup22(
void)
3711 DetectAddressHeadFree(gh);
3716 static int AddressTestAddressGroupSetup23(
void)
3732 DetectAddressHeadFree(gh);
3737 static int AddressTestAddressGroupSetup24(
void)
3750 *three = two->
next, *four = three->
next,
3752 if (one->
ip.addr_data32[0] == 0x00000000 &&
3753 one->
ip.addr_data32[1] == 0x00000000 &&
3754 one->
ip.addr_data32[2] == 0x00000000 &&
3755 one->
ip.addr_data32[3] == 0x00000000 &&
3756 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3757 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3758 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3759 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3761 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3762 two->
ip.addr_data32[1] == 0x00000000 &&
3763 two->
ip.addr_data32[2] == 0x00000000 &&
3764 two->
ip.addr_data32[3] == 0x00000000 &&
3765 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3766 two->
ip2.addr_data32[1] == 0x00000000 &&
3767 two->
ip2.addr_data32[2] == 0x00000000 &&
3770 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3771 three->ip.addr_data32[1] == 0x00000000 &&
3772 three->ip.addr_data32[2] == 0x00000000 &&
3773 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3774 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3775 three->ip2.addr_data32[1] == 0x00000000 &&
3776 three->ip2.addr_data32[2] == 0x00000000 &&
3777 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3779 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3780 four->ip.addr_data32[1] == 0x00000000 &&
3781 four->ip.addr_data32[2] == 0x00000000 &&
3782 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3783 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3784 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3785 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3786 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3788 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3789 five->ip.addr_data32[1] == 0x00000000 &&
3790 five->ip.addr_data32[2] == 0x00000000 &&
3791 five->ip.addr_data32[3] == 0x00000000 &&
3792 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3793 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3794 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3795 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3802 DetectAddressHeadFree(gh);
3807 static int AddressTestAddressGroupSetup25(
void)
3820 *three = two->
next, *four = three->
next,
3822 if (one->
ip.addr_data32[0] == 0x00000000 &&
3823 one->
ip.addr_data32[1] == 0x00000000 &&
3824 one->
ip.addr_data32[2] == 0x00000000 &&
3825 one->
ip.addr_data32[3] == 0x00000000 &&
3826 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3827 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3828 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3829 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3831 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3832 two->
ip.addr_data32[1] == 0x00000000 &&
3833 two->
ip.addr_data32[2] == 0x00000000 &&
3834 two->
ip.addr_data32[3] == 0x00000000 &&
3835 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3836 two->
ip2.addr_data32[1] == 0x00000000 &&
3837 two->
ip2.addr_data32[2] == 0x00000000 &&
3840 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3841 three->ip.addr_data32[1] == 0x00000000 &&
3842 three->ip.addr_data32[2] == 0x00000000 &&
3843 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3844 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3845 three->ip2.addr_data32[1] == 0x00000000 &&
3846 three->ip2.addr_data32[2] == 0x00000000 &&
3847 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3849 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3850 four->ip.addr_data32[1] == 0x00000000 &&
3851 four->ip.addr_data32[2] == 0x00000000 &&
3852 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3853 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3854 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3855 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3856 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3858 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3859 five->ip.addr_data32[1] == 0x00000000 &&
3860 five->ip.addr_data32[2] == 0x00000000 &&
3861 five->ip.addr_data32[3] == 0x00000000 &&
3862 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3863 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3864 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3865 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3872 DetectAddressHeadFree(gh);
3877 static int AddressTestAddressGroupSetup26(
void)
3890 *three = two->
next, *four = three->
next,
3892 if (one->
ip.addr_data32[0] == 0x00000000 &&
3893 one->
ip.addr_data32[1] == 0x00000000 &&
3894 one->
ip.addr_data32[2] == 0x00000000 &&
3895 one->
ip.addr_data32[3] == 0x00000000 &&
3896 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3897 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3898 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3899 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3901 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3902 two->
ip.addr_data32[1] == 0x00000000 &&
3903 two->
ip.addr_data32[2] == 0x00000000 &&
3904 two->
ip.addr_data32[3] == 0x00000000 &&
3905 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3906 two->
ip2.addr_data32[1] == 0x00000000 &&
3907 two->
ip2.addr_data32[2] == 0x00000000 &&
3910 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3911 three->ip.addr_data32[1] == 0x00000000 &&
3912 three->ip.addr_data32[2] == 0x00000000 &&
3913 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3914 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3915 three->ip2.addr_data32[1] == 0x00000000 &&
3916 three->ip2.addr_data32[2] == 0x00000000 &&
3917 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3919 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3920 four->ip.addr_data32[1] == 0x00000000 &&
3921 four->ip.addr_data32[2] == 0x00000000 &&
3922 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3923 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3924 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3925 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3926 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3928 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3929 five->ip.addr_data32[1] == 0x00000000 &&
3930 five->ip.addr_data32[2] == 0x00000000 &&
3931 five->ip.addr_data32[3] == 0x00000000 &&
3932 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3933 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3934 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3935 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3942 DetectAddressHeadFree(gh);
3947 static int AddressTestAddressGroupSetup27(
void)
3957 DetectAddressHeadFree(gh);
3962 static int AddressTestAddressGroupSetup28(
void)
3972 DetectAddressHeadFree(gh);
3977 static int AddressTestAddressGroupSetup29(
void)
3987 DetectAddressHeadFree(gh);
3992 static int AddressTestAddressGroupSetup30(
void)
3998 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]]");
4002 DetectAddressHeadFree(gh);
4007 static int AddressTestAddressGroupSetup31(
void)
4013 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]]]");
4017 DetectAddressHeadFree(gh);
4022 static int AddressTestAddressGroupSetup32(
void)
4028 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]]]]");
4032 DetectAddressHeadFree(gh);
4037 static int AddressTestAddressGroupSetup33(
void)
4047 DetectAddressHeadFree(gh);
4052 static int AddressTestAddressGroupSetup34(
void)
4062 DetectAddressHeadFree(gh);
4067 static int AddressTestAddressGroupSetup35(
void)
4077 DetectAddressHeadFree(gh);
4082 static int AddressTestAddressGroupSetup36 (
void)
4088 int r =
DetectAddressParse(NULL, gh,
"[1.0.0.0/8,[2.0.0.0/8,[3.0.0.0/8,!1.1.1.1]]]");
4092 DetectAddressHeadFree(gh);
4097 static int AddressTestAddressGroupSetup37(
void)
4107 DetectAddressHeadFree(gh);
4112 static int AddressTestAddressGroupSetup38(
void)
4115 {
"0.0.0.0",
"192.167.255.255" },
4116 {
"192.168.14.0",
"192.168.14.255" },
4117 {
"192.169.0.0",
"255.255.255.255" } };
4124 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4128 DetectAddressHeadFree(gh);
4133 static int AddressTestAddressGroupSetup39(
void)
4136 {
"0.0.0.0",
"192.167.255.255" },
4137 {
"192.168.14.0",
"192.168.14.255" },
4138 {
"192.169.0.0",
"255.255.255.255" } };
4145 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4149 DetectAddressHeadFree(gh);
4154 static int AddressTestAddressGroupSetup40(
void)
4157 {
"0.0.0.0",
"192.167.255.255" },
4158 {
"192.168.14.0",
"192.168.14.255" },
4159 {
"192.169.0.0",
"255.255.255.255" } };
4165 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4169 DetectAddressHeadFree(gh);
4174 static int AddressTestAddressGroupSetup41(
void)
4177 {
"0.0.0.0",
"192.167.255.255" },
4178 {
"192.168.14.0",
"192.168.14.255" },
4179 {
"192.169.0.0",
"255.255.255.255" } };
4185 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4189 DetectAddressHeadFree(gh);
4194 static int AddressTestAddressGroupSetup42(
void)
4197 {
"2000:0000:0000:0000:0000:0000:0000:0000",
"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } };
4203 if (UTHValidateDetectAddressHead(gh, 1, expectations))
4207 DetectAddressHeadFree(gh);
4212 static int AddressTestAddressGroupSetup43(
void)
4215 {
"2000:0000:0000:0000:0000:0000:0000:0000",
"2fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" },
4216 {
"3800:0000:0000:0000:0000:0000:0000:0000",
"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } };
4222 if (UTHValidateDetectAddressHead(gh, 2, expectations))
4226 DetectAddressHeadFree(gh);
4231 static int AddressTestAddressGroupSetup44(
void)
4234 {
"3ffe:ffff:7654:feda:1245:ba98:0000:0000",
"3ffe:ffff:7654:feda:1245:ba98:ffff:ffff" }};
4240 if (UTHValidateDetectAddressHead(gh, 1, expectations))
4244 DetectAddressHeadFree(gh);
4249 static int AddressTestAddressGroupSetup45(
void)
4259 DetectAddressHeadFree(gh);
4264 static int AddressTestAddressGroupSetup46(
void)
4267 {
"0.0.0.0",
"192.167.255.255" },
4268 {
"192.168.1.0",
"192.168.1.255" },
4269 {
"192.168.3.0",
"192.168.3.255" },
4270 {
"192.169.0.0",
"255.255.255.255" } };
4274 int r =
DetectAddressParse(NULL, gh,
"[![192.168.0.0/16,![192.168.1.0/24,192.168.3.0/24]]]");
4276 if (UTHValidateDetectAddressHead(gh, 4, expectations))
4280 DetectAddressHeadFree(gh);
4286 static int AddressTestAddressGroupSetup47(
void)
4289 {
"0.0.0.0",
"192.167.255.255" },
4290 {
"192.168.1.0",
"192.168.1.255" },
4291 {
"192.168.3.0",
"192.168.3.255" },
4292 {
"192.168.5.0",
"192.168.5.255" },
4293 {
"192.169.0.0",
"255.255.255.255" } };
4297 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]]");
4299 if (UTHValidateDetectAddressHead(gh, 5, expectations))
4303 DetectAddressHeadFree(gh);
4309 static int AddressTestAddressGroupSetup48(
void)
4312 {
"192.168.0.0",
"192.168.0.255" },
4313 {
"192.168.2.0",
"192.168.2.255" },
4314 {
"192.168.4.0",
"192.168.4.255" },
4315 {
"192.168.6.0",
"192.168.255.255" } };
4319 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]");
4321 if (UTHValidateDetectAddressHead(gh, 4, expectations))
4325 DetectAddressHeadFree(gh);
4330 static int AddressTestCutIPv401(
void)
4333 DetectAddress *a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4335 DetectAddress *b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4338 FAIL_IF(DetectAddressCut(NULL, a, b, &c) == -1);
4346 static int AddressTestCutIPv402(
void)
4349 a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4350 b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4352 if (DetectAddressCut(NULL, a, b, &c) == -1)
4370 static int AddressTestCutIPv403(
void)
4373 a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4374 b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4376 if (DetectAddressCut(NULL, a, b, &c) == -1)
4382 if (a->
ip.addr_data32[0] !=
SCNtohl(16908800) || a->
ip2.addr_data32[0] !=
SCNtohl(16909055))
4384 if (b->
ip.addr_data32[0] !=
SCNtohl(16909056) || b->
ip2.addr_data32[0] !=
SCNtohl(16909060))
4386 if (c->
ip.addr_data32[0] !=
SCNtohl(16909061) || c->
ip2.addr_data32[0] !=
SCNtohl(16909311))
4401 static int AddressTestCutIPv404(
void)
4404 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4405 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.5");
4407 if (DetectAddressCut(NULL, a, b, &c) == -1)
4413 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4415 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909061))
4417 if (c->
ip.addr_data32[0] !=
SCNtohl(16909062) || c->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4433 static int AddressTestCutIPv405(
void)
4436 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4437 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4439 if (DetectAddressCut(NULL, a, b, &c) == -1)
4445 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4447 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4449 if (c->
ip.addr_data32[0] !=
SCNtohl(16909063) || c->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4464 static int AddressTestCutIPv406(
void)
4467 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4468 b = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4470 if (DetectAddressCut(NULL, a, b, &c) == -1)
4476 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4478 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4480 if (c->
ip.addr_data32[0] !=
SCNtohl(16909063) || c->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4495 static int AddressTestCutIPv407(
void)
4498 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.6");
4499 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4501 if (DetectAddressCut(NULL, a, b, &c) == -1)
4507 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4509 if (b->
ip.addr_data32[0] !=
SCNtohl(16909063) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4524 static int AddressTestCutIPv408(
void)
4527 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.9");
4528 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4530 if (DetectAddressCut(NULL, a, b, &c) == -1)
4536 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4538 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4553 static int AddressTestCutIPv409(
void)
4556 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4557 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.6");
4559 if (DetectAddressCut(NULL, a, b, &c) == -1)
4565 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4567 if (b->
ip.addr_data32[0] !=
SCNtohl(16909063) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4582 static int AddressTestCutIPv410(
void)
4585 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4586 b = DetectAddressParseSingle(
"1.2.3.3-1.2.3.9");
4588 if (DetectAddressCut(NULL, a, b, &c) == -1)
4594 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4596 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4599 printf(
"ip %u ip2 %u ", (uint32_t)htonl(a->
ip.addr_data32[0]), (uint32_t)htonl(a->
ip2.addr_data32[0]));
4613 static int AddressTestParseInvalidMask01(
void)
4618 dd = DetectAddressParseSingle(
"192.168.2.0/33");
4626 static int AddressTestParseInvalidMask02(
void)
4631 dd = DetectAddressParseSingle(
"192.168.2.0/255.255.257.0");
4639 static int AddressTestParseInvalidMask03(
void)
4644 dd = DetectAddressParseSingle(
"192.168.2.0/blue");
4652 static int AddressConfVarsTest01(
void)
4654 static const char *dummy_conf_string =
4660 " address-groups:\n"
4662 " HOME_NET: \"any\"\n"
4664 " EXTERNAL_NET: \"!any\"\n"
4668 " HTTP_PORTS: \"any\"\n"
4670 " SHELLCODE_PORTS: \"!any\"\n"
4688 static int AddressConfVarsTest02(
void)
4690 static const char *dummy_conf_string =
4696 " address-groups:\n"
4698 " HOME_NET: \"any\"\n"
4700 " EXTERNAL_NET: \"any\"\n"
4704 " HTTP_PORTS: \"any\"\n"
4706 " SHELLCODE_PORTS: \"!any\"\n"
4724 static int AddressConfVarsTest03(
void)
4726 static const char *dummy_conf_string =
4732 " address-groups:\n"
4734 " HOME_NET: \"any\"\n"
4736 " EXTERNAL_NET: \"!$HOME_NET\"\n"
4740 " HTTP_PORTS: \"any\"\n"
4742 " SHELLCODE_PORTS: \"!$HTTP_PORTS\"\n"
4760 static int AddressConfVarsTest04(
void)
4762 static const char *dummy_conf_string =
4768 " address-groups:\n"
4770 " HOME_NET: \"any\"\n"
4772 " EXTERNAL_NET: \"$HOME_NET\"\n"
4776 " HTTP_PORTS: \"any\"\n"
4778 " SHELLCODE_PORTS: \"$HTTP_PORTS\"\n"
4796 static int AddressConfVarsTest05(
void)
4798 static const char *dummy_conf_string =
4804 " address-groups:\n"
4806 " HOME_NET: \"any\"\n"
4808 " EXTERNAL_NET: [192.168.0.1]\n"
4812 " HTTP_PORTS: \"any\"\n"
4814 " SHELLCODE_PORTS: [80]\n"
4835 static int AddressConfVarsTest06(
void)
4838 static const char *dummy_conf_string =
4844 " address-groups:\n"
4847 "\"[2002:0000:3238:DFE1:63:0000:0000:FEFB,2002: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 "2004:0000:3238:DFE1:63:0000:0000:FEFB,2005:0000:3238:DFE1:63:0000:0000:FEFB,"
4850 "2006:0000:3238:DFE1:63:0000:0000:FEFB,2007: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,"
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]\"\n"
4983 " EXTERNAL_NET: \"any\"\n"
5010 UtRegisterTest(
"AddressTestParse04bug5081", AddressTestParse04bug5081);
5074 AddressTestAddressGroupSetup01);
5076 AddressTestAddressGroupSetup02);
5078 AddressTestAddressGroupSetup03);
5080 AddressTestAddressGroupSetup04);
5082 AddressTestAddressGroupSetup05);
5084 AddressTestAddressGroupSetup06);
5086 AddressTestAddressGroupSetup07);
5088 AddressTestAddressGroupSetup08);
5090 AddressTestAddressGroupSetup09);
5092 AddressTestAddressGroupSetup10);
5094 AddressTestAddressGroupSetup11);
5096 AddressTestAddressGroupSetup12);
5098 AddressTestAddressGroupSetup13);
5100 AddressTestAddressGroupSetupIPv414);
5102 AddressTestAddressGroupSetupIPv415);
5104 AddressTestAddressGroupSetupIPv416);
5107 AddressTestAddressGroupSetup14);
5109 AddressTestAddressGroupSetup15);
5111 AddressTestAddressGroupSetup16);
5113 AddressTestAddressGroupSetup17);
5115 AddressTestAddressGroupSetup18);
5117 AddressTestAddressGroupSetup19);
5119 AddressTestAddressGroupSetup20);
5121 AddressTestAddressGroupSetup21);
5123 AddressTestAddressGroupSetup22);
5125 AddressTestAddressGroupSetup23);
5127 AddressTestAddressGroupSetup24);
5129 AddressTestAddressGroupSetup25);
5131 AddressTestAddressGroupSetup26);
5134 AddressTestAddressGroupSetup27);
5136 AddressTestAddressGroupSetup28);
5138 AddressTestAddressGroupSetup29);
5140 AddressTestAddressGroupSetup30);
5142 AddressTestAddressGroupSetup31);
5144 AddressTestAddressGroupSetup32);
5146 AddressTestAddressGroupSetup33);
5148 AddressTestAddressGroupSetup34);
5150 AddressTestAddressGroupSetup35);
5152 AddressTestAddressGroupSetup36);
5154 AddressTestAddressGroupSetup37);
5156 AddressTestAddressGroupSetup38);
5158 AddressTestAddressGroupSetup39);
5160 AddressTestAddressGroupSetup40);
5162 AddressTestAddressGroupSetup41);
5164 AddressTestAddressGroupSetup42);
5166 AddressTestAddressGroupSetup43);
5168 AddressTestAddressGroupSetup44);
5170 AddressTestAddressGroupSetup45);
5172 AddressTestAddressGroupSetup46);
5174 AddressTestAddressGroupSetup47);
5176 AddressTestAddressGroupSetup48);
5190 AddressTestParseInvalidMask01);
5192 AddressTestParseInvalidMask02);
5194 AddressTestParseInvalidMask03);