#include <stdio.h>
#include <arpa/inet.h>
int main()
{
int i;
int ret;
struct in6_addr addr6;
unsigned long ul1, ul2, ul3, ul0;
char str[INET6_ADDRSTRLEN] = {0};
ret = inet_pton(AF_INET6, "ff02::12", &addr6);
if (ret != 1) {
perror("inet_pton()");
return -1;
}
for (i = 0; i < 1000000; i++) {
ul3 = addr6.s6_addr32[3];
ul2 = addr6.s6_addr32[2];
ul1 = addr6.s6_addr32[1];
ul0 = addr6.s6_addr32[0];
ul3 = ntohl(ul3)+1;
if (ul3) {
goto u3;
}
ul2 = ntohl(ul2)+1;
if (ul2) {
goto u2;
}
ul1 = ntohl(ul1)+1;
if (ul1) {
goto u1;
}
ul0 = ntohl(ul0)+1;
addr6.s6_addr32[0] = htonl(ul0);
u1:
addr6.s6_addr32[1] = htonl(ul1);
u2:
addr6.s6_addr32[2] = htonl(ul2);
u3:
addr6.s6_addr32[3] = htonl(ul3);
if ((inet_ntop(AF_INET6, &addr6, str, INET6_ADDRSTRLEN)) != NULL) {
printf("%s\n", str);
} else {
fprintf(stderr, "inet_ntop() error\n");
return -1;
}
}
return 0;
}