55 for (i = 0; i < 4; i++) {
69 for (i = 0; i < 4; i++) {
93 for (i = 0; i < 4; i++) {
107 for (i = 0; i < 4; i++) {
131 for (i = 0; i < 4; i++) {
132 if (a->addr_data32[i] != b->addr_data32[i])
143 for (i = 0; i < 4; i++) {
258 SCLogDebug(
"Internal Error: should be unreachable\n");
273 static void AddressCutIPv6CopySubOne(uint32_t *a, uint32_t *b)
309 static void AddressCutIPv6CopyAddOne(uint32_t *a, uint32_t *b)
344 static void AddressCutIPv6Copy(uint32_t *a, uint32_t *b)
378 AddressCutIPv6Copy(a_ip1, a->
ip.addr_data32);
379 AddressCutIPv6CopySubOne(b_ip1, a->
ip2.addr_data32);
381 AddressCutIPv6Copy(b_ip1, b->
ip.addr_data32);
382 AddressCutIPv6Copy(a_ip2, b->
ip2.addr_data32);
390 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->
ip.addr_data32);
391 AddressCutIPv6Copy(b_ip2, tmp_c->
ip2.addr_data32);
401 AddressCutIPv6Copy(b_ip1, a->
ip.addr_data32);
402 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
404 AddressCutIPv6Copy(a_ip1, b->
ip.addr_data32);
405 AddressCutIPv6Copy(b_ip2, b->
ip2.addr_data32);
413 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->
ip.addr_data32);
414 AddressCutIPv6Copy(a_ip2, tmp_c->
ip2.addr_data32);
433 AddressCutIPv6Copy(a_ip1, a->
ip.addr_data32);
434 AddressCutIPv6Copy(a_ip2, a->
ip2.addr_data32);
436 AddressCutIPv6CopyAddOne(a_ip2, b->
ip.addr_data32);
437 AddressCutIPv6Copy(b_ip2, b->
ip2.addr_data32);
440 AddressCutIPv6Copy(b_ip1, a->
ip.addr_data32);
441 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
443 AddressCutIPv6Copy(a_ip1, b->
ip.addr_data32);
444 AddressCutIPv6Copy(a_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);
459 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->
ip.addr_data32);
460 AddressCutIPv6Copy(b_ip2, tmp_c->
ip2.addr_data32);
480 AddressCutIPv6Copy(b_ip1, a->
ip.addr_data32);
481 AddressCutIPv6Copy(b_ip2, a->
ip2.addr_data32);
483 AddressCutIPv6CopyAddOne(b_ip2, b->
ip.addr_data32);
484 AddressCutIPv6Copy(a_ip2, b->
ip2.addr_data32);
486 AddressCutIPv6Copy(a_ip1, a->
ip.addr_data32);
487 AddressCutIPv6CopySubOne(b_ip1, a->
ip2.addr_data32);
489 AddressCutIPv6Copy(b_ip1, b->
ip.addr_data32);
490 AddressCutIPv6Copy(b_ip2, b->
ip2.addr_data32);
492 AddressCutIPv6Copy(a_ip1, a->
ip.addr_data32);
493 AddressCutIPv6CopySubOne(b_ip1, a->
ip2.addr_data32);
495 AddressCutIPv6Copy(b_ip1, b->
ip.addr_data32);
496 AddressCutIPv6Copy(b_ip2, b->
ip2.addr_data32);
504 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->
ip.addr_data32);
505 AddressCutIPv6Copy(a_ip2, tmp_c->
ip2.addr_data32);
518 DetectAddressData **c)
543 AddressCutIPv6Copy(a_ip1, a->ip);
544 AddressCutIPv6CopySubOne(b_ip1, a->ip2);
546 AddressCutIPv6Copy(b_ip1, b->ip);
547 AddressCutIPv6Copy(a_ip2, b->ip2);
549 DetectAddressData *tmp_c;
550 tmp_c = DetectAddressDataInit();
553 tmp_c->family = AF_INET6;
555 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->ip);
556 AddressCutIPv6Copy(b_ip2, tmp_c->ip2);
566 AddressCutIPv6Copy(b_ip1, a->ip);
567 AddressCutIPv6CopySubOne(a_ip1, a->ip2);
569 AddressCutIPv6Copy(a_ip1, b->ip);
570 AddressCutIPv6Copy(b_ip2, b->ip2);
572 DetectAddressData *tmp_c;
573 tmp_c = DetectAddressDataInit();
576 tmp_c->family = AF_INET6;
578 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->ip);
579 AddressCutIPv6Copy(a_ip2, tmp_c->ip2);
599 AddressCutIPv6Copy(a_ip1, a->ip);
600 AddressCutIPv6Copy(a_ip2, a->ip2);
602 AddressCutIPv6CopyAddOne(a_ip2, b->ip);
603 AddressCutIPv6Copy(b_ip2, b->ip2);
605 AddressCutIPv6Copy(b_ip1, a->ip);
606 AddressCutIPv6CopySubOne(a_ip1, a->ip2);
608 AddressCutIPv6Copy(a_ip1, b->ip);
609 AddressCutIPv6Copy(a_ip2, b->ip2);
611 AddressCutIPv6Copy(b_ip1, a->ip);
612 AddressCutIPv6CopySubOne(a_ip1, a->ip2);
614 AddressCutIPv6Copy(a_ip1, b->ip);
615 AddressCutIPv6Copy(a_ip2, b->ip2);
617 DetectAddressData *tmp_c;
618 tmp_c = DetectAddressDataInit();
622 tmp_c->family = AF_INET6;
624 AddressCutIPv6CopyAddOne(a_ip2, tmp_c->ip);
625 AddressCutIPv6Copy(b_ip2, tmp_c->ip2);
644 AddressCutIPv6Copy(b_ip1, a->ip);
645 AddressCutIPv6Copy(b_ip2, a->ip2);
647 AddressCutIPv6CopyAddOne(b_ip2, b->ip);
648 AddressCutIPv6Copy(a_ip2, b->ip2);
650 AddressCutIPv6Copy(a_ip1, a->ip);
651 AddressCutIPv6CopySubOne(b_ip1, a->ip2);
653 AddressCutIPv6Copy(b_ip1, b->ip);
654 AddressCutIPv6Copy(b_ip2, b->ip2);
656 AddressCutIPv6Copy(a_ip1, a->ip);
657 AddressCutIPv6CopySubOne(b_ip1, a->ip2);
659 AddressCutIPv6Copy(b_ip1, b->ip);
660 AddressCutIPv6Copy(b_ip2, b->ip2);
662 DetectAddressData *tmp_c;
663 tmp_c = DetectAddressDataInit();
666 tmp_c->family = AF_INET6;
668 AddressCutIPv6CopyAddOne(b_ip2, tmp_c->ip);
669 AddressCutIPv6Copy(a_ip2, tmp_c->ip2);
709 uint32_t ip_nul[4] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000 };
710 uint32_t ip_max[4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };
715 if (!(a_ip1[0] == 0x00000000 && a_ip1[1] == 0x00000000 &&
716 a_ip1[2] == 0x00000000 && a_ip1[3] == 0x00000000) &&
717 !(a_ip2[0] == 0xFFFFFFFF && a_ip2[1] == 0xFFFFFFFF &&
718 a_ip2[2] == 0xFFFFFFFF && a_ip2[3] == 0xFFFFFFFF)) {
719 AddressCutIPv6Copy(ip_nul, a->
ip.addr_data32);
720 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
727 AddressCutIPv6CopyAddOne(a_ip2, tmp_b->
ip.addr_data32);
728 AddressCutIPv6Copy(ip_max, tmp_b->
ip2.addr_data32);
730 }
else if ((a_ip1[0] == 0x00000000 && a_ip1[1] == 0x00000000 &&
731 a_ip1[2] == 0x00000000 && a_ip1[3] == 0x00000000) &&
732 !(a_ip2[0] == 0xFFFFFFFF && a_ip2[1] == 0xFFFFFFFF &&
733 a_ip2[2] == 0xFFFFFFFF && a_ip2[3] == 0xFFFFFFFF)) {
734 AddressCutIPv6CopyAddOne(a_ip2, a->
ip.addr_data32);
735 AddressCutIPv6Copy(ip_max, a->
ip2.addr_data32);
736 }
else if (!(a_ip1[0] == 0x00000000 && a_ip1[1] == 0x00000000 &&
737 a_ip1[2] == 0x00000000 && a_ip1[3] == 0x00000000) &&
738 (a_ip2[0] == 0xFFFFFFFF && a_ip2[1] == 0xFFFFFFFF &&
739 a_ip2[2] == 0xFFFFFFFF && a_ip2[3] == 0xFFFFFFFF)) {
740 AddressCutIPv6Copy(ip_nul, a->
ip.addr_data32);
741 AddressCutIPv6CopySubOne(a_ip1, a->
ip2.addr_data32);
757 static int AddressTestIPv6Gt01(
void)
759 uint32_t a[4] = { 1, 2, 3, 4 };
760 uint32_t b[4] = { 0, 2, 3, 4 };
766 static int AddressTestIPv6Gt02(
void)
768 uint32_t a[4] = { 0, 2, 3, 4 };
769 uint32_t b[4] = { 1, 2, 3, 4 };
775 static int AddressTestIPv6Gt03(
void)
777 uint32_t a[4] = { 1, 2, 3, 4 };
778 uint32_t b[4] = { 1, 2, 3, 4 };
784 static int AddressTestIPv6Gt04(
void)
786 uint32_t a[4] = { 1, 2, 3, 5 };
787 uint32_t b[4] = { 1, 2, 3, 4 };
793 static int AddressTestIPv6Lt01(
void)
795 uint32_t a[4] = { 0, 2, 3, 4 };
796 uint32_t b[4] = { 1, 2, 3, 4 };
802 static int AddressTestIPv6Lt02(
void)
804 uint32_t a[4] = { 1, 2, 3, 4 };
805 uint32_t b[4] = { 0, 2, 3, 4 };
811 static int AddressTestIPv6Lt03(
void)
813 uint32_t a[4] = { 1, 2, 3, 4 };
814 uint32_t b[4] = { 1, 2, 3, 4 };
820 static int AddressTestIPv6Lt04(
void)
822 uint32_t a[4] = { 1, 2, 3, 4 };
823 uint32_t b[4] = { 1, 2, 3, 5 };
829 static int AddressTestIPv6Eq01(
void)
831 uint32_t a[4] = { 0, 2, 3, 4 };
832 uint32_t b[4] = { 1, 2, 3, 4 };
838 static int AddressTestIPv6Eq02(
void)
840 uint32_t a[4] = { 1, 2, 3, 4 };
841 uint32_t b[4] = { 0, 2, 3, 4 };
847 static int AddressTestIPv6Eq03(
void)
849 uint32_t a[4] = { 1, 2, 3, 4 };
850 uint32_t b[4] = { 1, 2, 3, 4 };
856 static int AddressTestIPv6Eq04(
void)
858 uint32_t a[4] = { 1, 2, 3, 4 };
859 uint32_t b[4] = { 1, 2, 3, 5 };
865 static int AddressTestIPv6Le01(
void)
867 uint32_t a[4] = { 0, 2, 3, 4 };
868 uint32_t b[4] = { 1, 2, 3, 4 };
874 static int AddressTestIPv6Le02(
void)
876 uint32_t a[4] = { 1, 2, 3, 4 };
877 uint32_t b[4] = { 0, 2, 3, 4 };
883 static int AddressTestIPv6Le03(
void)
885 uint32_t a[4] = { 1, 2, 3, 4 };
886 uint32_t b[4] = { 1, 2, 3, 4 };
892 static int AddressTestIPv6Le04(
void)
894 uint32_t a[4] = { 1, 2, 3, 4 };
895 uint32_t b[4] = { 1, 2, 3, 5 };
901 static int AddressTestIPv6Le05(
void)
907 FAIL_IF(inet_pton(AF_INET6,
"1999:ffff:ffff:ffff:ffff:ffff:ffff:ffff", &in6) != 1);
908 memcpy(&a, &in6.s6_addr,
sizeof(in6.s6_addr));
910 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
911 memcpy(&b, &in6.s6_addr,
sizeof(in6.s6_addr));
917 static int AddressTestIPv6Ge01(
void)
919 uint32_t a[4] = { 0, 2, 3, 4 };
920 uint32_t b[4] = { 1, 2, 3, 4 };
926 static int AddressTestIPv6Ge02(
void)
928 uint32_t a[4] = { 1, 2, 3, 4 };
929 uint32_t b[4] = { 0, 2, 3, 4 };
935 static int AddressTestIPv6Ge03(
void)
937 uint32_t a[4] = { 1, 2, 3, 4 };
938 uint32_t b[4] = { 1, 2, 3, 4 };
944 static int AddressTestIPv6Ge04(
void)
946 uint32_t a[4] = { 1, 2, 3, 4 };
947 uint32_t b[4] = { 1, 2, 3, 5 };
953 static int AddressTestIPv6Ge05(
void)
959 FAIL_IF(inet_pton(AF_INET6,
"1999:ffff:ffff:ffff:ffff:ffff:ffff:ffff", &in6) != 1);
960 memcpy(&a, &in6.s6_addr,
sizeof(in6.s6_addr));
962 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
963 memcpy(&b, &in6.s6_addr,
sizeof(in6.s6_addr));
969 static int AddressTestIPv6SubOne01(
void)
974 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
975 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
982 AddressCutIPv6CopySubOne(a, b);
984 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
985 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
993 static int AddressTestIPv6SubOne02(
void)
998 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
999 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1006 AddressCutIPv6CopySubOne(a, b);
1008 FAIL_IF(inet_pton(AF_INET6,
"1FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1009 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1017 static int AddressTestIPv6AddOne01(
void)
1019 uint32_t a[4], b[4];
1020 struct in6_addr in6;
1022 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1023 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1030 AddressCutIPv6CopyAddOne(a, b);
1032 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1033 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1041 static int AddressTestIPv6AddOne02(
void)
1043 uint32_t a[4], b[4];
1044 struct in6_addr in6;
1046 FAIL_IF(inet_pton(AF_INET6,
"1FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1047 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1054 AddressCutIPv6CopyAddOne(a, b);
1056 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1057 memcpy(a, in6.s6_addr,
sizeof(in6.s6_addr));
1065 static int AddressTestIPv6AddressCmp01(
void)
1069 struct in6_addr in6;
1074 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1075 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1076 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1077 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1078 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1079 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1080 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1081 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1084 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1085 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1086 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1087 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1088 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1089 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1090 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1091 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1094 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1095 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1096 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1097 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1098 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1099 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1100 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1101 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1104 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1105 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1106 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1107 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1108 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1109 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1110 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1111 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1114 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1115 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1116 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1117 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1118 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1119 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1120 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1121 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1124 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1125 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1126 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1127 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1128 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1129 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1130 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1131 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1134 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1135 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1136 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1137 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1138 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1139 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1140 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1141 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1144 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1145 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1146 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1147 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1148 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1149 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1150 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1151 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1154 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1155 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1156 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1157 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1158 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1159 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1160 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1161 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1164 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1165 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1166 FAIL_IF(inet_pton(AF_INET6,
"2000::11", &in6) != 1);
1167 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1168 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1169 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1170 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1171 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1174 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1175 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1176 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1177 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1178 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1179 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1180 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1181 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1184 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1185 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1186 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1187 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1188 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1189 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1190 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1191 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1194 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1195 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1196 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1197 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1198 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1199 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1200 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1201 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1204 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1205 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1206 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1207 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1208 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1209 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1210 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1211 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1214 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1215 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1216 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1217 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1218 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1219 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1220 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1221 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1224 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1225 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1226 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1227 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1228 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1229 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1230 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1231 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1234 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1235 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1236 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1237 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1238 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1239 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1240 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1241 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1245 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1246 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1247 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1248 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1249 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1250 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1251 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1252 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1256 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1257 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1258 FAIL_IF(inet_pton(AF_INET6,
"2000::19", &in6) != 1);
1259 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1260 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1261 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1262 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1263 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1266 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1267 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1268 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1269 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1270 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1271 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1272 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1273 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1276 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1277 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1278 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1279 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1280 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1281 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1282 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1283 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1286 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1287 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1288 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1289 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1290 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1291 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1292 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1293 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1296 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1297 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1298 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1299 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1300 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1301 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1302 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1303 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1306 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1307 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1308 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1309 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1310 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1311 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1312 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1313 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1316 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1317 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1318 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1319 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1320 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1321 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1322 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1323 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1326 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1327 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1328 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1329 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1330 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1331 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1332 FAIL_IF(inet_pton(AF_INET6,
"2000::19", &in6) != 1);
1333 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1336 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1337 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1338 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1339 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1340 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1341 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1342 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1343 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1346 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1347 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1348 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1349 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1350 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1351 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1352 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1353 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1356 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1357 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1358 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1359 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1360 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1361 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1362 FAIL_IF(inet_pton(AF_INET6,
"2000::15", &in6) != 1);
1363 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1366 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1367 memcpy(&a->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1368 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1369 memcpy(&a->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1370 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1371 memcpy(&b->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1372 FAIL_IF(inet_pton(AF_INET6,
"2000::10", &in6) != 1);
1373 memcpy(&b->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1381 static int AddressTestIPv6CutNot01(
void)
1383 struct in6_addr in6;
1387 FAIL_IF(inet_pton(AF_INET6,
"::", &in6) != 1);
1388 memcpy(&a->ip.address, in6.s6_addr,
sizeof(in6.s6_addr));
1389 FAIL_IF(inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1390 memcpy(&a->ip2.address, in6.s6_addr,
sizeof(in6.s6_addr));
1400 static int AddressTestIPv6CutNot02(
void)
1402 struct in6_addr in6;
1408 FAIL_IF(inet_pton(AF_INET6,
"::", &in6) != 1);
1409 memcpy(&a->ip.address, in6.s6_addr,
sizeof(in6.s6_addr));
1410 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1411 memcpy(&a->ip2.address, in6.s6_addr,
sizeof(in6.s6_addr));
1417 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1418 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1419 FAIL_IF(inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1420 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1429 static int AddressTestIPv6CutNot03(
void)
1431 struct in6_addr in6;
1437 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1438 memcpy(&a->ip.address, in6.s6_addr,
sizeof(in6.s6_addr));
1439 FAIL_IF(inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1440 memcpy(&a->ip2.address, in6.s6_addr,
sizeof(in6.s6_addr));
1446 FAIL_IF(inet_pton(AF_INET6,
"::", &in6) != 1);
1447 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1448 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1449 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1458 static int AddressTestIPv6CutNot04(
void)
1460 struct in6_addr in6;
1466 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1467 memcpy(&a->ip.address, in6.s6_addr,
sizeof(in6.s6_addr));
1468 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1469 memcpy(&a->ip2.address, in6.s6_addr,
sizeof(in6.s6_addr));
1474 FAIL_IF(inet_pton(AF_INET6,
"::", &in6) != 1);
1475 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1476 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1477 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1481 FAIL_IF(inet_pton(AF_INET6,
"2000::2", &in6) != 1);
1482 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1483 FAIL_IF(inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1484 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1493 static int AddressTestIPv6CutNot05(
void)
1495 struct in6_addr in6;
1501 FAIL_IF(inet_pton(AF_INET6,
"2000::1", &in6) != 1);
1502 memcpy(&a->ip.address, in6.s6_addr,
sizeof(in6.s6_addr));
1503 FAIL_IF(inet_pton(AF_INET6,
"2000::20", &in6) != 1);
1504 memcpy(&a->ip2.address, in6.s6_addr,
sizeof(in6.s6_addr));
1509 FAIL_IF(inet_pton(AF_INET6,
"::", &in6) != 1);
1510 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1511 FAIL_IF(inet_pton(AF_INET6,
"2000::0", &in6) != 1);
1512 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1516 FAIL_IF(inet_pton(AF_INET6,
"2000::21", &in6) != 1);
1517 memcpy(&temp->
ip.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1518 FAIL_IF(inet_pton(AF_INET6,
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", &in6) != 1);
1519 memcpy(&temp->
ip2.
address, in6.s6_addr,
sizeof(in6.s6_addr));
1561 UtRegisterTest(
"AddressTestIPv6SubOne01", AddressTestIPv6SubOne01);
1562 UtRegisterTest(
"AddressTestIPv6SubOne02", AddressTestIPv6SubOne02);
1564 UtRegisterTest(
"AddressTestIPv6AddOne01", AddressTestIPv6AddOne01);
1565 UtRegisterTest(
"AddressTestIPv6AddOne02", AddressTestIPv6AddOne02);
1567 UtRegisterTest(
"AddressTestIPv6AddressCmp01", AddressTestIPv6AddressCmp01);
1569 UtRegisterTest(
"AddressTestIPv6CutNot01", AddressTestIPv6CutNot01);
1570 UtRegisterTest(
"AddressTestIPv6CutNot02", AddressTestIPv6CutNot02);
1571 UtRegisterTest(
"AddressTestIPv6CutNot03", AddressTestIPv6CutNot03);
1572 UtRegisterTest(
"AddressTestIPv6CutNot04", AddressTestIPv6CutNot04);
1573 UtRegisterTest(
"AddressTestIPv6CutNot05", AddressTestIPv6CutNot05);