$ diff -r getaddrinfo.c getaddrinfo.new.c 34c34 < * get address info for ipv4 sockets. --- > * get address info for ipv4/v6 sockets. 50c50,52 < --- > char hap[16]; > struct sockaddr_in6 *psin6; > int isipv6 = 0; 79,80c81,89 < if (!inet_aton(node, &sin.sin_addr)) < return EAI_FAIL; --- > if (!inet_aton(node, &sin.sin_addr)){ > if(inet_pton(AF_INET6,node,hap)){ > isipv6 = 1; > psin6->sin6_family = AF_INET6; > memcpy(&psin6->sin6_addr,hap,16); > } > else > return EAI_FAIL; > } 124c133 < if (service) --- > if (service){ 126c135,137 < --- > if(isipv6) > psin6->sin6_port= sin.sin_port; > } 145c156 < ai->ai_family = AF_INET; --- > 147a159,160 > if(!isipv6){ > ai->ai_family = AF_INET; 150c163,169 < ai->ai_canonname = NULL; --- > } > else{ > ai->ai_family = AF_INET6; > ai->ai_addrlen = sizeof(*psin6); > ai->ai_addr = (struct sockaddr_in6 *) psin6; > } > ai->ai_canonname = NULL; 157d175 <