52 #define DetectAddressPrint(...)
58 DetectAddressHead *ghn,
const char *s,
int negate, ResolvedVariablesList *var_list,
168 if (newhead->
ip.
family == AF_INET) {
170 }
else if (newhead->
ip.
family == AF_INET6) {
195 if (new->ip.family == AF_INET)
197 else if (new->ip.family == AF_INET6)
228 head = GetHeadPtr(gh,
new);
234 for (cur =
head; cur != NULL; cur = cur->
next) {
250 if (cur->
next == NULL) {
259 if (cur->
prev != NULL)
269 if (SetHeadPtr(gh,
head) < 0)
278 r = DetectAddressCut(
de_ctx, cur,
new, &c);
282 DetectAddressInsert(
de_ctx, gh,
new);
284 DetectAddressInsert(
de_ctx, gh, c);
289 r = DetectAddressCut(
de_ctx, cur,
new, &c);
293 DetectAddressInsert(
de_ctx, gh,
new);
295 DetectAddressInsert(
de_ctx, gh, c);
300 r = DetectAddressCut(
de_ctx, cur,
new, &c);
304 DetectAddressInsert(
de_ctx, gh,
new);
306 DetectAddressInsert(
de_ctx, gh, c);
311 r = DetectAddressCut(
de_ctx, cur,
new,&c);
315 DetectAddressInsert(
de_ctx, gh,
new);
317 DetectAddressInsert(
de_ctx, gh, c);
326 if (SetHeadPtr(gh,
head) < 0) {
354 while (item != NULL && it != NULL) {
364 return item == NULL && it == NULL;
404 if ((strchr(
str,
':')) == NULL) {
410 if ((mask = strchr(ip,
'/')) != NULL) {
412 ip[mask - ip] =
'\0';
414 uint32_t ip4addr = 0;
415 uint32_t netmask = 0;
417 if ((strchr (mask,
'.')) == NULL) {
420 for (
size_t u = 0; u < strlen(mask); u++) {
421 if(!isdigit((
unsigned char)mask[u]))
431 r = inet_pton(AF_INET, mask, &in);
441 "netmask \"%s\" is not usable. Only netmasks that are compatible with "
442 "CIDR notation are supported. See ticket #5168.",
448 r = inet_pton(AF_INET, ip, &in);
454 dd->
ip.addr_data32[0] = dd->
ip2.addr_data32[0] = ip4addr & netmask;
455 dd->
ip2.addr_data32[0] |=~ netmask;
456 }
else if ((ip2 = strchr(ip,
'-')) != NULL) {
461 r = inet_pton(AF_INET, ip, &in);
464 dd->
ip.addr_data32[0] = in.s_addr;
466 r = inet_pton(AF_INET, ip2, &in);
469 dd->
ip2.addr_data32[0] = in.s_addr;
476 r = inet_pton(AF_INET, ip, &in);
480 dd->
ip.addr_data32[0] = in.s_addr;
481 dd->
ip2.addr_data32[0] = in.s_addr;
485 struct in6_addr in6, mask6;
486 uint32_t ip6addr[4], netmask[4];
490 if ((mask = strchr(ip,
'/')) != NULL) {
491 ip[mask - ip] =
'\0';
498 r = inet_pton(AF_INET6, ip, &in6);
501 memcpy(&ip6addr, &in6.s6_addr,
sizeof(ip6addr));
504 memcpy(&netmask, &mask6.s6_addr,
sizeof(netmask));
506 dd->
ip2.addr_data32[0] = dd->
ip.addr_data32[0] = ip6addr[0] & netmask[0];
507 dd->
ip2.addr_data32[1] = dd->
ip.addr_data32[1] = ip6addr[1] & netmask[1];
508 dd->
ip2.addr_data32[2] = dd->
ip.addr_data32[2] = ip6addr[2] & netmask[2];
509 dd->
ip2.addr_data32[3] = dd->
ip.addr_data32[3] = ip6addr[3] & netmask[3];
511 dd->
ip2.addr_data32[0] |=~ netmask[0];
512 dd->
ip2.addr_data32[1] |=~ netmask[1];
513 dd->
ip2.addr_data32[2] |=~ netmask[2];
514 dd->
ip2.addr_data32[3] |=~ netmask[3];
515 }
else if ((ip2 = strchr(ip,
'-')) != NULL) {
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) {
656 int r = DetectAddressInsert(NULL, gh, ad);
693 DetectAddressHead *ghn,
const char *s,
int negate, ResolvedVariablesList *var_list,
694 int recur,
char *
address,
size_t address_length)
698 int o_set = 0, n_set = 0, d_set = 0;
700 const char *rule_var_address = NULL;
701 char *temp_rule_var_address = NULL;
705 "limit reached (max 64)");
709 SCLogDebug(
"s %s negate %s", s, negate ?
"true" :
"false");
711 size_t size = strlen(s);
712 for (u = 0, x = 0; u < size && x < address_length; u++) {
713 if (x == (address_length - 1)) {
715 " limit for the supplied address. Invalidating sig. "
716 "Please file a bug report on this.");
722 if (!o_set && s[u] ==
'!') {
725 }
else if (s[u] ==
'[') {
731 }
else if (s[u] ==
']') {
736 if (((negate + n_set) % 2) == 0) {
740 if (DetectAddressParse2(
de_ctx, gh, ghn,
address, (negate + n_set) % 2, var_list, recur) < 0)
753 if (DetectAddressParse2(
de_ctx, &tmp_gh, &tmp_ghn,
address, 0, var_list, recur) < 0) {
763 for (tmp_ad = tmp_gh.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
767 for (tmp_ad = tmp_ghn.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
771 for (tmp_ad = tmp_gh.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
775 for (tmp_ad = tmp_ghn.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
789 for (tmp_ad = tmp_gh.
ipv4_head; tmp_ad; tmp_ad = tmp_ad->
next) {
792 if (tmp_ad2 == NULL) {
798 DetectAddressInsert(NULL, ghn, tmp_ad2);
802 for (tmp_ad = tmp_gh.
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
805 if (tmp_ad2 == NULL) {
811 DetectAddressInsert(NULL, ghn, tmp_ad2);
819 }
else if (depth == 0 && s[u] ==
',') {
822 }
else if (d_set == 1) {
827 if (rule_var_address == NULL)
830 if (strlen(rule_var_address) == 0) {
832 "to nothing. This is likely a misconfiguration. "
833 "Note that a negated address needs to be quoted, "
834 "\"!$HOME_NET\" instead of !$HOME_NET. See issue #295.",
839 SCLogDebug(
"rule_var_address %s", rule_var_address);
840 if ((negate + n_set) % 2) {
842 const size_t str_size = strlen(rule_var_address) + 3 + 1;
843 temp_rule_var_address =
SCMalloc(str_size);
844 if (
unlikely(temp_rule_var_address == NULL))
846 snprintf(temp_rule_var_address, str_size,
"[%s]", rule_var_address);
848 temp_rule_var_address =
SCStrdup(rule_var_address);
849 if (
unlikely(temp_rule_var_address == NULL))
853 if (DetectAddressParse2(
de_ctx, gh, ghn, temp_rule_var_address,
854 (negate + n_set) % 2, var_list, recur) < 0) {
855 if (temp_rule_var_address != rule_var_address)
856 SCFree(temp_rule_var_address);
861 SCFree(temp_rule_var_address);
865 if (!((negate + n_set) % 2)) {
867 if (DetectAddressSetup(gh,
address) < 0)
871 if (DetectAddressSetup(ghn,
address) < 0)
877 }
else if (depth == 0 && s[u] ==
'$') {
879 }
else if (depth == 0 && u == size - 1) {
880 if (x == address_length) {
889 "groups declaration. This is likely a misconfiguration.");
896 if (rule_var_address == NULL)
899 if (strlen(rule_var_address) == 0) {
901 "to nothing. This is likely a misconfiguration. "
902 "Note that a negated address needs to be quoted, "
903 "\"!$HOME_NET\" instead of !$HOME_NET. See issue #295.",
908 SCLogDebug(
"rule_var_address %s", rule_var_address);
909 if ((negate + n_set) % 2) {
911 const size_t str_size = strlen(rule_var_address) + 3 + 1;
912 temp_rule_var_address =
SCMalloc(str_size);
913 if (
unlikely(temp_rule_var_address == NULL))
915 snprintf(temp_rule_var_address, str_size,
"[%s]", rule_var_address);
917 temp_rule_var_address =
SCStrdup(rule_var_address);
918 if (
unlikely(temp_rule_var_address == NULL))
922 if (DetectAddressParse2(
de_ctx, gh, ghn, temp_rule_var_address,
923 (negate + n_set) % 2, var_list, recur) < 0) {
925 if (temp_rule_var_address != rule_var_address)
926 SCFree(temp_rule_var_address);
930 SCFree(temp_rule_var_address);
932 if (!((negate + n_set) % 2)) {
934 if (DetectAddressSetup(gh,
address) < 0) {
940 if (DetectAddressSetup(ghn,
address) < 0) {
951 "properly closed in \"%s\", %d missing closing brackets (]). "
952 "Note: problem might be in a variable.",
955 }
else if (depth < 0) {
957 "properly opened in \"%s\", %d missing opening brackets ([). "
958 "Note: problem might be in a variable.",
977 DetectAddressHead *ghn,
const char *s,
int negate, ResolvedVariablesList *var_list,
981 #define MAX_ADDRESS_LENGTH 8192
983 size_t address_length = strlen(s);
988 " memory for address parsing.");
991 rc = DetectAddressParseInternal(
992 de_ctx, gh, ghn, s, negate, var_list, recur,
address, address_length);
996 rc = DetectAddressParseInternal(
1043 if (DetectAddressIsCompleteIPSpace(ghn) == 1) {
1045 "Rule address range is NIL. Probably have a !any or "
1046 "an address range that supplies a NULL address range");
1053 r = DetectAddressSetup(gh,
"0.0.0.0/0");
1055 SCLogDebug(
"DetectAddressSetup for 0.0.0.0/0 failed");
1061 r = DetectAddressSetup(gh,
"::/0");
1063 SCLogDebug(
"DetectAddressSetup for ::/0 failed");
1078 r = DetectAddressInsert(NULL, gh, ad);
1094 r = DetectAddressInsert(NULL, gh, ad);
1102 for (tmp_ad = gh->
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
1106 int ipv4_applied = 0;
1107 int ipv6_applied = 0;
1115 for (ag2 = gh->
ipv4_head; ag2 != NULL; ) {
1122 if (ag2->
prev != NULL)
1124 if (ag2->
next != NULL)
1145 for (ag2 = gh->
ipv6_head; ag2 != NULL; ) {
1148 if (ag2->
prev != NULL)
1150 if (ag2->
next != NULL)
1170 for (tmp_ad = gh->
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
1173 for (tmp_ad = ghn->
ipv6_head; tmp_ad; tmp_ad = tmp_ad->
next) {
1182 if (ipv4_applied !=
cnt) {
1184 "could be applied: %d != %d",
1193 if (ipv6_applied !=
cnt) {
1195 "could be applied: %d != %d",
1204 "merging addresses and negated addresses");
1216 SCLogDebug(
"Testing address conf vars for any misconfigured values");
1218 ResolvedVariablesList var_list;
1222 if (address_vars_node == NULL) {
1233 gh = DetectAddressHeadInit();
1237 ghn = DetectAddressHeadInit();
1242 if (seq_node->
val == NULL) {
1243 SCLogError(
"Address var \"%s\" probably has a sequence(something "
1244 "in brackets) value set without any quotes. Please "
1245 "quote it using \"..\".",
1250 int r = DetectAddressParse2(
1251 NULL, gh, ghn, seq_node->
val, 0, &var_list, 0);
1256 SCLogError(
"failed to parse address var \"%s\" with value \"%s\". "
1257 "Please check its syntax",
1258 seq_node->
name, seq_node->
val);
1262 if (DetectAddressIsCompleteIPSpace(ghn)) {
1263 SCLogError(
"address var - \"%s\" has the complete IP space negated "
1264 "with its value \"%s\". Rule address range is NIL. "
1265 "Probably have a !any or an address range that supplies "
1266 "a NULL address range",
1267 seq_node->
name, seq_node->
val);
1271 DetectAddressHeadFree(gh);
1272 DetectAddressHeadFree(ghn);
1279 DetectAddressHeadFree(gh);
1281 DetectAddressHeadFree(ghn);
1293 static uint32_t DetectAddressMapHashFunc(
HashListTable *ht,
void *data, uint16_t datalen)
1304 static char DetectAddressMapCompareFunc(
void *data1, uint16_t len1,
void *data2,
1314 static void DetectAddressMapFreeFunc(
void *data)
1318 DetectAddressHeadFree(map->
address);
1327 DetectAddressMapCompareFunc,
1328 DetectAddressMapFreeFunc);
1352 if (map->
string == NULL) {
1398 SCLogDebug(
"DetectAddressParse can not be run with NULL address");
1404 SCLogDebug(
"DetectAddressHeadInit for ghn failed");
1408 int r = DetectAddressParse2(
de_ctx, gh, ghn,
str, 0, NULL, 0);
1410 SCLogDebug(
"DetectAddressParse2 returned %d", r);
1411 DetectAddressHeadFree(ghn);
1423 DetectAddressHeadFree(ghn);
1428 DetectAddressHeadFree(ghn);
1429 return contains_negation ? 1 : 0;
1433 const char *
string,
bool *contains_negation)
1450 DetectAddressHeadFree(
head);
1452 }
else if (r == 1) {
1453 *contains_negation =
true;
1455 *contains_negation =
false;
1459 DetectAddressHeadFree(
head);
1588 uint16_t addrs_cnt,
const Address *a)
1592 if (addrs == NULL || addrs_cnt == 0) {
1596 uint32_t match_addr =
SCNtohl(a->addr_data32[0]);
1597 for (uint16_t idx = 0; idx < addrs_cnt; idx++) {
1598 if (match_addr >= addrs[idx].ip && match_addr <= addrs[idx].ip2) {
1621 uint16_t addrs_cnt,
const Address *a)
1625 if (addrs == NULL || addrs_cnt == 0) {
1629 uint32_t match_addr[4];
1630 match_addr[0] =
SCNtohl(a->addr_data32[0]);
1631 match_addr[1] =
SCNtohl(a->addr_data32[1]);
1632 match_addr[2] =
SCNtohl(a->addr_data32[2]);
1633 match_addr[3] =
SCNtohl(a->addr_data32[3]);
1638 for (uint16_t idx = 0; idx < addrs_cnt; idx++) {
1639 uint16_t result1 = 0, result2 = 0;
1642 if (0 == memcmp(match_addr, addrs[idx].ip,
sizeof(match_addr))) {
1645 if (0 == memcmp(match_addr, addrs[idx].ip2,
sizeof(match_addr))) {
1652 for (
int i = 0; i < 4; i++) {
1653 if (match_addr[i] > addrs[idx].ip[i]) {
1657 if (match_addr[i] < addrs[idx].ip[i]) {
1670 for (
int i = 0; i < 4; i++) {
1671 if (match_addr[i] < addrs[idx].ip2[i]) {
1675 if (match_addr[i] > addrs[idx].ip2[i]) {
1684 if (result1 == 1 && result2 == 1)
1740 SCLogDebug(
"What other address type can we have :-/");
1763 char ip[16], mask[16];
1765 memcpy(&in, &gr->
ip.addr_data32[0],
sizeof(in));
1766 PrintInet(AF_INET, &in, ip,
sizeof(ip));
1767 memcpy(&in, &gr->
ip2.addr_data32[0],
sizeof(in));
1768 PrintInet(AF_INET, &in, mask,
sizeof(mask));
1772 }
else if (gr->
ip.
family == AF_INET6) {
1773 struct in6_addr in6;
1774 char ip[66], mask[66];
1776 memcpy(&in6, &gr->
ip.addr_data32,
sizeof(in6));
1777 PrintInet(AF_INET6, &in6, ip,
sizeof(ip));
1778 memcpy(&in6, &gr->
ip2.addr_data32,
sizeof(in6));
1779 PrintInet(AF_INET6, &in6, mask,
sizeof(mask));
1807 if (a->
family == AF_INET) {
1810 }
else if (a->
family == AF_INET6) {
1815 for ( ; g != NULL; g = g->
next) {
1816 if (DetectAddressMatch(g,a) == 1) {
1828 static bool UTHValidateDetectAddress(
DetectAddress *ad,
const char *one,
const char *two)
1830 char str1[46] =
"", str2[46] =
"";
1837 PrintInet(AF_INET, (
const void *)&ad->
ip.addr_data32[0], str1,
sizeof(str1));
1839 PrintInet(AF_INET, (
const void *)&ad->
ip2.addr_data32[0], str2,
sizeof(str2));
1842 if (strcmp(str1, one) != 0) {
1847 if (strcmp(str2, two) != 0) {
1856 PrintInet(AF_INET6, (
const void *)&ad->
ip.addr_data32[0], str1,
sizeof(str1));
1858 PrintInet(AF_INET6, (
const void *)&ad->
ip2.addr_data32[0], str2,
sizeof(str2));
1861 if (strcmp(str1, one) != 0) {
1866 if (strcmp(str2, two) != 0) {
1885 int expect = nranges;
1895 while (have < expect) {
1897 printf(
"bad head: have %d ranges, expected %d: ", have, expect);
1901 if (!UTHValidateDetectAddress(ad, expectations[have].one, expectations[have].two))
1911 static int AddressTestParse01(
void)
1923 static int AddressTestParse02(
void)
1929 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909060) ||
1930 dd->
ip.addr_data32[0] !=
SCNtohl(16909060)) {
1934 printf(
"ip %"PRIu32
", ip2 %"PRIu32
"\n", dd->
ip.addr_data32[0], dd->
ip2.addr_data32[0]);
1942 static int AddressTestParse03(
void)
1944 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4/255.255.255.0");
1954 static int AddressTestParse04(
void)
1956 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4/255.255.255.0");
1959 char left[16], right[16];
1960 PrintInet(AF_INET, (
const void *)&dd->
ip.addr_data32[0], left,
sizeof(left));
1961 PrintInet(AF_INET, (
const void *)&dd->
ip2.addr_data32[0], right,
sizeof(right));
1973 static int AddressTestParse04bug5081(
void)
1975 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.64/26");
1978 char left[16], right[16];
1979 PrintInet(AF_INET, (
const void *)&dd->
ip.addr_data32[0], left,
sizeof(left));
1980 PrintInet(AF_INET, (
const void *)&dd->
ip2.addr_data32[0], right,
sizeof(right));
1989 static int AddressTestParse05(
void)
2001 static int AddressTestParse06(
void)
2007 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909311) ||
2008 dd->
ip.addr_data32[0] !=
SCNtohl(16909056)) {
2019 static int AddressTestParse07(
void)
2031 static int AddressTestParse08(
void)
2037 if (dd->
ip.addr_data32[0] !=
SCNtohl(536870912) || dd->
ip.addr_data32[1] != 0x00000000 ||
2038 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2040 dd->
ip2.addr_data32[0] !=
SCNtohl(1073741823) || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2041 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2053 static int AddressTestParse09(
void)
2055 DetectAddress *dd = DetectAddressParseSingle(
"2001::1/128");
2065 static int AddressTestParse10(
void)
2071 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2072 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2074 dd->
ip2.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip2.addr_data32[1] != 0x00000000 ||
2075 dd->
ip2.addr_data32[2] != 0x00000000 || dd->
ip2.addr_data32[3] != 0x00000000) {
2087 static int AddressTestParse11(
void)
2099 static int AddressTestParse12(
void)
2105 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2106 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2109 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2120 static int AddressTestParse13(
void)
2132 static int AddressTestParse14(
void)
2138 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2139 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2141 dd->
ip2.addr_data32[0] !=
SCNtohl(537001983) || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2142 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2153 static int AddressTestParse15(
void)
2165 static int AddressTestParse16(
void)
2171 if (dd->
ip.addr_data32[0] != 0x00000000 || dd->
ip.addr_data32[1] != 0x00000000 ||
2172 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2174 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2175 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2186 static int AddressTestParse17(
void)
2188 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4-1.2.3.6");
2198 static int AddressTestParse18(
void)
2201 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.4-1.2.3.6");
2204 if (dd->
ip2.addr_data32[0] !=
SCNtohl(16909062) ||
2205 dd->
ip.addr_data32[0] !=
SCNtohl(16909060)) {
2216 static int AddressTestParse19(
void)
2218 DetectAddress *dd = DetectAddressParseSingle(
"1.2.3.6-1.2.3.4");
2228 static int AddressTestParse20(
void)
2230 DetectAddress *dd = DetectAddressParseSingle(
"2001::1-2001::4");
2240 static int AddressTestParse21(
void)
2243 DetectAddress *dd = DetectAddressParseSingle(
"2001::1-2001::4");
2246 if (dd->
ip.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip.addr_data32[1] != 0x00000000 ||
2247 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] !=
SCNtohl(1) ||
2249 dd->
ip2.addr_data32[0] !=
SCNtohl(536936448) || dd->
ip2.addr_data32[1] != 0x00000000 ||
2250 dd->
ip2.addr_data32[2] != 0x00000000 || dd->
ip2.addr_data32[3] !=
SCNtohl(4)) {
2261 static int AddressTestParse22(
void)
2263 DetectAddress *dd = DetectAddressParseSingle(
"2001::4-2001::1");
2273 static int AddressTestParse23(
void)
2279 DetectAddressHeadFree(gh);
2283 static int AddressTestParse24(
void)
2289 DetectAddressHeadFree(gh);
2293 static int AddressTestParse25(
void)
2299 DetectAddressHeadFree(gh);
2304 static int AddressTestParse26(
void)
2310 "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["
2312 "]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]"
2315 DetectAddressHeadFree(gh);
2316 gh = DetectAddressHeadInit();
2320 "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["
2322 "]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]"
2325 DetectAddressHeadFree(gh);
2329 static int AddressTestParse27(
void)
2331 DetectAddress *dd = DetectAddressParseSingle(
"!192.168.0.1");
2341 static int AddressTestParse28(
void)
2348 dd->
ip.addr_data32[0] ==
SCNtohl(16909060)) {
2359 static int AddressTestParse29(
void)
2361 DetectAddress *dd = DetectAddressParseSingle(
"!1.2.3.0/24");
2371 static int AddressTestParse30(
void)
2374 DetectAddress *dd = DetectAddressParseSingle(
"!1.2.3.4/24");
2378 dd->
ip.addr_data32[0] ==
SCNtohl(16909056) &&
2379 dd->
ip2.addr_data32[0] ==
SCNtohl(16909311)) {
2393 static int AddressTestParse31(
void)
2405 static int AddressTestParse32(
void)
2417 static int AddressTestParse33(
void)
2424 dd->
ip.addr_data32[0] ==
SCNtohl(536936448) && dd->
ip.addr_data32[1] == 0x00000000 &&
2425 dd->
ip.addr_data32[2] == 0x00000000 && dd->
ip.addr_data32[3] ==
SCNtohl(1)) {
2436 static int AddressTestParse34(
void)
2448 static int AddressTestParse35(
void)
2455 dd->
ip.addr_data32[0] ==
SCNtohl(536936448) && dd->
ip.addr_data32[1] == 0x00000000 &&
2456 dd->
ip.addr_data32[2] == 0x00000000 && dd->
ip.addr_data32[3] == 0x00000000 &&
2458 dd->
ip2.addr_data32[0] ==
SCNtohl(537001983) && dd->
ip2.addr_data32[1] == 0xFFFFFFFF &&
2459 dd->
ip2.addr_data32[2] == 0xFFFFFFFF && dd->
ip2.addr_data32[3] == 0xFFFFFFFF) {
2470 static int AddressTestParse36(
void)
2476 if (dd->
ip.addr_data32[0] !=
SCNtohl(0xFFFF0000) || dd->
ip.addr_data32[1] != 0x00000000 ||
2477 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2479 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2480 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2494 static int AddressTestParse37(
void)
2500 if (dd->
ip.addr_data32[0] != 0x00000000 || dd->
ip.addr_data32[1] != 0x00000000 ||
2501 dd->
ip.addr_data32[2] != 0x00000000 || dd->
ip.addr_data32[3] != 0x00000000 ||
2503 dd->
ip2.addr_data32[0] != 0xFFFFFFFF || dd->
ip2.addr_data32[1] != 0xFFFFFFFF ||
2504 dd->
ip2.addr_data32[2] != 0xFFFFFFFF || dd->
ip2.addr_data32[3] != 0xFFFFFFFF) {
2517 static int AddressTestMatch01(
void)
2524 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2526 memset(&a, 0,
sizeof(
Address));
2528 a.addr_data32[0] = in.s_addr;
2530 dd = DetectAddressParseSingle(
"1.2.3.4/24");
2532 if (DetectAddressMatch(dd, &a) == 0)
2542 static int AddressTestMatch02(
void)
2549 if (inet_pton(AF_INET,
"1.2.3.127", &in) != 1)
2551 memset(&a, 0,
sizeof(
Address));
2553 a.addr_data32[0] = in.s_addr;
2555 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2557 if (DetectAddressMatch(dd, &a) == 0)
2567 static int AddressTestMatch03(
void)
2574 if (inet_pton(AF_INET,
"1.2.3.128", &in) != 1)
2576 memset(&a, 0,
sizeof(
Address));
2578 a.addr_data32[0] = in.s_addr;
2580 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2582 if (DetectAddressMatch(dd, &a) == 1)
2592 static int AddressTestMatch04(
void)
2599 if (inet_pton(AF_INET,
"1.2.2.255", &in) != 1)
2601 memset(&a, 0,
sizeof(
Address));
2603 a.addr_data32[0] = in.s_addr;
2605 dd = DetectAddressParseSingle(
"1.2.3.4/25");
2607 if (DetectAddressMatch(dd, &a) == 1)
2617 static int AddressTestMatch05(
void)
2624 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2626 memset(&a, 0,
sizeof(
Address));
2628 a.addr_data32[0] = in.s_addr;
2630 dd = DetectAddressParseSingle(
"1.2.3.4/32");
2632 if (DetectAddressMatch(dd, &a) == 0)
2642 static int AddressTestMatch06(
void)
2649 if (inet_pton(AF_INET,
"1.2.3.4", &in) != 1)
2651 memset(&a, 0,
sizeof(
Address));
2653 a.addr_data32[0] = in.s_addr;
2655 dd = DetectAddressParseSingle(
"0.0.0.0/0.0.0.0");
2657 if (DetectAddressMatch(dd, &a) == 0)
2667 static int AddressTestMatch07(
void)
2671 struct in6_addr in6;
2674 if (inet_pton(AF_INET6,
"2001::1", &in6) != 1)
2676 memset(&a, 0,
sizeof(
Address));
2677 a.family = AF_INET6;
2678 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2680 dd = DetectAddressParseSingle(
"2001::/3");
2682 if (DetectAddressMatch(dd, &a) == 0)
2692 static int AddressTestMatch08(
void)
2696 struct in6_addr in6;
2699 if (inet_pton(AF_INET6,
"1999:ffff:ffff:ffff:ffff:ffff:ffff:ffff", &in6) != 1)
2701 memset(&a, 0,
sizeof(
Address));
2702 a.family = AF_INET6;
2703 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2705 dd = DetectAddressParseSingle(
"2001::/3");
2707 if (DetectAddressMatch(dd, &a) == 1)
2717 static int AddressTestMatch09(
void)
2721 struct in6_addr in6;
2724 if (inet_pton(AF_INET6,
"2001::2", &in6) != 1)
2726 memset(&a, 0,
sizeof(
Address));
2727 a.family = AF_INET6;
2728 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2730 dd = DetectAddressParseSingle(
"2001::1/128");
2732 if (DetectAddressMatch(dd, &a) == 1)
2742 static int AddressTestMatch10(
void)
2746 struct in6_addr in6;
2749 if (inet_pton(AF_INET6,
"2001::2", &in6) != 1)
2751 memset(&a, 0,
sizeof(
Address));
2752 a.family = AF_INET6;
2753 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2755 dd = DetectAddressParseSingle(
"2001::1/126");
2757 if (DetectAddressMatch(dd, &a) == 0)
2767 static int AddressTestMatch11(
void)
2771 struct in6_addr in6;
2774 if (inet_pton(AF_INET6,
"2001::3", &in6) != 1)
2776 memset(&a, 0,
sizeof(
Address));
2777 a.family = AF_INET6;
2778 memcpy(&a.addr_data32, &in6.s6_addr,
sizeof(in6.s6_addr));
2780 dd = DetectAddressParseSingle(
"2001::1/127");
2782 if (DetectAddressMatch(dd, &a) == 1)
2792 static int AddressTestCmp01(
void)
2797 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2798 if (da == NULL)
goto error;
2799 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2800 if (db == NULL)
goto error;
2815 static int AddressTestCmp02(
void)
2820 da = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2821 if (da == NULL)
goto error;
2822 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2823 if (db == NULL)
goto error;
2838 static int AddressTestCmp03(
void)
2843 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2844 if (da == NULL)
goto error;
2845 db = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2846 if (db == NULL)
goto error;
2861 static int AddressTestCmp04(
void)
2866 da = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2867 if (da == NULL)
goto error;
2868 db = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2869 if (db == NULL)
goto error;
2884 static int AddressTestCmp05(
void)
2889 da = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2890 if (da == NULL)
goto error;
2891 db = DetectAddressParseSingle(
"192.168.0.0/255.255.255.0");
2892 if (db == NULL)
goto error;
2907 static int AddressTestCmp06(
void)
2912 da = DetectAddressParseSingle(
"192.168.1.0/255.255.0.0");
2913 if (da == NULL)
goto error;
2914 db = DetectAddressParseSingle(
"192.168.0.0/255.255.0.0");
2915 if (db == NULL)
goto error;
2930 static int AddressTestCmpIPv407(
void)
2935 da = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2936 if (da == NULL)
goto error;
2937 db = DetectAddressParseSingle(
"192.168.1.128-192.168.2.128");
2938 if (db == NULL)
goto error;
2953 static int AddressTestCmpIPv408(
void)
2958 da = DetectAddressParseSingle(
"192.168.1.128-192.168.2.128");
2959 if (da == NULL)
goto error;
2960 db = DetectAddressParseSingle(
"192.168.1.0/255.255.255.0");
2961 if (db == NULL)
goto error;
2976 static int AddressTestCmp07(
void)
2981 da = DetectAddressParseSingle(
"2001::/3");
2982 if (da == NULL)
goto error;
2983 db = DetectAddressParseSingle(
"2001::1/3");
2984 if (db == NULL)
goto error;
2999 static int AddressTestCmp08(
void)
3004 da = DetectAddressParseSingle(
"2001::/3");
3005 if (da == NULL)
goto error;
3006 db = DetectAddressParseSingle(
"2001::/8");
3007 if (db == NULL)
goto error;
3022 static int AddressTestCmp09(
void)
3027 da = DetectAddressParseSingle(
"2001::/8");
3028 if (da == NULL)
goto error;
3029 db = DetectAddressParseSingle(
"2001::/3");
3030 if (db == NULL)
goto error;
3045 static int AddressTestCmp10(
void)
3050 da = DetectAddressParseSingle(
"2001:1:2:3:0:0:0:0/64");
3051 if (da == NULL)
goto error;
3052 db = DetectAddressParseSingle(
"2001:1:2:4:0:0:0:0/64");
3053 if (db == NULL)
goto error;
3068 static int AddressTestCmp11(
void)
3073 da = DetectAddressParseSingle(
"2001:1:2:4:0:0:0:0/64");
3074 if (da == NULL)
goto error;
3075 db = DetectAddressParseSingle(
"2001:1:2:3:0:0:0:0/64");
3076 if (db == NULL)
goto error;
3091 static int AddressTestCmp12(
void)
3096 da = DetectAddressParseSingle(
"2001:1:2:3:1:0:0:0/64");
3097 if (da == NULL)
goto error;
3098 db = DetectAddressParseSingle(
"2001:1:2:3:2:0:0:0/64");
3099 if (db == NULL)
goto error;
3114 static int AddressTestAddressGroupSetup01(
void)
3124 DetectAddressHeadFree(gh);
3129 static int AddressTestAddressGroupSetup02(
void)
3139 DetectAddressHeadFree(gh);
3144 static int AddressTestAddressGroupSetup03(
void)
3155 if (r == 0 && gh->
ipv4_head != prev_head &&
3161 DetectAddressHeadFree(gh);
3166 static int AddressTestAddressGroupSetup04(
void)
3177 if (r == 0 && gh->
ipv4_head != prev_head &&
3189 DetectAddressHeadFree(gh);
3194 static int AddressTestAddressGroupSetup05(
void)
3205 if (r == 0 && gh->
ipv4_head == prev_head &&
3217 DetectAddressHeadFree(gh);
3222 static int AddressTestAddressGroupSetup06(
void)
3233 if (r == 0 && gh->
ipv4_head == prev_head &&
3239 DetectAddressHeadFree(gh);
3244 static int AddressTestAddressGroupSetup07(
void)
3260 DetectAddressHeadFree(gh);
3265 static int AddressTestAddressGroupSetup08(
void)
3281 DetectAddressHeadFree(gh);
3286 static int AddressTestAddressGroupSetup09(
void)
3302 DetectAddressHeadFree(gh);
3307 static int AddressTestAddressGroupSetup10(
void)
3323 DetectAddressHeadFree(gh);
3328 static int AddressTestAddressGroupSetup11(
void)
3341 *three = two->
next, *four = three->
next,
3351 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3352 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3353 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3354 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3355 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3362 DetectAddressHeadFree(gh);
3367 static int AddressTestAddressGroupSetup12 (
void)
3380 *three = two->
next, *four = three->
next,
3390 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3391 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3392 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3393 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3394 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3401 DetectAddressHeadFree(gh);
3406 static int AddressTestAddressGroupSetup13(
void)
3419 *three = two->
next, *four = three->
next,
3429 if (one->
ip.addr_data32[0] == 0x00000000 && one->
ip2.addr_data32[0] ==
SCNtohl(168430079) &&
3430 two->ip.addr_data32[0] ==
SCNtohl(168430080) && two->ip2.addr_data32[0] ==
SCNtohl(168430089) &&
3431 three->ip.addr_data32[0] ==
SCNtohl(168430090) && three->ip2.addr_data32[0] ==
SCNtohl(168430335) &&
3432 four->ip.addr_data32[0] ==
SCNtohl(168430336) && four->ip2.addr_data32[0] ==
SCNtohl(168430337) &&
3433 five->ip.addr_data32[0] ==
SCNtohl(168430338) && five->ip2.addr_data32[0] == 0xFFFFFFFF) {
3440 DetectAddressHeadFree(gh);
3445 static int AddressTestAddressGroupSetupIPv414(
void)
3466 DetectAddressHeadFree(gh);
3471 static int AddressTestAddressGroupSetupIPv415(
void)
3489 DetectAddressHeadFree(gh);
3493 static int AddressTestAddressGroupSetupIPv416(
void)
3511 DetectAddressHeadFree(gh);
3515 static int AddressTestAddressGroupSetup14(
void)
3525 DetectAddressHeadFree(gh);
3530 static int AddressTestAddressGroupSetup15(
void)
3540 DetectAddressHeadFree(gh);
3545 static int AddressTestAddressGroupSetup16(
void)
3556 if (r == 0 && gh->
ipv6_head != prev_head &&
3562 DetectAddressHeadFree(gh);
3567 static int AddressTestAddressGroupSetup17(
void)
3578 if (r == 0 && gh->
ipv6_head != prev_head &&
3590 DetectAddressHeadFree(gh);
3595 static int AddressTestAddressGroupSetup18(
void)
3606 if (r == 0 && gh->
ipv6_head == prev_head &&
3618 DetectAddressHeadFree(gh);
3623 static int AddressTestAddressGroupSetup19(
void)
3634 if (r == 0 && gh->
ipv6_head == prev_head &&
3640 DetectAddressHeadFree(gh);
3645 static int AddressTestAddressGroupSetup20(
void)
3661 DetectAddressHeadFree(gh);
3666 static int AddressTestAddressGroupSetup21(
void)
3682 DetectAddressHeadFree(gh);
3687 static int AddressTestAddressGroupSetup22(
void)
3703 DetectAddressHeadFree(gh);
3708 static int AddressTestAddressGroupSetup23(
void)
3724 DetectAddressHeadFree(gh);
3729 static int AddressTestAddressGroupSetup24(
void)
3742 *three = two->
next, *four = three->
next,
3744 if (one->
ip.addr_data32[0] == 0x00000000 &&
3745 one->
ip.addr_data32[1] == 0x00000000 &&
3746 one->
ip.addr_data32[2] == 0x00000000 &&
3747 one->
ip.addr_data32[3] == 0x00000000 &&
3748 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3749 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3750 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3751 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3753 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3754 two->
ip.addr_data32[1] == 0x00000000 &&
3755 two->
ip.addr_data32[2] == 0x00000000 &&
3756 two->
ip.addr_data32[3] == 0x00000000 &&
3757 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3758 two->
ip2.addr_data32[1] == 0x00000000 &&
3759 two->
ip2.addr_data32[2] == 0x00000000 &&
3762 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3763 three->ip.addr_data32[1] == 0x00000000 &&
3764 three->ip.addr_data32[2] == 0x00000000 &&
3765 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3766 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3767 three->ip2.addr_data32[1] == 0x00000000 &&
3768 three->ip2.addr_data32[2] == 0x00000000 &&
3769 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3771 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3772 four->ip.addr_data32[1] == 0x00000000 &&
3773 four->ip.addr_data32[2] == 0x00000000 &&
3774 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3775 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3776 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3777 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3778 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3780 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3781 five->ip.addr_data32[1] == 0x00000000 &&
3782 five->ip.addr_data32[2] == 0x00000000 &&
3783 five->ip.addr_data32[3] == 0x00000000 &&
3784 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3785 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3786 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3787 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3794 DetectAddressHeadFree(gh);
3799 static int AddressTestAddressGroupSetup25(
void)
3812 *three = two->
next, *four = three->
next,
3814 if (one->
ip.addr_data32[0] == 0x00000000 &&
3815 one->
ip.addr_data32[1] == 0x00000000 &&
3816 one->
ip.addr_data32[2] == 0x00000000 &&
3817 one->
ip.addr_data32[3] == 0x00000000 &&
3818 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3819 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3820 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3821 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3823 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3824 two->
ip.addr_data32[1] == 0x00000000 &&
3825 two->
ip.addr_data32[2] == 0x00000000 &&
3826 two->
ip.addr_data32[3] == 0x00000000 &&
3827 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3828 two->
ip2.addr_data32[1] == 0x00000000 &&
3829 two->
ip2.addr_data32[2] == 0x00000000 &&
3832 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3833 three->ip.addr_data32[1] == 0x00000000 &&
3834 three->ip.addr_data32[2] == 0x00000000 &&
3835 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3836 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3837 three->ip2.addr_data32[1] == 0x00000000 &&
3838 three->ip2.addr_data32[2] == 0x00000000 &&
3839 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3841 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3842 four->ip.addr_data32[1] == 0x00000000 &&
3843 four->ip.addr_data32[2] == 0x00000000 &&
3844 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3845 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3846 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3847 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3848 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3850 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3851 five->ip.addr_data32[1] == 0x00000000 &&
3852 five->ip.addr_data32[2] == 0x00000000 &&
3853 five->ip.addr_data32[3] == 0x00000000 &&
3854 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3855 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3856 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3857 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3864 DetectAddressHeadFree(gh);
3869 static int AddressTestAddressGroupSetup26(
void)
3882 *three = two->
next, *four = three->
next,
3884 if (one->
ip.addr_data32[0] == 0x00000000 &&
3885 one->
ip.addr_data32[1] == 0x00000000 &&
3886 one->
ip.addr_data32[2] == 0x00000000 &&
3887 one->
ip.addr_data32[3] == 0x00000000 &&
3888 one->
ip2.addr_data32[0] ==
SCNtohl(536870911) &&
3889 one->
ip2.addr_data32[1] == 0xFFFFFFFF &&
3890 one->
ip2.addr_data32[2] == 0xFFFFFFFF &&
3891 one->
ip2.addr_data32[3] == 0xFFFFFFFF &&
3893 two->
ip.addr_data32[0] ==
SCNtohl(536870912) &&
3894 two->
ip.addr_data32[1] == 0x00000000 &&
3895 two->
ip.addr_data32[2] == 0x00000000 &&
3896 two->
ip.addr_data32[3] == 0x00000000 &&
3897 two->
ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3898 two->
ip2.addr_data32[1] == 0x00000000 &&
3899 two->
ip2.addr_data32[2] == 0x00000000 &&
3902 three->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3903 three->ip.addr_data32[1] == 0x00000000 &&
3904 three->ip.addr_data32[2] == 0x00000000 &&
3905 three->ip.addr_data32[3] ==
SCNtohl(4) &&
3906 three->ip2.addr_data32[0] ==
SCNtohl(536936448) &&
3907 three->ip2.addr_data32[1] == 0x00000000 &&
3908 three->ip2.addr_data32[2] == 0x00000000 &&
3909 three->ip2.addr_data32[3] ==
SCNtohl(6) &&
3911 four->ip.addr_data32[0] ==
SCNtohl(536936448) &&
3912 four->ip.addr_data32[1] == 0x00000000 &&
3913 four->ip.addr_data32[2] == 0x00000000 &&
3914 four->ip.addr_data32[3] ==
SCNtohl(7) &&
3915 four->ip2.addr_data32[0] ==
SCNtohl(1073741823) &&
3916 four->ip2.addr_data32[1] == 0xFFFFFFFF &&
3917 four->ip2.addr_data32[2] == 0xFFFFFFFF &&
3918 four->ip2.addr_data32[3] == 0xFFFFFFFF &&
3920 five->ip.addr_data32[0] ==
SCNtohl(1073741824) &&
3921 five->ip.addr_data32[1] == 0x00000000 &&
3922 five->ip.addr_data32[2] == 0x00000000 &&
3923 five->ip.addr_data32[3] == 0x00000000 &&
3924 five->ip2.addr_data32[0] == 0xFFFFFFFF &&
3925 five->ip2.addr_data32[1] == 0xFFFFFFFF &&
3926 five->ip2.addr_data32[2] == 0xFFFFFFFF &&
3927 five->ip2.addr_data32[3] == 0xFFFFFFFF) {
3934 DetectAddressHeadFree(gh);
3939 static int AddressTestAddressGroupSetup27(
void)
3949 DetectAddressHeadFree(gh);
3954 static int AddressTestAddressGroupSetup28(
void)
3964 DetectAddressHeadFree(gh);
3969 static int AddressTestAddressGroupSetup29(
void)
3979 DetectAddressHeadFree(gh);
3984 static int AddressTestAddressGroupSetup30(
void)
3990 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]]");
3994 DetectAddressHeadFree(gh);
3999 static int AddressTestAddressGroupSetup31(
void)
4005 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]]]");
4009 DetectAddressHeadFree(gh);
4014 static int AddressTestAddressGroupSetup32(
void)
4020 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]]]]");
4024 DetectAddressHeadFree(gh);
4029 static int AddressTestAddressGroupSetup33(
void)
4039 DetectAddressHeadFree(gh);
4044 static int AddressTestAddressGroupSetup34(
void)
4054 DetectAddressHeadFree(gh);
4059 static int AddressTestAddressGroupSetup35(
void)
4069 DetectAddressHeadFree(gh);
4074 static int AddressTestAddressGroupSetup36 (
void)
4080 int r =
DetectAddressParse(NULL, gh,
"[1.0.0.0/8,[2.0.0.0/8,[3.0.0.0/8,!1.1.1.1]]]");
4084 DetectAddressHeadFree(gh);
4089 static int AddressTestAddressGroupSetup37(
void)
4099 DetectAddressHeadFree(gh);
4104 static int AddressTestAddressGroupSetup38(
void)
4107 {
"0.0.0.0",
"192.167.255.255" },
4108 {
"192.168.14.0",
"192.168.14.255" },
4109 {
"192.169.0.0",
"255.255.255.255" } };
4116 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4120 DetectAddressHeadFree(gh);
4125 static int AddressTestAddressGroupSetup39(
void)
4128 {
"0.0.0.0",
"192.167.255.255" },
4129 {
"192.168.14.0",
"192.168.14.255" },
4130 {
"192.169.0.0",
"255.255.255.255" } };
4137 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4141 DetectAddressHeadFree(gh);
4146 static int AddressTestAddressGroupSetup40(
void)
4149 {
"0.0.0.0",
"192.167.255.255" },
4150 {
"192.168.14.0",
"192.168.14.255" },
4151 {
"192.169.0.0",
"255.255.255.255" } };
4157 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4161 DetectAddressHeadFree(gh);
4166 static int AddressTestAddressGroupSetup41(
void)
4169 {
"0.0.0.0",
"192.167.255.255" },
4170 {
"192.168.14.0",
"192.168.14.255" },
4171 {
"192.169.0.0",
"255.255.255.255" } };
4177 if (UTHValidateDetectAddressHead(gh, 3, expectations))
4181 DetectAddressHeadFree(gh);
4186 static int AddressTestAddressGroupSetup42(
void)
4189 {
"2000:0000:0000:0000:0000:0000:0000:0000",
"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } };
4195 if (UTHValidateDetectAddressHead(gh, 1, expectations))
4199 DetectAddressHeadFree(gh);
4204 static int AddressTestAddressGroupSetup43(
void)
4207 {
"2000:0000:0000:0000:0000:0000:0000:0000",
"2fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" },
4208 {
"3800:0000:0000:0000:0000:0000:0000:0000",
"3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" } };
4214 if (UTHValidateDetectAddressHead(gh, 2, expectations))
4218 DetectAddressHeadFree(gh);
4223 static int AddressTestAddressGroupSetup44(
void)
4226 {
"3ffe:ffff:7654:feda:1245:ba98:0000:0000",
"3ffe:ffff:7654:feda:1245:ba98:ffff:ffff" }};
4232 if (UTHValidateDetectAddressHead(gh, 1, expectations))
4236 DetectAddressHeadFree(gh);
4241 static int AddressTestAddressGroupSetup45(
void)
4251 DetectAddressHeadFree(gh);
4256 static int AddressTestAddressGroupSetup46(
void)
4259 {
"0.0.0.0",
"192.167.255.255" },
4260 {
"192.168.1.0",
"192.168.1.255" },
4261 {
"192.168.3.0",
"192.168.3.255" },
4262 {
"192.169.0.0",
"255.255.255.255" } };
4266 int r =
DetectAddressParse(NULL, gh,
"[![192.168.0.0/16,![192.168.1.0/24,192.168.3.0/24]]]");
4268 if (UTHValidateDetectAddressHead(gh, 4, expectations))
4272 DetectAddressHeadFree(gh);
4278 static int AddressTestAddressGroupSetup47(
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.168.5.0",
"192.168.5.255" },
4285 {
"192.169.0.0",
"255.255.255.255" } };
4289 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]]");
4291 if (UTHValidateDetectAddressHead(gh, 5, expectations))
4295 DetectAddressHeadFree(gh);
4301 static int AddressTestAddressGroupSetup48(
void)
4304 {
"192.168.0.0",
"192.168.0.255" },
4305 {
"192.168.2.0",
"192.168.2.255" },
4306 {
"192.168.4.0",
"192.168.4.255" },
4307 {
"192.168.6.0",
"192.168.255.255" } };
4311 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]");
4313 if (UTHValidateDetectAddressHead(gh, 4, expectations))
4317 DetectAddressHeadFree(gh);
4322 static int AddressTestCutIPv401(
void)
4325 DetectAddress *a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4327 DetectAddress *b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4330 FAIL_IF(DetectAddressCut(NULL, a, b, &c) == -1);
4338 static int AddressTestCutIPv402(
void)
4341 a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4342 b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4344 if (DetectAddressCut(NULL, a, b, &c) == -1)
4362 static int AddressTestCutIPv403(
void)
4365 a = DetectAddressParseSingle(
"1.2.3.0/255.255.255.0");
4366 b = DetectAddressParseSingle(
"1.2.2.0-1.2.3.4");
4368 if (DetectAddressCut(NULL, a, b, &c) == -1)
4374 if (a->
ip.addr_data32[0] !=
SCNtohl(16908800) || a->
ip2.addr_data32[0] !=
SCNtohl(16909055))
4376 if (b->
ip.addr_data32[0] !=
SCNtohl(16909056) || b->
ip2.addr_data32[0] !=
SCNtohl(16909060))
4378 if (c->
ip.addr_data32[0] !=
SCNtohl(16909061) || c->
ip2.addr_data32[0] !=
SCNtohl(16909311))
4393 static int AddressTestCutIPv404(
void)
4396 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4397 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.5");
4399 if (DetectAddressCut(NULL, a, b, &c) == -1)
4405 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4407 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909061))
4409 if (c->
ip.addr_data32[0] !=
SCNtohl(16909062) || c->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4425 static int AddressTestCutIPv405(
void)
4428 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4429 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4431 if (DetectAddressCut(NULL, a, b, &c) == -1)
4437 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4439 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4441 if (c->
ip.addr_data32[0] !=
SCNtohl(16909063) || c->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4456 static int AddressTestCutIPv406(
void)
4459 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4460 b = DetectAddressParseSingle(
"1.2.3.3-1.2.3.6");
4462 if (DetectAddressCut(NULL, a, b, &c) == -1)
4468 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4470 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4472 if (c->
ip.addr_data32[0] !=
SCNtohl(16909063) || c->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4487 static int AddressTestCutIPv407(
void)
4490 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.6");
4491 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4493 if (DetectAddressCut(NULL, a, b, &c) == -1)
4499 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4501 if (b->
ip.addr_data32[0] !=
SCNtohl(16909063) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4516 static int AddressTestCutIPv408(
void)
4519 a = DetectAddressParseSingle(
"1.2.3.3-1.2.3.9");
4520 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4522 if (DetectAddressCut(NULL, a, b, &c) == -1)
4528 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4530 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4545 static int AddressTestCutIPv409(
void)
4548 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4549 b = DetectAddressParseSingle(
"1.2.3.0-1.2.3.6");
4551 if (DetectAddressCut(NULL, a, b, &c) == -1)
4557 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909062))
4559 if (b->
ip.addr_data32[0] !=
SCNtohl(16909063) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4574 static int AddressTestCutIPv410(
void)
4577 a = DetectAddressParseSingle(
"1.2.3.0-1.2.3.9");
4578 b = DetectAddressParseSingle(
"1.2.3.3-1.2.3.9");
4580 if (DetectAddressCut(NULL, a, b, &c) == -1)
4586 if (a->
ip.addr_data32[0] !=
SCNtohl(16909056) || a->
ip2.addr_data32[0] !=
SCNtohl(16909058))
4588 if (b->
ip.addr_data32[0] !=
SCNtohl(16909059) || b->
ip2.addr_data32[0] !=
SCNtohl(16909065))
4591 printf(
"ip %u ip2 %u ", (uint32_t)htonl(a->
ip.addr_data32[0]), (uint32_t)htonl(a->
ip2.addr_data32[0]));
4605 static int AddressTestParseInvalidMask01(
void)
4610 dd = DetectAddressParseSingle(
"192.168.2.0/33");
4618 static int AddressTestParseInvalidMask02(
void)
4623 dd = DetectAddressParseSingle(
"192.168.2.0/255.255.257.0");
4631 static int AddressTestParseInvalidMask03(
void)
4636 dd = DetectAddressParseSingle(
"192.168.2.0/blue");
4644 static int AddressConfVarsTest01(
void)
4646 static const char *dummy_conf_string =
4652 " address-groups:\n"
4654 " HOME_NET: \"any\"\n"
4656 " EXTERNAL_NET: \"!any\"\n"
4660 " HTTP_PORTS: \"any\"\n"
4662 " SHELLCODE_PORTS: \"!any\"\n"
4680 static int AddressConfVarsTest02(
void)
4682 static const char *dummy_conf_string =
4688 " address-groups:\n"
4690 " HOME_NET: \"any\"\n"
4692 " EXTERNAL_NET: \"any\"\n"
4696 " HTTP_PORTS: \"any\"\n"
4698 " SHELLCODE_PORTS: \"!any\"\n"
4716 static int AddressConfVarsTest03(
void)
4718 static const char *dummy_conf_string =
4724 " address-groups:\n"
4726 " HOME_NET: \"any\"\n"
4728 " EXTERNAL_NET: \"!$HOME_NET\"\n"
4732 " HTTP_PORTS: \"any\"\n"
4734 " SHELLCODE_PORTS: \"!$HTTP_PORTS\"\n"
4752 static int AddressConfVarsTest04(
void)
4754 static const char *dummy_conf_string =
4760 " address-groups:\n"
4762 " HOME_NET: \"any\"\n"
4764 " EXTERNAL_NET: \"$HOME_NET\"\n"
4768 " HTTP_PORTS: \"any\"\n"
4770 " SHELLCODE_PORTS: \"$HTTP_PORTS\"\n"
4788 static int AddressConfVarsTest05(
void)
4790 static const char *dummy_conf_string =
4796 " address-groups:\n"
4798 " HOME_NET: \"any\"\n"
4800 " EXTERNAL_NET: [192.168.0.1]\n"
4804 " HTTP_PORTS: \"any\"\n"
4806 " SHELLCODE_PORTS: [80]\n"
4827 static int AddressConfVarsTest06(
void)
4830 static const char *dummy_conf_string =
4836 " address-groups:\n"
4839 "\"[2002:0000:3238:DFE1:63:0000:0000:FEFB,2002:0000:3238:DFE1:63:0000:0000:FEFB,"
4840 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4841 "2004:0000:3238:DFE1:63:0000:0000:FEFB,2005:0000:3238:DFE1:63:0000:0000:FEFB,"
4842 "2006:0000:3238:DFE1:63:0000:0000:FEFB,2007:0000:3238:DFE1:63:0000:0000:FEFB,"
4843 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4844 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4845 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4846 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4847 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4848 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4849 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4850 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4851 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4852 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4853 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4854 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4855 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4856 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4857 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4858 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4859 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4860 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4861 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4862 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4863 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4864 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4865 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4866 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4867 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4868 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4869 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4870 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4871 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4872 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4873 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4874 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4875 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4876 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4877 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4878 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4879 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4880 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4881 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4882 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4883 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4884 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4885 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4886 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4887 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4888 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4889 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4890 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4891 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4892 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4893 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4894 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4895 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4896 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4897 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4898 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4899 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4900 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4901 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4902 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4903 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4904 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4905 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4906 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4907 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4908 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4909 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4910 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4911 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4912 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4913 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4914 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4915 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4916 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4917 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4918 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4919 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4920 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4921 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4922 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4923 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4924 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4925 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4926 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4927 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4928 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4929 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4930 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4931 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4932 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4933 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4934 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4935 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4936 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4937 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4938 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4939 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4940 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4941 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4942 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4943 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4944 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4945 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4946 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4947 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4948 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4949 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4950 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4951 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4952 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4953 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4954 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4955 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4956 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4957 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4958 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4959 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4960 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4961 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4962 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4963 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4964 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4965 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4966 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4967 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4968 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4969 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4970 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4971 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4972 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB,"
4973 "2002:0000:3238:DFE1:63:0000:0000:FEFB,2003:0000:3238:DFE1:63:0000:0000:FEFB]\"\n"
4975 " EXTERNAL_NET: \"any\"\n"
5002 UtRegisterTest(
"AddressTestParse04bug5081", AddressTestParse04bug5081);
5066 AddressTestAddressGroupSetup01);
5068 AddressTestAddressGroupSetup02);
5070 AddressTestAddressGroupSetup03);
5072 AddressTestAddressGroupSetup04);
5074 AddressTestAddressGroupSetup05);
5076 AddressTestAddressGroupSetup06);
5078 AddressTestAddressGroupSetup07);
5080 AddressTestAddressGroupSetup08);
5082 AddressTestAddressGroupSetup09);
5084 AddressTestAddressGroupSetup10);
5086 AddressTestAddressGroupSetup11);
5088 AddressTestAddressGroupSetup12);
5090 AddressTestAddressGroupSetup13);
5092 AddressTestAddressGroupSetupIPv414);
5094 AddressTestAddressGroupSetupIPv415);
5096 AddressTestAddressGroupSetupIPv416);
5099 AddressTestAddressGroupSetup14);
5101 AddressTestAddressGroupSetup15);
5103 AddressTestAddressGroupSetup16);
5105 AddressTestAddressGroupSetup17);
5107 AddressTestAddressGroupSetup18);
5109 AddressTestAddressGroupSetup19);
5111 AddressTestAddressGroupSetup20);
5113 AddressTestAddressGroupSetup21);
5115 AddressTestAddressGroupSetup22);
5117 AddressTestAddressGroupSetup23);
5119 AddressTestAddressGroupSetup24);
5121 AddressTestAddressGroupSetup25);
5123 AddressTestAddressGroupSetup26);
5126 AddressTestAddressGroupSetup27);
5128 AddressTestAddressGroupSetup28);
5130 AddressTestAddressGroupSetup29);
5132 AddressTestAddressGroupSetup30);
5134 AddressTestAddressGroupSetup31);
5136 AddressTestAddressGroupSetup32);
5138 AddressTestAddressGroupSetup33);
5140 AddressTestAddressGroupSetup34);
5142 AddressTestAddressGroupSetup35);
5144 AddressTestAddressGroupSetup36);
5146 AddressTestAddressGroupSetup37);
5148 AddressTestAddressGroupSetup38);
5150 AddressTestAddressGroupSetup39);
5152 AddressTestAddressGroupSetup40);
5154 AddressTestAddressGroupSetup41);
5156 AddressTestAddressGroupSetup42);
5158 AddressTestAddressGroupSetup43);
5160 AddressTestAddressGroupSetup44);
5162 AddressTestAddressGroupSetup45);
5164 AddressTestAddressGroupSetup46);
5166 AddressTestAddressGroupSetup47);
5168 AddressTestAddressGroupSetup48);
5182 AddressTestParseInvalidMask01);
5184 AddressTestParseInvalidMask02);
5186 AddressTestParseInvalidMask03);