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)
310 static void AddressCutIPv6CopyAddOne(uint32_t *a, uint32_t *b)
345 static void AddressCutIPv6Copy(uint32_t *a, uint32_t *b)
379 AddressCutIPv6Copy(a_ip1, a->
ip.addr_data32);
380 AddressCutIPv6CopySubOne(b_ip1, a->
ip2.addr_data32);
382 AddressCutIPv6Copy(b_ip1, b->
ip.addr_data32);
383 AddressCutIPv6Copy(a_ip2, b->
ip2.addr_data32);
391 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->
ip.addr_data32);
392 AddressCutIPv6Copy(b_ip2, tmp_c->
ip2.addr_data32);
402 AddressCutIPv6Copy(b_ip1, a->
ip.addr_data32);
403 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
405 AddressCutIPv6Copy(a_ip1, b->
ip.addr_data32);
406 AddressCutIPv6Copy(b_ip2, b->
ip2.addr_data32);
414 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->
ip.addr_data32);
415 AddressCutIPv6Copy(a_ip2, tmp_c->
ip2.addr_data32);
434 AddressCutIPv6Copy(a_ip1, a->
ip.addr_data32);
435 AddressCutIPv6Copy(a_ip2, a->
ip2.addr_data32);
437 AddressCutIPv6CopyAddOne(a_ip2, b->
ip.addr_data32);
438 AddressCutIPv6Copy(b_ip2, b->
ip2.addr_data32);
441 AddressCutIPv6Copy(b_ip1, a->
ip.addr_data32);
442 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
444 AddressCutIPv6Copy(a_ip1, b->
ip.addr_data32);
445 AddressCutIPv6Copy(a_ip2, b->
ip2.addr_data32);
448 AddressCutIPv6Copy(b_ip1, a->
ip.addr_data32);
449 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
451 AddressCutIPv6Copy(a_ip1, b->
ip.addr_data32);
452 AddressCutIPv6Copy(a_ip2, b->
ip2.addr_data32);
460 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->
ip.addr_data32);
461 AddressCutIPv6Copy(b_ip2, tmp_c->
ip2.addr_data32);
481 AddressCutIPv6Copy(b_ip1, a->
ip.addr_data32);
482 AddressCutIPv6Copy(b_ip2, a->
ip2.addr_data32);
484 AddressCutIPv6CopyAddOne(b_ip2, b->
ip.addr_data32);
485 AddressCutIPv6Copy(a_ip2, b->
ip2.addr_data32);
487 AddressCutIPv6Copy(a_ip1, a->
ip.addr_data32);
488 AddressCutIPv6CopySubOne(b_ip1, a->
ip2.addr_data32);
490 AddressCutIPv6Copy(b_ip1, b->
ip.addr_data32);
491 AddressCutIPv6Copy(b_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);
505 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->
ip.addr_data32);
506 AddressCutIPv6Copy(a_ip2, tmp_c->
ip2.addr_data32);
519 DetectAddressData **c)
544 AddressCutIPv6Copy(a_ip1, a->ip);
545 AddressCutIPv6CopySubOne(b_ip1, a->ip2);
547 AddressCutIPv6Copy(b_ip1, b->ip);
548 AddressCutIPv6Copy(a_ip2, b->ip2);
550 DetectAddressData *tmp_c;
551 tmp_c = DetectAddressDataInit();
554 tmp_c->family = AF_INET6;
556 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->ip);
557 AddressCutIPv6Copy(b_ip2, tmp_c->ip2);
567 AddressCutIPv6Copy(b_ip1, a->ip);
568 AddressCutIPv6CopySubOne(a_ip1, a->ip2);
570 AddressCutIPv6Copy(a_ip1, b->ip);
571 AddressCutIPv6Copy(b_ip2, b->ip2);
573 DetectAddressData *tmp_c;
574 tmp_c = DetectAddressDataInit();
577 tmp_c->family = AF_INET6;
579 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->ip);
580 AddressCutIPv6Copy(a_ip2, tmp_c->ip2);
600 AddressCutIPv6Copy(a_ip1, a->ip);
601 AddressCutIPv6Copy(a_ip2, a->ip2);
603 AddressCutIPv6CopyAddOne(a_ip2, b->ip);
604 AddressCutIPv6Copy(b_ip2, b->ip2);
606 AddressCutIPv6Copy(b_ip1, a->ip);
607 AddressCutIPv6CopySubOne(a_ip1, a->ip2);
609 AddressCutIPv6Copy(a_ip1, b->ip);
610 AddressCutIPv6Copy(a_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 DetectAddressData *tmp_c;
619 tmp_c = DetectAddressDataInit();
623 tmp_c->family = AF_INET6;
625 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->ip);
626 AddressCutIPv6Copy(b_ip2, tmp_c->ip2);
645 AddressCutIPv6Copy(b_ip1, a->ip);
646 AddressCutIPv6Copy(b_ip2, a->ip2);
648 AddressCutIPv6CopyAddOne(b_ip2, b->ip);
649 AddressCutIPv6Copy(a_ip2, b->ip2);
651 AddressCutIPv6Copy(a_ip1, a->ip);
652 AddressCutIPv6CopySubOne(b_ip1, a->ip2);
654 AddressCutIPv6Copy(b_ip1, b->ip);
655 AddressCutIPv6Copy(b_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 DetectAddressData *tmp_c;
664 tmp_c = DetectAddressDataInit();
667 tmp_c->family = AF_INET6;
669 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->ip);
670 AddressCutIPv6Copy(a_ip2, tmp_c->ip2);
710 uint32_t ip_nul[4] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000 };
711 uint32_t ip_max[4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };
716 if (!(a_ip1[0] == 0x00000000 && a_ip1[1] == 0x00000000 &&
717 a_ip1[2] == 0x00000000 && a_ip1[3] == 0x00000000) &&
718 !(a_ip2[0] == 0xFFFFFFFF && a_ip2[1] == 0xFFFFFFFF &&
719 a_ip2[2] == 0xFFFFFFFF && a_ip2[3] == 0xFFFFFFFF)) {
720 AddressCutIPv6Copy(ip_nul, a->
ip.addr_data32);
721 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
728 AddressCutIPv6CopyAddOne(a_ip2, tmp_b->
ip.addr_data32);
729 AddressCutIPv6Copy(ip_max, tmp_b->
ip2.addr_data32);
731 }
else if ((a_ip1[0] == 0x00000000 && a_ip1[1] == 0x00000000 &&
732 a_ip1[2] == 0x00000000 && a_ip1[3] == 0x00000000) &&
733 !(a_ip2[0] == 0xFFFFFFFF && a_ip2[1] == 0xFFFFFFFF &&
734 a_ip2[2] == 0xFFFFFFFF && a_ip2[3] == 0xFFFFFFFF)) {
735 AddressCutIPv6CopyAddOne(a_ip2, a->
ip.addr_data32);
736 AddressCutIPv6Copy(ip_max, a->
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 AddressCutIPv6Copy(ip_nul, a->
ip.addr_data32);
742 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
758 static int AddressTestIPv6Gt01(
void)
760 uint32_t a[4] = { 1, 2, 3, 4 };
761 uint32_t b[4] = { 0, 2, 3, 4 };
767 static int AddressTestIPv6Gt02(
void)
769 uint32_t a[4] = { 0, 2, 3, 4 };
770 uint32_t b[4] = { 1, 2, 3, 4 };
776 static int AddressTestIPv6Gt03(
void)
778 uint32_t a[4] = { 1, 2, 3, 4 };
779 uint32_t b[4] = { 1, 2, 3, 4 };
785 static int AddressTestIPv6Gt04(
void)
787 uint32_t a[4] = { 1, 2, 3, 5 };
788 uint32_t b[4] = { 1, 2, 3, 4 };
794 static int AddressTestIPv6Lt01(
void)
796 uint32_t a[4] = { 0, 2, 3, 4 };
797 uint32_t b[4] = { 1, 2, 3, 4 };
803 static int AddressTestIPv6Lt02(
void)
805 uint32_t a[4] = { 1, 2, 3, 4 };
806 uint32_t b[4] = { 0, 2, 3, 4 };
812 static int AddressTestIPv6Lt03(
void)
814 uint32_t a[4] = { 1, 2, 3, 4 };
815 uint32_t b[4] = { 1, 2, 3, 4 };
821 static int AddressTestIPv6Lt04(
void)
823 uint32_t a[4] = { 1, 2, 3, 4 };
824 uint32_t b[4] = { 1, 2, 3, 5 };
830 static int AddressTestIPv6Eq01(
void)
832 uint32_t a[4] = { 0, 2, 3, 4 };
833 uint32_t b[4] = { 1, 2, 3, 4 };
839 static int AddressTestIPv6Eq02(
void)
841 uint32_t a[4] = { 1, 2, 3, 4 };
842 uint32_t b[4] = { 0, 2, 3, 4 };
848 static int AddressTestIPv6Eq03(
void)
850 uint32_t a[4] = { 1, 2, 3, 4 };
851 uint32_t b[4] = { 1, 2, 3, 4 };
857 static int AddressTestIPv6Eq04(
void)
859 uint32_t a[4] = { 1, 2, 3, 4 };
860 uint32_t b[4] = { 1, 2, 3, 5 };
866 static int AddressTestIPv6Le01(
void)
868 uint32_t a[4] = { 0, 2, 3, 4 };
869 uint32_t b[4] = { 1, 2, 3, 4 };
875 static int AddressTestIPv6Le02(
void)
877 uint32_t a[4] = { 1, 2, 3, 4 };
878 uint32_t b[4] = { 0, 2, 3, 4 };
884 static int AddressTestIPv6Le03(
void)
886 uint32_t a[4] = { 1, 2, 3, 4 };
887 uint32_t b[4] = { 1, 2, 3, 4 };
893 static int AddressTestIPv6Le04(
void)
895 uint32_t a[4] = { 1, 2, 3, 4 };
896 uint32_t b[4] = { 1, 2, 3, 5 };
902 static int AddressTestIPv6Le05(
void)
908 FAIL_IF(inet_pton(AF_INET6,
"1999:ffff:ffff:ffff:ffff:ffff:ffff:ffff", &in6) != 1);
909 memcpy(&a, &in6.s6_addr,
sizeof(in6.s6_addr));
911 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
912 memcpy(&b, &in6.s6_addr,
sizeof(in6.s6_addr));
918 static int AddressTestIPv6Ge01(
void)
920 uint32_t a[4] = { 0, 2, 3, 4 };
921 uint32_t b[4] = { 1, 2, 3, 4 };
927 static int AddressTestIPv6Ge02(
void)
929 uint32_t a[4] = { 1, 2, 3, 4 };
930 uint32_t b[4] = { 0, 2, 3, 4 };
936 static int AddressTestIPv6Ge03(
void)
938 uint32_t a[4] = { 1, 2, 3, 4 };
939 uint32_t b[4] = { 1, 2, 3, 4 };
945 static int AddressTestIPv6Ge04(
void)
947 uint32_t a[4] = { 1, 2, 3, 4 };
948 uint32_t b[4] = { 1, 2, 3, 5 };
954 static int AddressTestIPv6Ge05(
void)
960 FAIL_IF(inet_pton(AF_INET6,
"1999:ffff:ffff:ffff:ffff:ffff:ffff:ffff", &in6) != 1);
961 memcpy(&a, &in6.s6_addr,
sizeof(in6.s6_addr));
963 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
964 memcpy(&b, &in6.s6_addr,
sizeof(in6.s6_addr));
970 static int AddressTestIPv6SubOne01(
void)
975 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
976 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
983 AddressCutIPv6CopySubOne(a, b);
985 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
986 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
994 static int AddressTestIPv6SubOne02(
void)
999 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1000 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1007 AddressCutIPv6CopySubOne(a, b);
1009 FAIL_IF(inet_pton(AF_INET6,
"1FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1010 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1018 static int AddressTestIPv6AddOne01(
void)
1020 uint32_t a[4], b[4];
1021 struct in6_addr in6;
1023 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1024 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1031 AddressCutIPv6CopyAddOne(a, b);
1033 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1034 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1042 static int AddressTestIPv6AddOne02(
void)
1044 uint32_t a[4], b[4];
1045 struct in6_addr in6;
1047 FAIL_IF(inet_pton(AF_INET6,
"1FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1048 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1055 AddressCutIPv6CopyAddOne(a, b);
1057 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1058 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1066 static int AddressTestIPv6AddressCmp01(
void)
1070 struct in6_addr in6;
1075 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1076 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1077 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1078 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1079 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1080 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1081 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1082 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1085 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1086 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1087 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1088 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1089 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1090 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1091 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1092 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1095 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1096 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1097 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1098 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1099 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1100 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1101 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1102 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1105 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1106 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1107 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1108 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1109 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1110 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1111 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1112 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1115 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1116 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1117 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1118 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1119 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1120 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1121 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1122 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1125 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1126 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1127 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1128 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1129 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1130 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1131 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1132 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1135 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1136 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1137 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1138 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1139 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1140 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1141 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1142 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1145 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1146 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1147 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1148 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1149 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1150 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1151 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1152 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1155 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1156 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1157 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1158 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1159 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1160 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1161 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1162 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1165 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1166 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1167 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1168 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1169 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1170 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1171 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1172 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1175 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1176 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1177 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1178 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1179 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1180 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1181 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1182 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1185 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1186 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1187 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1188 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1189 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1190 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1191 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1192 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1195 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1196 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1197 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1198 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1199 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1200 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1201 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1202 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1205 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1206 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1207 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1208 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1209 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1210 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1211 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1212 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1215 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1216 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1217 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1218 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1219 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1220 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1221 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1222 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1225 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1226 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1227 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1228 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1229 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1230 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1231 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1232 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1235 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1236 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1237 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1238 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1239 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1240 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1241 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1242 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1246 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1247 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1248 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1249 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1250 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1251 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1252 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1253 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1257 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1258 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1259 FAIL_IF(inet_pton(AF_INET6,
"2000::19", &in6) != 1);
1260 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1261 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1262 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1263 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1264 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1267 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1268 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1269 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1270 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1271 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1272 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1273 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1274 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1277 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1278 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1279 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1280 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1281 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1282 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1283 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1284 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1287 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1288 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1289 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1290 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1291 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1292 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1293 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1294 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1297 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1298 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1299 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1300 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1301 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1302 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1303 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1304 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1307 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1308 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1309 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1310 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1311 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1312 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1313 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1314 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1317 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1318 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1319 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1320 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1321 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1322 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1323 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1324 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1327 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1328 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1329 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1330 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1331 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1332 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1333 FAIL_IF(inet_pton(AF_INET6,
"2000::19", &in6) != 1);
1334 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1337 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1338 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1339 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1340 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1341 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1342 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1343 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1344 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1347 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1348 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1349 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1350 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1351 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1352 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1353 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1354 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1357 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1358 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1359 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1360 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1361 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1362 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1363 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1364 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1367 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1368 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1369 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1370 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1371 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1372 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1373 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1374 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1382 static int AddressTestIPv6CutNot01(
void)
1384 struct in6_addr in6;
1388 FAIL_IF(inet_pton(AF_INET6,
"::", &in6) != 1);
1389 memcpy(&a->ip.address, in6.s6_addr,
sizeof(in6.s6_addr));
1390 FAIL_IF(inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1391 memcpy(&a->ip2.address, in6.s6_addr,
sizeof(in6.s6_addr));
1401 static int AddressTestIPv6CutNot02(
void)
1403 struct in6_addr in6;
1409 FAIL_IF(inet_pton(AF_INET6,
"::", &in6) != 1);
1410 memcpy(&a->ip.address, in6.s6_addr,
sizeof(in6.s6_addr));
1411 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1412 memcpy(&a->ip2.address, in6.s6_addr,
sizeof(in6.s6_addr));
1418 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1419 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1420 FAIL_IF(inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1421 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1430 static int AddressTestIPv6CutNot03(
void)
1432 struct in6_addr in6;
1438 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1439 memcpy(&a->ip.address, in6.s6_addr,
sizeof(in6.s6_addr));
1440 FAIL_IF(inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1441 memcpy(&a->ip2.address, in6.s6_addr,
sizeof(in6.s6_addr));
1447 FAIL_IF(inet_pton(AF_INET6,
"::", &in6) != 1);
1448 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1449 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1450 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1459 static int AddressTestIPv6CutNot04(
void)
1461 struct in6_addr in6;
1467 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1468 memcpy(&a->ip.address, in6.s6_addr,
sizeof(in6.s6_addr));
1469 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1470 memcpy(&a->ip2.address, in6.s6_addr,
sizeof(in6.s6_addr));
1475 FAIL_IF(inet_pton(AF_INET6,
"::", &in6) != 1);
1476 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1477 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1478 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1482 FAIL_IF(inet_pton(AF_INET6,
"2000::2", &in6) != 1);
1483 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1484 FAIL_IF(inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1485 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1494 static int AddressTestIPv6CutNot05(
void)
1496 struct in6_addr in6;
1502 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1503 memcpy(&a->ip.address, in6.s6_addr,
sizeof(in6.s6_addr));
1504 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1505 memcpy(&a->ip2.address, in6.s6_addr,
sizeof(in6.s6_addr));
1510 FAIL_IF(inet_pton(AF_INET6,
"::", &in6) != 1);
1511 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1512 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1513 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1517 FAIL_IF(inet_pton(AF_INET6,
"2000::21", &in6) != 1);
1518 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1519 FAIL_IF(inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1520 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1562 UtRegisterTest(
"AddressTestIPv6SubOne01", AddressTestIPv6SubOne01);
1563 UtRegisterTest(
"AddressTestIPv6SubOne02", AddressTestIPv6SubOne02);
1565 UtRegisterTest(
"AddressTestIPv6AddOne01", AddressTestIPv6AddOne01);
1566 UtRegisterTest(
"AddressTestIPv6AddOne02", AddressTestIPv6AddOne02);
1568 UtRegisterTest(
"AddressTestIPv6AddressCmp01", AddressTestIPv6AddressCmp01);
1570 UtRegisterTest(
"AddressTestIPv6CutNot01", AddressTestIPv6CutNot01);
1571 UtRegisterTest(
"AddressTestIPv6CutNot02", AddressTestIPv6CutNot02);
1572 UtRegisterTest(
"AddressTestIPv6CutNot03", AddressTestIPv6CutNot03);
1573 UtRegisterTest(
"AddressTestIPv6CutNot04", AddressTestIPv6CutNot04);
1574 UtRegisterTest(
"AddressTestIPv6CutNot05", AddressTestIPv6CutNot05);