56 for (i = 0; i < 4; i++) {
70 for (i = 0; i < 4; i++) {
94 for (i = 0; i < 4; i++) {
108 for (i = 0; i < 4; i++) {
132 for (i = 0; i < 4; i++) {
133 if (a->addr_data32[i] != b->addr_data32[i])
144 for (i = 0; i < 4; i++) {
259 SCLogDebug(
"Internal Error: should be unreachable\n");
274 static void AddressCutIPv6CopySubOne(uint32_t *a, uint32_t *b)
312 static void AddressCutIPv6CopyAddOne(uint32_t *a, uint32_t *b)
349 static void AddressCutIPv6Copy(uint32_t *a, uint32_t *b)
385 AddressCutIPv6Copy(a_ip1, a->
ip.addr_data32);
386 AddressCutIPv6CopySubOne(b_ip1, a->
ip2.addr_data32);
388 AddressCutIPv6Copy(b_ip1, b->
ip.addr_data32);
389 AddressCutIPv6Copy(a_ip2, b->
ip2.addr_data32);
397 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->
ip.addr_data32);
398 AddressCutIPv6Copy(b_ip2, tmp_c->
ip2.addr_data32);
408 AddressCutIPv6Copy(b_ip1, a->
ip.addr_data32);
409 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
411 AddressCutIPv6Copy(a_ip1, b->
ip.addr_data32);
412 AddressCutIPv6Copy(b_ip2, b->
ip2.addr_data32);
420 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->
ip.addr_data32);
421 AddressCutIPv6Copy(a_ip2, tmp_c->
ip2.addr_data32);
440 AddressCutIPv6Copy(a_ip1, a->
ip.addr_data32);
441 AddressCutIPv6Copy(a_ip2, a->
ip2.addr_data32);
443 AddressCutIPv6CopyAddOne(a_ip2, b->
ip.addr_data32);
444 AddressCutIPv6Copy(b_ip2, b->
ip2.addr_data32);
447 AddressCutIPv6Copy(b_ip1, a->
ip.addr_data32);
448 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
450 AddressCutIPv6Copy(a_ip1, b->
ip.addr_data32);
451 AddressCutIPv6Copy(a_ip2, b->
ip2.addr_data32);
454 AddressCutIPv6Copy(b_ip1, a->
ip.addr_data32);
455 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
457 AddressCutIPv6Copy(a_ip1, b->
ip.addr_data32);
458 AddressCutIPv6Copy(a_ip2, b->
ip2.addr_data32);
466 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->
ip.addr_data32);
467 AddressCutIPv6Copy(b_ip2, tmp_c->
ip2.addr_data32);
487 AddressCutIPv6Copy(b_ip1, a->
ip.addr_data32);
488 AddressCutIPv6Copy(b_ip2, a->
ip2.addr_data32);
490 AddressCutIPv6CopyAddOne(b_ip2, b->
ip.addr_data32);
491 AddressCutIPv6Copy(a_ip2, b->
ip2.addr_data32);
493 AddressCutIPv6Copy(a_ip1, a->
ip.addr_data32);
494 AddressCutIPv6CopySubOne(b_ip1, a->
ip2.addr_data32);
496 AddressCutIPv6Copy(b_ip1, b->
ip.addr_data32);
497 AddressCutIPv6Copy(b_ip2, b->
ip2.addr_data32);
499 AddressCutIPv6Copy(a_ip1, a->
ip.addr_data32);
500 AddressCutIPv6CopySubOne(b_ip1, a->
ip2.addr_data32);
502 AddressCutIPv6Copy(b_ip1, b->
ip.addr_data32);
503 AddressCutIPv6Copy(b_ip2, b->
ip2.addr_data32);
511 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->
ip.addr_data32);
512 AddressCutIPv6Copy(a_ip2, tmp_c->
ip2.addr_data32);
525 DetectAddressData **c)
550 AddressCutIPv6Copy(a_ip1, a->ip);
551 AddressCutIPv6CopySubOne(b_ip1, a->ip2);
553 AddressCutIPv6Copy(b_ip1, b->ip);
554 AddressCutIPv6Copy(a_ip2, b->ip2);
556 DetectAddressData *tmp_c;
557 tmp_c = DetectAddressDataInit();
560 tmp_c->family = AF_INET6;
562 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->ip);
563 AddressCutIPv6Copy(b_ip2, tmp_c->ip2);
573 AddressCutIPv6Copy(b_ip1, a->ip);
574 AddressCutIPv6CopySubOne(a_ip1, a->ip2);
576 AddressCutIPv6Copy(a_ip1, b->ip);
577 AddressCutIPv6Copy(b_ip2, b->ip2);
579 DetectAddressData *tmp_c;
580 tmp_c = DetectAddressDataInit();
583 tmp_c->family = AF_INET6;
585 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->ip);
586 AddressCutIPv6Copy(a_ip2, tmp_c->ip2);
606 AddressCutIPv6Copy(a_ip1, a->ip);
607 AddressCutIPv6Copy(a_ip2, a->ip2);
609 AddressCutIPv6CopyAddOne(a_ip2, b->ip);
610 AddressCutIPv6Copy(b_ip2, b->ip2);
612 AddressCutIPv6Copy(b_ip1, a->ip);
613 AddressCutIPv6CopySubOne(a_ip1, a->ip2);
615 AddressCutIPv6Copy(a_ip1, b->ip);
616 AddressCutIPv6Copy(a_ip2, b->ip2);
618 AddressCutIPv6Copy(b_ip1, a->ip);
619 AddressCutIPv6CopySubOne(a_ip1, a->ip2);
621 AddressCutIPv6Copy(a_ip1, b->ip);
622 AddressCutIPv6Copy(a_ip2, b->ip2);
624 DetectAddressData *tmp_c;
625 tmp_c = DetectAddressDataInit();
629 tmp_c->family = AF_INET6;
631 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->ip);
632 AddressCutIPv6Copy(b_ip2, tmp_c->ip2);
651 AddressCutIPv6Copy(b_ip1, a->ip);
652 AddressCutIPv6Copy(b_ip2, a->ip2);
654 AddressCutIPv6CopyAddOne(b_ip2, b->ip);
655 AddressCutIPv6Copy(a_ip2, b->ip2);
657 AddressCutIPv6Copy(a_ip1, a->ip);
658 AddressCutIPv6CopySubOne(b_ip1, a->ip2);
660 AddressCutIPv6Copy(b_ip1, b->ip);
661 AddressCutIPv6Copy(b_ip2, b->ip2);
663 AddressCutIPv6Copy(a_ip1, a->ip);
664 AddressCutIPv6CopySubOne(b_ip1, a->ip2);
666 AddressCutIPv6Copy(b_ip1, b->ip);
667 AddressCutIPv6Copy(b_ip2, b->ip2);
669 DetectAddressData *tmp_c;
670 tmp_c = DetectAddressDataInit();
673 tmp_c->family = AF_INET6;
675 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->ip);
676 AddressCutIPv6Copy(a_ip2, tmp_c->ip2);
716 uint32_t ip_nul[4] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000 };
717 uint32_t ip_max[4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };
722 if (!(a_ip1[0] == 0x00000000 && a_ip1[1] == 0x00000000 &&
723 a_ip1[2] == 0x00000000 && a_ip1[3] == 0x00000000) &&
724 !(a_ip2[0] == 0xFFFFFFFF && a_ip2[1] == 0xFFFFFFFF &&
725 a_ip2[2] == 0xFFFFFFFF && a_ip2[3] == 0xFFFFFFFF)) {
726 AddressCutIPv6Copy(ip_nul, a->
ip.addr_data32);
727 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
734 AddressCutIPv6CopyAddOne(a_ip2, tmp_b->
ip.addr_data32);
735 AddressCutIPv6Copy(ip_max, tmp_b->
ip2.addr_data32);
737 }
else if ((a_ip1[0] == 0x00000000 && a_ip1[1] == 0x00000000 &&
738 a_ip1[2] == 0x00000000 && a_ip1[3] == 0x00000000) &&
739 !(a_ip2[0] == 0xFFFFFFFF && a_ip2[1] == 0xFFFFFFFF &&
740 a_ip2[2] == 0xFFFFFFFF && a_ip2[3] == 0xFFFFFFFF)) {
741 AddressCutIPv6CopyAddOne(a_ip2, a->
ip.addr_data32);
742 AddressCutIPv6Copy(ip_max, a->
ip2.addr_data32);
743 }
else if (!(a_ip1[0] == 0x00000000 && a_ip1[1] == 0x00000000 &&
744 a_ip1[2] == 0x00000000 && a_ip1[3] == 0x00000000) &&
745 (a_ip2[0] == 0xFFFFFFFF && a_ip2[1] == 0xFFFFFFFF &&
746 a_ip2[2] == 0xFFFFFFFF && a_ip2[3] == 0xFFFFFFFF)) {
747 AddressCutIPv6Copy(ip_nul, a->
ip.addr_data32);
748 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
764 static int AddressTestIPv6Gt01(
void)
768 uint32_t a[4] = { 1, 2, 3, 4 };
769 uint32_t b[4] = { 0, 2, 3, 4 };
777 static int AddressTestIPv6Gt02(
void)
781 uint32_t a[4] = { 0, 2, 3, 4 };
782 uint32_t b[4] = { 1, 2, 3, 4 };
790 static int AddressTestIPv6Gt03(
void)
794 uint32_t a[4] = { 1, 2, 3, 4 };
795 uint32_t b[4] = { 1, 2, 3, 4 };
803 static int AddressTestIPv6Gt04(
void)
807 uint32_t a[4] = { 1, 2, 3, 5 };
808 uint32_t b[4] = { 1, 2, 3, 4 };
816 static int AddressTestIPv6Lt01(
void)
820 uint32_t a[4] = { 0, 2, 3, 4 };
821 uint32_t b[4] = { 1, 2, 3, 4 };
829 static int AddressTestIPv6Lt02(
void)
833 uint32_t a[4] = { 1, 2, 3, 4 };
834 uint32_t b[4] = { 0, 2, 3, 4 };
842 static int AddressTestIPv6Lt03(
void)
846 uint32_t a[4] = { 1, 2, 3, 4 };
847 uint32_t b[4] = { 1, 2, 3, 4 };
855 static int AddressTestIPv6Lt04(
void)
859 uint32_t a[4] = { 1, 2, 3, 4 };
860 uint32_t b[4] = { 1, 2, 3, 5 };
868 static int AddressTestIPv6Eq01(
void)
872 uint32_t a[4] = { 0, 2, 3, 4 };
873 uint32_t b[4] = { 1, 2, 3, 4 };
881 static int AddressTestIPv6Eq02(
void)
885 uint32_t a[4] = { 1, 2, 3, 4 };
886 uint32_t b[4] = { 0, 2, 3, 4 };
894 static int AddressTestIPv6Eq03(
void)
898 uint32_t a[4] = { 1, 2, 3, 4 };
899 uint32_t b[4] = { 1, 2, 3, 4 };
907 static int AddressTestIPv6Eq04(
void)
911 uint32_t a[4] = { 1, 2, 3, 4 };
912 uint32_t b[4] = { 1, 2, 3, 5 };
920 static int AddressTestIPv6Le01(
void)
924 uint32_t a[4] = { 0, 2, 3, 4 };
925 uint32_t b[4] = { 1, 2, 3, 4 };
933 static int AddressTestIPv6Le02(
void)
937 uint32_t a[4] = { 1, 2, 3, 4 };
938 uint32_t b[4] = { 0, 2, 3, 4 };
946 static int AddressTestIPv6Le03(
void)
950 uint32_t a[4] = { 1, 2, 3, 4 };
951 uint32_t b[4] = { 1, 2, 3, 4 };
959 static int AddressTestIPv6Le04(
void)
963 uint32_t a[4] = { 1, 2, 3, 4 };
964 uint32_t b[4] = { 1, 2, 3, 5 };
972 static int AddressTestIPv6Le05(
void)
980 if (inet_pton(AF_INET6,
"1999:ffff:ffff:ffff:ffff:ffff:ffff:ffff", &in6) != 1)
982 memcpy(&a, &in6.s6_addr,
sizeof(in6.s6_addr));
984 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
986 memcpy(&b, &in6.s6_addr,
sizeof(in6.s6_addr));
994 static int AddressTestIPv6Ge01(
void)
998 uint32_t a[4] = { 0, 2, 3, 4 };
999 uint32_t b[4] = { 1, 2, 3, 4 };
1007 static int AddressTestIPv6Ge02(
void)
1011 uint32_t a[4] = { 1, 2, 3, 4 };
1012 uint32_t b[4] = { 0, 2, 3, 4 };
1020 static int AddressTestIPv6Ge03(
void)
1024 uint32_t a[4] = { 1, 2, 3, 4 };
1025 uint32_t b[4] = { 1, 2, 3, 4 };
1033 static int AddressTestIPv6Ge04(
void)
1037 uint32_t a[4] = { 1, 2, 3, 4 };
1038 uint32_t b[4] = { 1, 2, 3, 5 };
1046 static int AddressTestIPv6Ge05(
void)
1052 struct in6_addr in6;
1054 if (inet_pton(AF_INET6,
"1999:ffff:ffff:ffff:ffff:ffff:ffff:ffff", &in6) != 1)
1056 memcpy(&a, &in6.s6_addr,
sizeof(in6.s6_addr));
1058 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1060 memcpy(&b, &in6.s6_addr,
sizeof(in6.s6_addr));
1068 static int AddressTestIPv6SubOne01(
void)
1072 uint32_t a[4], b[4];
1073 struct in6_addr in6;
1075 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1077 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1084 AddressCutIPv6CopySubOne(a, b);
1086 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1088 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1089 if (b[0] == a[0] && b[1] == a[1] &&
1090 b[2] == a[2] && b[3] == a[3]) {
1097 static int AddressTestIPv6SubOne02(
void)
1101 uint32_t a[4], b[4];
1102 struct in6_addr in6;
1104 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1106 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1113 AddressCutIPv6CopySubOne(a, b);
1115 if (inet_pton(AF_INET6,
"1FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1)
1117 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1118 if (b[0] == a[0] && b[1] == a[1] &&
1119 b[2] == a[2] && b[3] == a[3]) {
1126 static int AddressTestIPv6AddOne01(
void)
1130 uint32_t a[4], b[4];
1131 struct in6_addr in6;
1133 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1135 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1142 AddressCutIPv6CopyAddOne(a, b);
1144 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1146 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1147 if (b[0] == a[0] && b[1] == a[1] &&
1148 b[2] == a[2] && b[3] == a[3]) {
1155 static int AddressTestIPv6AddOne02(
void)
1159 uint32_t a[4], b[4];
1160 struct in6_addr in6;
1162 if (inet_pton(AF_INET6,
"1FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1)
1164 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1171 AddressCutIPv6CopyAddOne(a, b);
1173 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1175 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1176 if (b[0] == a[0] && b[1] == a[1] &&
1177 b[2] == a[2] && b[3] == a[3]) {
1184 static int AddressTestIPv6AddressCmp01(
void)
1188 struct in6_addr in6;
1191 if (a == NULL || b == NULL)
1194 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1196 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1197 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1199 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1200 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1202 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1203 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1205 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1208 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1210 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1211 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1213 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1214 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1216 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1217 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1219 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1222 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1224 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1225 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1227 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1228 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1230 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1231 if (inet_pton(AF_INET6,
"2000::11", &in6) != 1)
1233 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1236 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1238 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1239 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1241 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1242 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1244 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1245 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1247 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1250 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1252 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1253 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1255 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1256 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1258 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1259 if (inet_pton(AF_INET6,
"2000::11", &in6) != 1)
1261 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1264 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1266 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1267 if (inet_pton(AF_INET6,
"2000::11", &in6) != 1)
1269 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1270 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1272 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1273 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1275 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1278 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1280 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1281 if (inet_pton(AF_INET6,
"2000::11", &in6) != 1)
1283 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1284 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1286 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1287 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1289 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1292 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1294 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1295 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1297 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1298 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1300 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1301 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1303 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1306 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1308 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1309 if (inet_pton(AF_INET6,
"2000::11", &in6) != 1)
1311 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1312 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1314 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1315 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1317 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1320 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1322 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1323 if (inet_pton(AF_INET6,
"2000::11", &in6) != 1)
1325 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1326 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1328 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1329 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1331 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1334 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1336 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1337 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1339 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1340 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1342 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1343 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1345 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1348 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1350 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1351 if (inet_pton(AF_INET6,
"2000::15", &in6) != 1)
1353 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1354 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1356 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1357 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1359 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1362 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1364 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1365 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1367 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1368 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1370 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1371 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1373 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1376 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1378 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1379 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1381 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1382 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1384 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1385 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1387 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1390 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1392 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1393 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1395 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1396 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1398 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1399 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1401 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1404 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1406 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1407 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1409 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1410 if (inet_pton(AF_INET6,
"2000::15", &in6) != 1)
1412 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1413 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1415 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1418 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1420 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1421 if (inet_pton(AF_INET6,
"2000::15", &in6) != 1)
1423 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1424 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1426 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1427 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1429 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1433 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1435 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1436 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1438 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1439 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1441 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1442 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1444 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1448 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1450 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1451 if (inet_pton(AF_INET6,
"2000::19", &in6) != 1)
1453 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1454 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1456 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1457 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1459 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1462 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1464 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1465 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1467 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1468 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1470 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1471 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1473 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1476 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1478 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1479 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1481 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1482 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1484 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1485 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1487 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1490 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1492 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1493 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1495 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1496 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1498 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1499 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1501 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1504 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1506 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1507 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1509 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1510 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1512 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1513 if (inet_pton(AF_INET6,
"2000::15", &in6) != 1)
1515 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1518 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1520 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1521 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1523 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1524 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1526 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1527 if (inet_pton(AF_INET6,
"2000::15", &in6) != 1)
1529 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1532 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1534 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1535 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1537 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1538 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1540 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1541 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1543 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1546 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1548 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1549 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1551 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1552 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1554 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1555 if (inet_pton(AF_INET6,
"2000::19", &in6) != 1)
1557 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1560 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1562 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1563 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1565 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1566 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1568 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1569 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1571 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1574 if (inet_pton(AF_INET6,
"2000::15", &in6) != 1)
1576 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1577 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1579 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1580 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1582 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1583 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1585 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1588 if (inet_pton(AF_INET6,
"2000::15", &in6) != 1)
1590 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1591 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1593 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1594 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1596 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1597 if (inet_pton(AF_INET6,
"2000::15", &in6) != 1)
1599 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1602 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1604 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1605 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1607 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1608 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1610 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1611 if (inet_pton(AF_INET6,
"2000::10", &in6) != 1)
1613 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1630 static int AddressTestIPv6CutNot01(
void)
1634 struct in6_addr in6;
1640 if (inet_pton(AF_INET6,
"::", &in6) != 1)
1642 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1643 if (inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1)
1645 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1662 static int AddressTestIPv6CutNot02(
void)
1667 struct in6_addr in6;
1675 if (inet_pton(AF_INET6,
"::", &in6) != 1)
1677 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1678 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1680 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1683 result &= (b == NULL);
1685 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1687 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1688 if (inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1)
1690 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1712 static int AddressTestIPv6CutNot03(
void)
1717 struct in6_addr in6;
1725 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1727 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1728 if (inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1)
1730 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1733 result &= (b == NULL);
1735 if (inet_pton(AF_INET6,
"::", &in6) != 1)
1737 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1738 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1740 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1762 static int AddressTestIPv6CutNot04(
void)
1767 struct in6_addr in6;
1775 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1777 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1778 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1780 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1783 if (inet_pton(AF_INET6,
"::", &in6) != 1)
1785 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1786 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1788 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1791 result &= (b != NULL);
1794 if (inet_pton(AF_INET6,
"2000::2", &in6) != 1)
1796 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1797 if (inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1)
1799 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1820 static int AddressTestIPv6CutNot05(
void)
1825 struct in6_addr in6;
1833 if (inet_pton(AF_INET6,
"2000::1", &in6) != 1)
1835 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1836 if (inet_pton(AF_INET6,
"2000::20", &in6) != 1)
1838 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1841 if (inet_pton(AF_INET6,
"::", &in6) != 1)
1843 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1844 if (inet_pton(AF_INET6,
"2000::0", &in6) != 1)
1846 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1849 result &= (b != NULL);
1852 if (inet_pton(AF_INET6,
"2000::21", &in6) != 1)
1854 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1855 if (inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1)
1857 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1911 UtRegisterTest(
"AddressTestIPv6SubOne01", AddressTestIPv6SubOne01);
1912 UtRegisterTest(
"AddressTestIPv6SubOne02", AddressTestIPv6SubOne02);
1914 UtRegisterTest(
"AddressTestIPv6AddOne01", AddressTestIPv6AddOne01);
1915 UtRegisterTest(
"AddressTestIPv6AddOne02", AddressTestIPv6AddOne02);
1917 UtRegisterTest(
"AddressTestIPv6AddressCmp01", AddressTestIPv6AddressCmp01);
1919 UtRegisterTest(
"AddressTestIPv6CutNot01", AddressTestIPv6CutNot01);
1920 UtRegisterTest(
"AddressTestIPv6CutNot02", AddressTestIPv6CutNot02);
1921 UtRegisterTest(
"AddressTestIPv6CutNot03", AddressTestIPv6CutNot03);
1922 UtRegisterTest(
"AddressTestIPv6CutNot04", AddressTestIPv6CutNot04);
1923 UtRegisterTest(
"AddressTestIPv6CutNot05", AddressTestIPv6CutNot05);