12a13 > #include 34c35 < int sockfd; --- > int sockfd6; 38c39 < struct sockaddr_in dest_sin; --- > struct sockaddr_in6 dest_sin6; 74,77c75,79 < /* Create an empty socket interface specification */ < (void) memset(&dest_sin, 0, sizeof(dest_sin)); < /* Set up for IP */ < dest_sin.sin_family = AF_INET; --- > /* Create an empty IPv6 socket interface specification */ > (void) memset(&dest_sin6, 0, sizeof(dest_sin6)); > /* Set up for IPv6 */ > dest_sin6.sin6_family = AF_INET6; > 83c85 < dest_sin.sin_port = srvp->s_port; --- > dest_sin6.sin6_port = srvp->s_port; 85,86c87,88 < /* Bind to any and all local addresses (INADDR_ANY) */ < dest_sin.sin_addr.s_addr = INADDR_ANY; --- > /* Bind to any and all local addresses (in6addr_any) */ > dest_sin6.sin6_addr = in6addr_any; 88,89c90,91 < /* Create the socket */ < if ((sockfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) --- > /* Create the sockets */ > if ((sockfd6 = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP)) == -1) 91c93 < snprintf(s, BUFLEN, "%s: failed to create socket for listen\0", argv[0]); --- > snprintf(s, BUFLEN, "%s: failed to create socket for v6 listener\0", argv[0]); 95c97 < snprintf(s, BUFLEN, "Socket created: %d\n", sockfd); --- > snprintf(s, BUFLEN, "V6 Socket created: %d\n", sockfd6); 99c101 < if (fcntl(sockfd, F_SETFL, O_NONBLOCK) < 0) --- > if (fcntl(sockfd6, F_SETFL, O_NONBLOCK) < 0) 101c103 < snprintf(s, BUFLEN, "%s: could not set nonblocking\0", argv[0]); --- > snprintf(s, BUFLEN, "%s: could not set v6 nonblocking\0", argv[0]); 105c107 < snprintf(s, BUFLEN, "Socket set to non-blocking: %d\n", sockfd); --- > snprintf(s, BUFLEN, "Socket set to v6 non-blocking: %d\n", sockfd6); 110c112 < if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (char *) &so_optval, --- > if (setsockopt(sockfd6, SOL_SOCKET, SO_REUSEADDR, (char *) &so_optval, 113c115 < snprintf(s, BUFLEN, "%s: setsockopt on %d failed\0", argv[0], sockfd); --- > snprintf(s, BUFLEN, "%s: setsockopt on %d failed\0", argv[0], sockfd6); 119c121,122 < if (bind(sockfd, (const void *)&dest_sin, sizeof(dest_sin)) == -1) --- > > if (bind(sockfd6, (const void*)&dest_sin6, sizeof(dest_sin6)) == -1) 121c124 < snprintf(s, BUFLEN, "%s: bind failed\0", argv[0]); --- > snprintf(s, BUFLEN, "%s: bind v6 failed\0", argv[0]); 127c130 < listen(sockfd, 10); --- > listen(sockfd6, 10); 130c133 < maxfd = (fileno(stdin) > sockfd ? fileno(stdin) : sockfd); --- > maxfd = (fileno(stdin) > sockfd6 ? fileno(stdin) : sockfd6); 138,139c141,142 < FD_SET(sockfd, &read_fds); < FD_SET(sockfd, &except_fds); --- > FD_SET(sockfd6, &read_fds); > FD_SET(sockfd6, &except_fds); 153c156 < if (FD_ISSET(sockfd, &except_fds)) --- > if (FD_ISSET(sockfd6, &except_fds)) 161c164 < if (FD_ISSET(sockfd, &read_fds)) --- > if (FD_ISSET(sockfd6, &read_fds)) 163c166 < socklen = sizeof(dest_sin); --- > socklen = sizeof(dest_sin6); 165c168 < rval = accept(sockfd, (struct sockaddr *) &dest_sin, &socklen); --- > rval = accept(sockfd6, (struct sockaddr *) &dest_sin6, &socklen); 168,169c171,174 < snprintf(s, BUFLEN, "Accept failed for %s %d\0", < inet_ntoa(dest_sin.sin_addr), dest_sin.sin_port); --- > (void) inet_ntop(dest_sin6.sin6_family, dest_sin6.sin6_addr.s6_addr, > buf, BUFLEN); > (void) snprintf(s, BUFLEN, "V6 Accept failed for %s %d\0", > buf, dest_sin6.sin6_port); 186,188c191,195 < snprintf(s, BUFLEN, "Accepted connection from %s %d as %d\n", < inet_ntoa(dest_sin.sin_addr), dest_sin.sin_port, rval); < debug(1,argv[0], s); --- > (void) inet_ntop(dest_sin6.sin6_family, dest_sin6.sin6_addr.s6_addr, > buf, BUFLEN); > snprintf(s, BUFLEN, "Accepted V6 connection from %s %d as %d\n", > buf, dest_sin6.sin6_port, rval); > debug(1, argv[0], s); 248c255 < if (sockfd > maxfd) maxfd = sockfd; --- > if (sockfd6 > maxfd) maxfd = sockfd6;